[置顶] 如何处理:BOF或EOF中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录

做学生管理系统是,会一直弹出一个对话框就是:

运行时错误’3021‘; BOF或EOF中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录。

[置顶] 如何处理:BOF或EOF中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录

它几乎无所不在,它的意思很简单就是,它需要数据时,没有数据可用了。

一般来讲,学生管理系统,就有2个地方最容易出现这个问题。

第一个:编码错了

            If mrc.EOF = False Then

    		mrc.MoveFirst

            	mybookmark = mrc.Bookmark

            	mrc.MoveLast

            	mrc.Delete

            	
		mybookmark = mrc.Bookmark

Call Viewdata End If

这时就会出现这个错误,因为倒数第三句,它找不到该书签,没有数据让它用了

那么就要改为:

        If mrc.EOF Then

       mrc.MoveFirst
       mybookmark = mrc.Bookmark

            mrc.MoveLast

            mrc.Delete

            mrc.Bookmark = mybookmark

            Call Viewdata

        End If


 

 

第二种情况就是:它确实没有数据了。

 这种情况很常见,因为毕竟,当你删除了最后一条记录,就没有数据可用了。

 

那么我们就来编码一下cancelcommand的代码,让它给一个提示,告诉我们最后一条记录了,删除后,没有记录。

(1)这样来将分为了2种情况:一种是正好是最后一条记录(但是记录不只有一条),第二种情况就是:有却仅有一条记录,首先到判断出来

(2)这样就用到了2个if语句,第一个先要判断是不是最后一条记录;第二个要判断的是有且仅有一条记录的,我们要让所有的按钮都不能用(这样就不会出现这样的错误),并提示无记录。

 

解决的方法是这样的:

Private Sub deleteCommand_Click()

   

     mybookmark = mrc.Bookmark

   

    

    str2$ = MsgBox("确认是否要删除?", vbOKCancel, "删除当前数据")          

    

    If str2$ = vbOK Then

        

        mrc.MoveNext

    

        If mrc.EOF Then        ‘分为2种情况:一种是是最后一条记录(但不只一条记录);一种是有且仅有一条记录

            mrc.MovePrevious

            mrc.MovePrevious

            If mrc.BOF Then      ‘有且仅有一条记录的情况的处理

                mrc.MoveNext

                mrc.Delete

                MsgBox "最后一条记录已经删除!", vbOKOnly + vbExclamation, "警告"

                    txtCourseno.Text = ""

                    txtCoursename.Text = ""

                    comboCoursetype.Text = ""

                    txtCoursedes.Text = ""

                        Frame2.Enabled = False

    

                        firstCommand.Enabled = False

                        previousCommand.Enabled = False

                        lastCommand.Enabled = False

                        nextCommand.Enabled = False

    

                        txtCourseno.Enabled = False

                        txtCoursename.Enabled = False

                        comboCoursetype.Enabled = False

                        txtCoursedes.Enabled = False



                        editCommand.Enabled = False

                        updateCommand.Enabled = False

                        cancelCommand.Enabled = False

                        deleteCommand.Enabled = False



            Else

                       ‘有很多条记录,但正好删的是第一条记录的处理            

            mrc.MoveFirst

            mybookmark = mrc.Bookmark

            mrc.MoveLast

            mrc.Delete

            mrc.Bookmark = mybookmark

            Call Viewdata

            End If

        Else                ‘有很多条记录也不是最后一条记录的处理

            'mrc.MoveNext

            mybookmark = mrc.Bookmark

            mrc.MovePrevious

            mrc.Delete

            mrc.Bookmark = mybookmark

            Call Viewdata

        End If

    Else                   ‘不删除的处理

        mrc.Bookmark = mybookmark

        Call Viewdata

    End If

End Sub
 
 
 


 

 

 

 

你可能感兴趣的:(删除)