今天计算机算解决了一个实时错误——3021,这是在修改信息窗体中经常出现的
伴随3021出现的是EOF和BOF,简单说下,以后会有详细的总结
**BOF 指示当前记录位置位于 Recordset 对象的第一个记录之前
EOF 指示当前记录位置位于 Recordset 对象的最后一个记录之后**
即当指针在记录集第一个记录之前,BOF为Ture
最后一个记录之后,EOF为Ture
遇到了的问题是,当删除最后一条记录时,EOF和BOF中有一个是真
解决问题的代码如下:
Private Sub deletecommand_Click()
mybookmark = mrc.Bookmark '对当前记录做标签
str2$ = MsgBox("是否删除当前记录?", vbOKCancel, "删除当前记录")
If str2$ = vbOK Then
mrc.MoveNext
If mrc.EOF = True Then
mrc.MovePrevious
mrc.MovePrevious
If mrc.BOF = True Then
mrc.MoveNext
mrc.Delete
MsgBox "最后一条记录删除,记录为空!", vbOKOnly + vbExclamation, "警告"
Unload Me
Else
mrc.MoveFirst
mybookmark = mrc.Bookmark
mrc.MoveLast
mrc.Delete
mrc.Bookmark = mybookmark
Call viewdata
End If
Else
mybookmark = mrc.Bookmark
mrc.MovePrevious
mrc.Delete
mrc.Bookmark = mybookmark
Call viewdata
End If
Else
mrc.Bookmark = mybookmark
Call viewdata
End If
End Sub
如果是使用指针的移动去标记最后一个数据,最关键如何将标记定位到最后一个数据上,可以看出
If mrc.EOF = True Then
mrc.MovePrevious
mrc.MovePrevious
If mrc.BOF = True Then
mrc.MoveNext
这时指针便定位在了最后一个记录
关于3021的其他解决方法,欢迎小伙伴分享