敲学生管理系统遇见错误之实时错误‘3021’

    最近在敲学生管理系统,遇见最多也是最大的一个问题就是:

                                             

    遇见这个问题的有两个原因:第一:当你还未添加任何记录的时候,就要试图去修改记录,就会出现上面的那条错误提示。

    解决方案:第一:你先记得添加一条记录,但是这不是解决的根本办法,所以我们就采取第二个解决方案。

                       第二:在启动窗体中把原先的代码:

Private Sub modifycourseMenu_Click()
        frmModifycourseinfo.Show
End Sub
改为:
Private Sub modifycourseMenu_Click()
     txtSQL = "select * from course_info"
    Set mrc = ExecuteSQL(txtSQL, MsgText)
    
     If mrc.RecordCount = 0 Then
        MsgBox "课程信息不存在,请稍后补充!", vbOKOnly + vbExclamation, "警告"
        mrc.Close
        Set mrc = Nothing
        frmAddcourseinfo.Show
        Exit Sub
     Else
       frmModifycourseinfo.Show
     End If
End Sub
    这样改是比较完善的了,因为当没有记录却点击修改记录的时候,就会弹出“课程信息不存在请稍候补充”的警告框,然后接下来它就会弹出来添加记录窗体,符合人类的正常思维!

    遇见这个问题的第二个原因:当你修改记录时,点击删除按钮,删除到最后一个,也会出现这类问题。源代码为:

Private Sub deleteCommand_Click()
    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
                Call viewData
            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

    解决方案(在源代码上添加一段代码即可):第一:

Private Sub deleteCommand_Click()
    On ErrorGoTo_s_err
    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
                Call viewData
            Else
                myBookmark = mrc.Bookmark
                mrc.MovePrevious
                mrc.Delete
                mrc.Bookmark = myBookmark
                Call viewData
            End If
    Else
        mrc.Bookmark = myBookmark
        Call viewData
    End If
s_err:
         msgbox "记录已经删除!",vbOkonly  +vbExclamation,"警告"
End Sub
但是这种方法是查错用的,出现错误就跳过,感觉不太专业,所以第二种方法更提倡大家用!

第二:

Private Sub deleteCommand_Click()
    myBookmark = mrc.Bookmark '做标记
    str2$ = MsgBox("是否删除当前记录?", vbOKCancel, "删除当前记录")
    
    If str2$ = vbOK Then
            mrc.MoveNext '移到下一条记录
            If mrc.EOF Then
                 mrc.MovePrevious
                 mrc.MovePrevious  '如果数据库中只有一条记录的时候, 防止删除记录为空时出错加的一条语句。
                 If mrc.BOF 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
其实出现这两种错误的根本原因是:数据记录为空!在数据库中sql语句查询出来的值是空的,因此mrc数据集是空的,没有数据可以返回给文本框,所以就报错了!



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 26
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值