机房收费系统总结之错误总结

来源:互联网 发布:游戏产业链 知乎 编辑:程序博客网 时间:2024/06/05 03:10

机房收费系统中,自己在敲的时候出了好多问题,有的是自己想通的,有些是查资料解决的,有些是找同学帮忙解决的,非常感谢那些帮助过我的同学们,下面就对典型的问题进行总结。

1、如图所示:

 

这个问题算是比较早的问题了,打开数据库的时候打不开,出了这个问题一般情况下是服务没有打开,具体的操作步骤是:计算机(右击)----管理------服务和应用程序-----SQL SERVER配置管理器   把其中的服务都打开,再连接数据就能连的上了。

2、在充值窗体中,用来显示的文本框中实现自动换行:首先把Text1的MultiLine属性设置为TRUE,然后相应的程序中添加类似Text1.Text= "aa" & vbCrLf & "bb"就实现了。其次对于text文本框,没有.clear属 性   应该写成text1.text=""才能清空文本框中的内容。

3、在机房值班老师一览表的查询中, txtSQL = "selectdistinct * from worklog_Info order by serial"这条语句帮了我大忙,之前没有order by serial 结果查询的顺序很乱,之前没有distinct,结果是这样的额:

当我把distinct加上之后:

之前重复的记录就都不存在了,而且还是按顺序进行排列。

4、在敲“添加和删除用户”的时候,把ExecuteSQL(TXTSQL,MSGTEXT)中的内容写反了写成了ExecuteSQL(MSGTEXT,TXTSQL),结果在执行到关于mrc的代码就会报错,找了半天,原来是这个顺序不能变。

5、关于“引用无效NULL值”,在向myflexgrid控件中添加信息的时候,如果调用数据表中的字段有NULL值,则会报错“引用无效NULL值”,这个问题的解决办法如下:

    If  IsNull(Trim(mrc.Fields(6))   Then              '通过IsNull函数来判断是否记录表为空                       myflexgird.TextMatrix(.Rows - 1, 3) = ""    Else       myflexgrid.TextMatrix(.Rows - 1, 3) = mrc.Fields(6)    End If

加上这样的判断后,即使数据表中的值为NULL,也不会报错了。

6、关于上下机中重复登录的问题,之前在代码中有涉及到判断是否重复登录,可是并为起到作用,如下,这是我未修改之前的代码:

      txtSQL = "select * from OnLine_Info"    '把相关卡号的信息输入到OnLine表中      Set mrc1 = ExecuteSQL(txtSQL, MsgText)      If Not mrc1.EOF Then   '(限制重复登录失败,因为mrc只为其中一条记录,而且不一定是field(0)=txt的记录)                  If mrc1.Fields(0) = Trim(txtCardNo.Text) Then       '输入的卡号正在上机            MsgBox "您输入的卡号正在上机,请重新输入卡号!", vbOKOnly + vbExclamation, "警告"            txtCardNo.SetFocus            Exit Sub        End If      End If
可是这样便出了一个问题,mrc中会筛选出许多条记录,如何就能知道选出的记录正好就是正在上机的呢??好多次我再次单击上机按钮的时候,还可以继续上机,问题就出在了这里,于是乎,我把代码稍微做了调整如下:

    txtSQL = "select * from OnLine_Info where cardno= '" & txtCardNo.Text & "'"    Set mrc2 = ExecuteSQL(txtSQL, MsgText)  '此记录集可以用来限制重复登录    If Not mrc2.EOF Then        MsgBox "您输入的卡号正在上机,请重新输入卡号!", vbOKOnly + vbExclamation, "警告"        txtCardNo.SetFocus        Exit Sub    End If   
这样的话就唯一确定了记录集中的内容为文本框中的记录。总而言之,数据库可以同时处理多个记录,而VB程序只能每次执行一条记录,这一点搞清楚了,问题就解决了。

 7剩下的这个问题就是字符或数据类型不匹配,由于这次的数据库不是自己创建的,所以在使用的过程中因为字符类型设计不合理出了一些问题,比如说怀疑自己的程序在这一点上出了问题,可以通过

    Debug.Print mrc.Fields(0)               '   字符类型的错误  验证    Debug.Print Trim(txtCardNo.Text)        '字符类型的错误  验证
这样的方式来验证是否是因为字符类型不匹配而导致的问题。

  这几个问题是这次做系统中比较典型的问题,当然对于上下机、结账、组合查询这三座大山并不是没有问题,关于他们的理解会在接下来的博客中提及。通过总结问题,回头看看其实这个系统也就那么回事,自己一个人没有源码的情况下完成它确实不容易,接下来的学习中要更加努力了。



1 0
原创粉丝点击