学生信息管理系统——实时错误‘3021’

在学生信息管理系统调试的过程中,经常会弹如下图所示的一个提示框(一般会出现在点击查询和修改的某一项内容时),而且调试起来还特别的烧脑☹,但是解决这个bug的过程中,会理解很多概念上的东西,当然这些知识点在之后也是会常用到的……

问题:

实时错误‘3021’:

BOF或EOF中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录。

出现此问题的是如下图所示的代码部分:

出现这个问题的原因非常简单,就是数据库中想要查询的表中没有记录所导致的。

解决方法:

添加入下所示的代码段即可(适当修改)

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
    
    'select得到的临时表,游标指向尾记录,在Access中指向第一条
    mrc.MoveFirst
    Call viewData
    mcbookmark = mrc.Bookmark '做标记
    mcclean = True
    
    End If

知识点:

BOF和EOF的区别:

BOF:(Before of File)指当前记录位置位于RecordSet对象的第一个记录之前

EOF:(End of File)指当前记录位置位于RecordSet对象的最后一个记录之后

BOF和EOF的属性值均返回为布尔型:True和False,使用BOF和 EOF 属性可确定 Recordset 对象是否包含记录,或者从一个记录移动到另一个记录时是否超出 Recordset 对象的限制。

  BOF EOF
True 当前行的位置是在第一行之前,无记录 当前行的位置是在最后一行的后面,无记录
False 当前行的位置是在第一行或第一行之后,有记录

当前行的位置是在最后一行或最后一行前面,有记录

以上只是BOF和EOF很基础很基础的区别,除此之外……☟☟

▷最最最最最后分享一个师哥的博客链接:https://blog.csdn.net/mrbaymax/article/details/77415669  师哥的博客中关于BOF和EOF的知识点总结的非常非常详细鸭☺

发布了22 篇原创文章 · 获赞 12 · 访问量 5198

猜你喜欢

转载自blog.csdn.net/mumuxi709/article/details/104348485
今日推荐