【总结】机房收费系统

  在敲机房了解代码的过程中,遇到了很多之前见过,但是都没有深入了解的知识点,趁着这个机会学习到了就要及时总结好 ~~

—知识点集锦

· SQL Server 数据库的连接方式:

  如果是ADO(ActiveX Data Objects)方式,是一个用于存取数据源的COM组件,它提供了编程语言和统一数据访问方式OLE DB的一个中间层。
  命名空间中引入的是:Imports System.Data.SqlClient
  连接数据库使用的相应对象为:SqlCommand,SqlConnection,SqlDataAdapter,SqlDataReader
  如果是ODBC(Open Database Connectivity)方式,是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。
  命名空间中引入的是:Imports System.Data.Odbc
  连接数据库使用的相应对象为:OdbcCommand,OdbcConnection,OdbcAdapter,OdbcDataReader
  如果是OLEDB(Object Linking and Embedding,Database)方式,一个基于COM的数据存储对象,能提供对所有类型的数据的操作,甚至能在离线的情况下存取数据(比方说,你使用的是你的便携机,你可以毫不费力地看到最后一次数据同步时的数据映像)。
   命名空间中引入的是:Imports System.Data.Oledb
  连接数据库使用的相应对象为:OledbCommand,OledbConnection,OledbAdapter,OledbDataReader
  如果是 JDBC方式,(Java Data Base Connectivity)是Java Soft公司开发的,一组Java语言编写的用于数据库连接和操作的类和接口,可为多种关系数据库提供统一的访问方式。
  命名空间中引入的是: oracle.jdbc.driver.OracleDriver com.microsoft.jdbc.sqlserver.SQLServerDriver
  连接数据库使用的相应对象为: DriverManager.getConnection

· Public Function :

  Public Function 是声名 全局函数

  Function 声名函数 默认是私有
  Private私有变量

· 函数原型:

  ExecuteSQL(sqlQuery; fieldSeparator; rowSeparator {;arguments…})
  参数:
  sqlQuery:查询数据的SQL语句。SQL语句中可以使用Union和Where进行联合查询和条件查询。使用?来进行指定条件查询的参数。
   fieldSeparator:字段分隔符。如果返回的结果包含多个字段,则使用这个参数指定一个字段分隔符。
   rowSeparator:行分隔符。如果返回结果包含多个行,则使用这个参数指定一个行分隔符。
   arguments:查询参数。主要是在使用Where子句时指定动态参数使用。

  返回值类型:字符串

  解释:ExecuteSQL函数不能使用诸如Create,Update,Delete等SQL语句对FileMaker表结构进行修改。只能进行数据查询。

  如果返回是日期和时间,返回值的格式遵循SQL标准而不是FileMaker中定义的格式。

  如果查询过程有误FileMaker返回作为结果。

  ExecuteSQL不认识FileMaker中定义的表关系,所以用户可以自行定义表关系进行相应的查找,ExecuteSQL中定义的表关系与FileMaker中定义的互不影响。

· RecordCount 属性:

  1.指示 Recordset 对象中记录的当前数目。

  2.返回值

  3.返回长整型值。

  说明

  a: 使用 RecordCount 属性可确定 Recordset 对象中记录的数目。ADO 无法确定记录数时,或者如果提供者或游标类型不支持 RecordCount,则该属性返回 –1。读已关闭的 Recordset 上的 RecordCount 属性将产生错误。

  b:如果 Recordset 对象支持近似定位或书签(即 Supports (adApproxPosition) 或 Supports (adBookmark) 各自返回 True),不管是否完全填充该值,该值将为 Recordset 中记录的精确数目。如果 Recordset 对象不支持近似定位,该属性可能由于必须对所有记录进行检索和计数以返回精确 RecordCount 值而严重消耗资源。

  c:Recordset 对象的游标类型会影响是否能够确定记录的数目。对仅向前游标,RecordCount 属性将返回 -1,对静态或键集游标返回实际计数,对动态游标取决于数据源返回 -1 或实际计数。

· CreateObject:

  每个支持自动化的应用程序都至少提供一种对象类型。例如,一个字处理应用程序可能会提供 Application 对象,Document 对象,以及 Toolbar 对象。

  1 .要创建ActiveX 对象,只需将 CreateObject 返回的对象赋给一个对象变量:
  声明一个对象变量来存放该对象的引用。
  Dim as Object 采用后期绑定方式。
  Dim ExcelSheet As Object
  Set ExcelSheet = CreateObject(“Excel.Sheet”)
  上述代码将启动该应用程序创建该对象,在本例中就是创建一个 Microsoft Excel 电子数据表。对象创建后,就可以在代码中使用自定义的对象变量来引用该对象。在下面的示例中,可以使用对象变量 ExcelSheet 来访问新建对象的属性和方法,以及访问 Microsoft Excel 的其它对象,包括应用程序对象和单元格集合。

  2 .设置 Application 对象使 Excel 可见
  ExcelSheet.Application.Visible = True
  在表格的第一个单元中写些文本
  ExcelSheet.Cells(1, 1).Value = “This is column A, row 1”
  将该表格保存到 C:\test.doc 目录
  ExcelSheet.SaveAs “C:\ TEST.DOC”
  使用应用程序对象的 Quit 方法关闭 Excel。
  ExcelSheet.Application.Quit
  释放该对象变量
  Set ExcelSheet = Nothing

  3 .使用 As Object 子句声明对象变量,可以创建一个能包含任何类型对象引用的变量。不过,该变量访问对象是后期绑定的,也就是说,绑定在程序运行时才进行。要创建一个使用前期绑定方式的对象变量,也就是说,在程序编译时就完成绑定,则对象变量在声明时应指定类 ID。例如,可以声明并创建下列 Microsoft Excel 引用:
  Dim xlApp As Excel.Application
  Dim xlBook As Excel.Workbook
  Dim xlSheet As Excel.WorkSheet
  Set xlApp = CreateObject(“Excel.Application”)
  Set xlBook = xlApp.Workbooks.Add
  Set xlSheet = xlBook.Worksheets(1)
  前期绑定的变量引用可以提供更好的性能,但该变量只能存放声明中所指定的类的引用。

