在调学生的时候同样遇到了3021 这个问题,下面是解决方法
我们先来了解一下EOF,BOF的用法:
BOF:指当前记录位置位于Recordset对象的第一个记录之前;
EOF:指当前记录位置位于Recordset对象的最后一个记录之后。
这两个的属性值均返回布尔型:True和False,使用BOF和 EOF 属性可确定 Recordset 对象是否包含记录,或者从一个记录移动到另一个记录时是否超出 Recordset 对象的限制。
说明:
(1)如果当前记录位于第一个记录之前,BOF属性将返回 True(-1),如果当前记录为第一个记录或位于其后则将返回 False (0)。 (2)如果当前记录位于Recordset 对象的最后一个记录之后 EOF 属性将返回True,而当前记录为 Recordset 对象的最后一个记录或位于其前,则将返回 False。
( 3)如果BOF 或 EOF 属性为 True,则没有当前记录。
(4)如果打开没有记录的Recordset 对象,BOF 和 EOF 属性将设置为True,而 Recordset 对象的 RecordCount 属性设置为零。打开至少包含一条记录的 Recordset 对象时,第一条记录为当前记录,而BOF 和 EOF 属性为 False。
(5)如果删除Recordset 对象中保留的最后记录,BOF 和 EOF属性将保持 False,直到重新安排当前记录。
具体用法:
If objRs.BOF Then
表示:当前指针的位置是在第一行记录之前,则…
If objRs.EOF Then
表示:当前指针的位置是在最后一行记录之后,则…
If Not objRs.EOF Then
表示:当前指针的位置没有到达最后一条记录
If Not objRs.BOF then
表示:当前指针的位置没有到达第一条记录
推荐使用下面两条 If Not (objRs.BOF AND objRs.EOF) Then
表示:指针位于RecordSet 的当中(并非是最后一条和第一条) ,说明一定有记录。
If objRs.BOF AND objRs.EOF Then 表示:没有任何记录
解决方法:
加一个判断语句,遇到就会自动跳过
on Error GoTo 1
mrc.MoveNext
call viewData
1:
If Err = 3021 then
If MsgBox ("已经没有数据,是否添加数据?",vbOKCancel, ”提示 ") = vbOK then
frmAddresult.show
end if
end if
end sub
当点击下一条没有数据的时候,就会弹出提示框问是否添加数据,这样就可以避免出现错误。