VB实例:学生系统总结(三)
——经典错误二:实时错误3021
学生系统中“实时错误3021 BOF 或EOF中有一个是“真”,或者当前记录被删除,所需操作要求一个当前的记录。”错误出现的次数仅次于上一篇博客中提到的错误“ 实时错误‘91’”
这个错误一般会出现在修改,查询等窗口代码中!
下面要简单说一下BOF 和EOF 的区别不同了。
BOF、EOF属性:
BOF 指示当前记录位置位于 Recordset 对象的第一个记录之前。
EOF 指示当前记录位置位于 Recordset 对象的最后一个记录之后。
返回值:
BOF 和 EOF 属性返回布尔型值。
想要具体了解BOF 和 EOF 的意义和和用法请参考下边链接中的内容:
http://blog.csdn.net/mrbaymax/article/details/77415669
我在调试过程中遇到的问题,具体的位置如图所示:
这个问题的出现是因为数据库中没有记录造成的,针对这个问题添加程序段如下图所示:
下面来简单分析一下这段简单代码
If mrc.RecordCount = 0 Then ‘查询数据库中的数据条数
MsgBox "没有记录,请关闭修改窗口!", vbOKOnly + vbExclamation, "警告" ‘如果数据库中没有相关数据时弹出的警告窗口
‘当数据库中没有相关数据时 让查询窗口中的按钮控件失效
cmdFirst.Enabled = False
cmdPrevious.Enabled = False
cmdNext.Enabled = False
cmdLast.Enabled = False
cmdcancel.Enabled = False
cmdDelete.Enabled = False
cmdEdit.Enabled = False
cmdUpdate.Enabled = False
Else
mrc.MoveFirst
Call viewdata
myBookmark = mrc.Bookmark
mcclean = True
End If
这段程序稍加修改可以适用于学生系统中的大部分“实时错误3021”
具体的修改根据自己的情况来修改使用。