学生信息管理系统——实时错误:3021

今天计算机算解决了一个实时错误——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的其他解决方法,欢迎小伙伴分享

猜你喜欢

转载自blog.csdn.net/shang_0122/article/details/80787001
今日推荐