一出现3021问题就是BOF或EOF中有一个是"真",或者当前记录已被删除,操作要求一个当前的记录。
首先得清楚什么是BOF和EOF
BOF 指示当前记录位置位于 Recordset 对象的第一个记录之前。
EOF 指示当前记录位置位于 Recordset 对象的最后一个记录之后。
BOF跟EOF的返回值为:
BOF:为True:表示的是当前指针的位置是在的第一行的前面。
为False:时表示的是指针的位置是在第一行,或者第一行的后面。
EOF:为True表示当前的是当前指针的位置是在最后一行的后面
为False表示指针的位置是在最后一行,或者在最后一行的前面。
在修改成绩窗体中,删除记录,当删除完表中的数据就会报3021的错误
错误出现的原因:
因为需要查询的表在数据中没有任何的数据。例如 当系统中还没有添加任何信息,然后点击修改信息点的时候,就会弹出事实错误3921 的错误
以下是我做的对3021错误的修改
mybookmark = mrc.Bookmark '做标记
str2$ = MsgBox("是否删除当前记录?", vbOKCancel, "删除当前记录")
If str2$ = vbOK Then
mrc.MoveNext
If mrc.RecordCount = 1 Then
str2$ = MsgBox("这是最后一条记录,是否删除?", vbOKCancel + vbExclamation, "警告")
If str2$ = vbOK Then
mrc.MoveFirst
mybookmark = mrc.Bookmark
mrc.MoveLast
mrc.Delete
mrc.Bookmark = mybookmark
str2$ = MsgBox("数据为空!", vbOKOnly + vbExclamation, "提示")
If str2$ = vbOK Then
Unload Me
frmaddclassinfo.Show
Exit Sub
Else
Unload Me
frmaddclassinfo.Show
Exit Sub
End If
Else
Exit Sub
End If
Else
mybookmark = mrc.Bookmark '记载当前位置
mrc.MovePrevious
mrc.Delete
mrc.Bookmark = mybookmark '取消标记
Call viewData
End If
End If
还可以加error GOTO拍错语句。3021是一个经典错误,大家也可以自己想解决问题的办法。如有不正确,请及时斧正!