—错误集锦

· “91”问题

  想必大家都遇到过这样的问题,大概是跟习惯有关系吧,我是习惯把所有的代码都走一遍再去发现问题,解决问题,所以调错的时候就有太多“91”困扰我了。

  1.恐怕就是代码书写错误了,这个我想等我认真了就可以改正了。

  2.在Combo1的控件中list属性有空格键就会导致把数据传到数据库时有空白,传出的时候就会连接不上数据库,因为这个和NUll值还不一样哦,就是用了Trim,也无济于事,只能重新输入list里面的值。

![这里写图片描述](https://img-blog.csdn.net/20161014182654984)   3.因为在机房中会涉及到各各表之间的联系,往外调表的过程中,放值得容器很容易就弄混了,在机房中我们用的MRC,因为要来回切换,放在容器中值会乱,输入的肯定也就会不对啦,要做的就是在有太多表的导入导出的时候多定义一些不一样的容器,比如mrcc,mrc等等,但是要符合行为规范哦~~代码不是给你自己看的,是要给更多的人看的!
![这里写图片描述](https://img-blog.csdn.net/20161014185535730)

· 数据库有无效的NULL值

  出现问题的原因也就是你赋值的过程没有赋值上,也就没有更新到表中,就会导致没有值,数据库又不能存在空值,就自定义为NULL值了。

  1.找到相应的代码,重新赋值再更新,下图就是赋值的过程

这里写图片描述

  2.在数据库直接把值添上(只针对我现在做的系统,也不是最好的方法,最好不要这样做)哈哈~表中出现下图一样的“笔”的标志的时候就可以更改啦!

这里写图片描述

  也可以在新建查询中用SQL语句增删改写一整列或者一整行~

这里写图片描述

· 部件无效要求挂起

![这里写图片描述](https://img-blog.csdn.net/20161014191637864)   出现这个问题的原因是你的循环语句中要插入一句DoEvents,使查询期间能让其他软件临时获得CPU的控制权,避免程序进入“假死”(或者说挂起)状态。另一方面,你的查询代码也要进行优化,以免占用太多的CPU控制时间。Windows系统是个多任务系统,你要时刻记住,在同一个时刻,并不是只有你的程序在运行,还有许多其他软件也在排队等着分CPU的一杯羹,所以软件也要有“公德心”,不能只顾自己,强行霸占系统资源。就像很多人排队买火车票,如果轮到你的时候你长时间霸着售票窗口不走,那么整个队伍就陷入停滞状态了。   当然,这个问题困扰我好久,到现在也没有解决,但是啊,不知道从什么时候开始这个问题自己没了,具体方案还请大侠们留步啦~

—小技巧集锦

  米老师说过,当你觉得一件事麻烦的时候,那么他一定有简单的方法解决他,要勇于探索。

  1.字体大小

  一个窗体有好多个不一样的控件,要把所有的控件都改成一样的字体实在是太麻烦了,dang!!dang!!
只要在你刚建一个窗体的时候吧整个窗体的字体改成一样的,那么你所有控件的字体就都一样啦~

这里写图片描述

就像这样的

这里写图片描述~

  2.清空代码

  机房中有很多关于清空的要求,每次写又太麻烦,所以就可以在模块中整体写一个,这样就减少了很多代码量~

Private Sub cmdempty_Click()
    Dim ctl As Control
    For Each ctl In Controls
    If TypeOf ctl Is TextBox Then ctl.Text = ""
    If TypeOf ctl Is ComboBox Then ctl.Text = ""

    Next ctl
End Sub

  3.设置子窗体

  在不是MDI 窗体的所有窗体都变成子窗体,只要改一个属性MDIchild就好啦~

这里写图片描述

  4.combo窗体只能选择不能输入

  比如性别的选项中只能是”男女“,数据库自定义设的值也就只有两个字符,当你可以输入多值的时候数据库就会报错,要避免这种情况,也只要改一个属性Style就好啦~

![这里写图片描述](https://img-blog.csdn.net/20161014194623564)

总结

  机房可以说算是告一段落了,但是前进的脚步还是不能停滞不前的!!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 28
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值