【学生信息管理系统】实时错误'3021' BOF EOF

在使用“修改”功能中的“删除记录”功能,以“修改学籍信息”为例,如下图


   

     在删除记录的时候,把全部的记录都删除之后会报错,如下图,出现这个错误是因为在表中查不到数据


 

   首先介绍一下BOF与EOF,以及二者之间的区别

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

     EOF:指当前记录位置位于Recordset对象的最后一个记录之后。

     这两个的属性值均为返回布尔型:True和False,使用BOF和EOF属性可确定Recordset对象是否包含记录,或者从一个记录移动到另一个记录时是否超出Recordset对象的限制。下表即是各自的使用说明及查询结果:


 

    说明:

    (1)如果当前记录位于第一个记录之前,BOF属性将返回True(-1),如果当前记录为第一个记录或位于其后则将返回False(0)

    (2)如果当前记录位于Recordset对象的最后一个记录之后EOF属性将返回Ture,而当前记录为ecordset对象的最后一个记录或位于其前,则将返回False

    (3)如果BOF或EOF属性为True,则没有当前记录

    (4)如果打开没有记录的Recordset对象,BOF和EOF属性将设置为Ture,而Recordset对象的RecordCount属性设置为零。打开至少包含一条记录的Recordset对象时,第一条记录为当前记录,而BOF和EOF属性为Flase

    (5)如果山区Recordset对象中保留的最后记录,BOF和EOF属性将保持False,直到重新安排当前记录


    具体用法:

 

    If objRs.BOFThen

    表示:当前指针的位置是在第一行记录之前,则...


    If objRs.EOFThen

    表示:当前指针的位置是在最后一行记录之后,则...


    If NotobjRs.EOF Then

    表示:当前指针的位置没有到达最后一条记录


    If NotobjRs.BOF then

    表示:当前指针的位置没有到达第一条记录


    推荐使用下面两条

     If Not(objRs.BOF AND objRs.EOF) Then

     表示:指针位于RecordSet的当中(并非是最后一条和第一条) ,说明一定有记录。


     If objRs.BOFAND objRs.EOF Then

     表示:没有任何记录

     想要避免这个问题还有一种方法,就是在删除到最后一条的时候提示“是否删除”,删除之后再提示“数据为空,是否添加?”,代码如下:


     If mrc.RecordCount = 1 Then   '表中只剩一条数据
         str1$ = MsgBox("这是最后一条记录,是否删除?", vbOKOnly + vbExclamation, "警告")
         If str1$ = vbOK Then
             mrc.Delete
             MsgBox "数据为空,是否添加?", vbOKOnly + vbExclamation, "警告"
             frmAddsinfo.Show    '添加数据

             Exit Sub
          Else
             Exit Sub
          End If
     Else
     
     End If

 

     这样就不会报错了,问题也就解决了

     遇到问题首先要知道它是如何产生的,以及为什么产生的,这样就容易解决了

  


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值