实时错误“3021”在Delete事件中出现的解决方法

来源:互联网 发布:淘宝无法打开登录界面 编辑:程序博客网 时间:2024/05/21 10:35

上一篇介绍了实时错误“3021”在修改无记录信息是出现的解决方法,现在再来介绍当实时错误“3021”在delete事件中出现的解决方法。

事实上,二者的解决思想是相同的都是在程序报错时,对错误点进行错误处理。但是,这里呢,有一点儿小小的区别,就是通过运行条件来推理错误的原因,进而总结出错误处理的方法。大家耐心的来听我说。

大家在编写修改记录中的删除记录按钮时,经常会遇到如下报错:

经过几次的尝试,我们会总结出一条规律,那就是

1、当表中只剩一条记录时,点击删除记录按钮,程序会报错 

2、当表中没有记录时,点击删除记录按钮,程序也会报错 

以上两种情况见下面代码中的注释1、2、

除此之外,在修改信息的窗体中一般是不会出现同样的错误的,那么我们就可以根据我们发现的原因,来对程序作出相应的错误处理。只要在经过上述两种情况时,直接进行错误处理的步骤就OK了!


错误处理的代码和原来的类似,只是这次要把两种原因都考虑进去,那么我们会用到多个if语句来嵌套。

代码如下:

Private Sub deleteCommand_Click() '删除记录按钮On Error GoTo 1: '进行错误处理    Dim MsgText As String    myBookmark = mrc.Bookmark        str2$ = MsgBox("是否删除当前记录?", vbOKCancel, "删除记录")    If str2$ = vbOK Then        mrc.MoveNext  ’移至下一条记录        If mrc.EOF Then              mrc.MoveFirst             myBookmark = mrc.Bookmark  '对第一条进行标记            mrc.MoveLast    '在返回最后一条记录,即想要删除的记录            mrc.Delete      '删除记录            mrc.Bookmark = myBookmark                  Else            myBookmark = mrc.Bookmark '对即将删除的记录的下一条进行标记,以备删除记录后显示该记录            mrc.MovePrevious               mrc.Delete       '删除当前记录            mrc.Bookmark = myBookmark    '找到原来的标签记录                                         End If    End If    1:   '错误处理过程    If Err = 3021 Then        If mrc.BOF And mrc.EOF Then     '1、无记录的情况            MsgBox "无可删除的记录!"            Else                         '2、只有一条记录的情况                str1 = MsgBox("最后一条记录,是否删除?", vbOKCancel, "删除记录")                If str1 = vbOK Then                    MsgBox "最后一条记录已删除!"                    Unload Me                Else                    Exit Sub                End If        End If            End If    End Sub

经过这样处理后,便不再出现上面的错误提示了!

不过在这里我们需要理解EOF和BOF的真正含义

EOF:end  of file ,它并不是指最后一条记录,而是指最后一条记录的末尾

BOF:begin  of  file,它也不是指第一条记录,而是指第一条记录之前

如果不能很好的理解EOF 和 BOF 那么,上述代码在理解上就会出现矛盾!


原创粉丝点击