On Error GOTO的好处

学生信息管理系统敲完了,但是最多的问题就是EOF和BOF的错误,总是出像如下错误


要想知道出错的原因和解决办法首先要了解BOFEOF

BOF指示当前记录位置位于 Recordset对象的第一个记录之前。

EOF对象的最后一个记录之后。

要十分注意:第一个记录之前和最后一个纪录之后,说的不是第一个记录,也不是第二个记录。

例如:当前已经显示最后一条记录了,指针定位于记录集的最后一条记录,如果再执行一次(仅一次否则就出错)Recordset.movenext,此时,Recordset.BOF=TrueBOF的原理也一样。

另外查询记录为空,即没有查到任何记录时Recordset.EOF=True且Recordset.BOF=True

似乎明白了为什么出错,但是怎么解决呢,今天上午听了米老师讲课,恍然大悟,自己尝试着解决了,那就是用到了Err对象,所以有了一个解决办法:

在定义变量的前面编写On Error GOTO

例如在修改班级信息窗体为例子:

Private Sub Form_Load() On Error GoTo PROC_ERR Dim txtsql As String Dim Msgtext As String txtClassno.Enabled = False comboGrade.Enabled = False txtDirector.Enabled = False txtclassroom.Enabled = False txtsql = "select * from class_Info " Set mrc = Executesql(txtsql,Msgtext) mrc.MoveFirst Call viewData myBookmark = mrc.Bookmark mcclean = True Exit Sub PROC_ERR: Print "错误" MsgBox "无记录!" End Sub


这样问题就很容易解决了!

相关文章

Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强...
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办...
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace...
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用...
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选...
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As Dat...