您的位置:首页 > 其它

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

2013-08-05 09:26 337 查看
    最近在敲学生管理系统,遇见最多也是最大的一个问题就是:



遇见这个问题的有两个原因:第一:当你还未添加任何记录的时候,就要试图去修改记录,就会出现上面的那条错误提示。
解决方案:第一:你先记得添加一条记录,但是这不是解决的根本办法,所以我们就采取第二个解决方案。
第二:在启动窗体中把原先的代码:
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数据集是空的,没有数据可以返回给文本框,所以就报错了!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: