学生管理系统调试--实时错误(实时错误‘3021’)

##大家在敲学生信息管理系统时,经常会遇到这种情况:
##数据库中没有添加记录,但我们点击修改记录时,会出现如下提示:
这里写图片描述
###首先,我们先让我们了解一下什么是EOF和BOF吧。

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

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

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

这里写图片描述

这里写图片描述

如图我们能很清楚的看到当mrc指向编号-1,这样就符合了BOF的情况;指向5(并不存在这条记录)的时候,这就是EOF的情况。如果同时出现BOF和EOF的情况,就是说指针既在上界之外也在下界之外,这就表示该数据集为空。
##出现这种错误的原因:
1、我们查找的数据库记录为空;
2、查找到数据后,用Del命令删除记录后,在引用Fields后出现错误;
(Fields:当你打开一个数据集时,需要声明一个数据集对象,在它的下面会有一个字段集合,这个字段集合就是fields。
使用方法:
rs(数据集对象).fields(“字段名称”)
rs(数据集对象).fields(字段索引号 )
3、已经用MoveFirst或用MovePrevious命令移动数据库开始后再用MovePrevious命令;
4、已经用Movelast或用MoveNext命令移动至数据库最后位置后再用MoveNext命令;

##解决问题的方法:
1.加一个错误处理:

On Error GoTo 1:
mrc.MoveFirst
   1:
  
  If Err=3021 then
      MsgBox"无记录!"
   end if 
  

2.用一个if语句,让程序直接进行下一步即可。

If mrc.EOF AND mrc.BOF Then
   MsgBox"无记录!"
   frmAddinfo.Show
 else
mrc.movefirst
end if 

##以上是’3021’的总结,如果有更好的办法,请大神指导。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 13
    评论
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TGB-Earnest

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值