学生信息管理系统中的实时错误’3021‘解决办法


一、错误描述

在做学生信息管理系统的时候运行以后碰到过这样的错误:“实时错误’3021’,BOF或EOF中有一个是“真“,或者当前的记录已被删除,所需的操作要求一个当前的记录。”


二、错误在什么时候出现?

这个错误一般是出现的情况是在:当系统中还没有添加任何信息的时候,去点击修改信息的时候。(例如:没有添加任何的学籍信息,而且系统之前也没有任何的学籍信息,这个时候去点修改学籍信息,就回出现这种情况)

三、错误出现的原因

在网上查过原因,也通过自己对代码的阅读发现,出现这种情况的原因是:因为需要查询的表在数据库中没有任何的数据。

源代码(以修改学籍的代码为例):

Private SubForm_Load()     运行修改学籍窗体

Dim txtSQL AsString

   Dim MsgText As String

   

    txtSQL = "select * from student_Info"

    Set mrc = ExecuteSQL(txtSQL, MsgText)       '得到student表,并显示出来

    'select得到的临时表,游标指向尾记录,在Access中指向第一条

    mrc.MoveFirst

    Call viewData

    mcbookmark = mrc.Bookmark '做标记

     mcclean= True

End Sub


四、解决办法

1.添加错误处理

Private Sub Form_Load()     运行修改学籍窗体

    Dim txtSQL As String

    Dim MsgText As String

   

    txtSQL = "select * from student_Info"

    Set mrc = ExecuteSQL(txtSQL, MsgText)       '得到student表,并显示出来

    On Error GoTo dateErr  '如果有错误直接执行dateErr那一步

    mrc.MoveFirst       '

    Call viewData

    myBookmark = mrc.Bookmark

    mcclean = True


dateErr:

    If Err =3021 Then

        MsgBox"没有数据"

    End If

end sub


2.添加判断,判断数据中是否有需要查询的表中数据

Private Sub Form_Load()运行修改学籍窗体

Dim txtSQL As String

Dim MsgText As String

Dim str1 As String      '自己加的

    '得到student

txtSQL = "select * fromstudent_Info"

Set mrc = ExecuteSQL(txtSQL, MsgText)

    If mrc.EOF = False Then  先判断是否还有记录,如果还有记录

        mrc.MoveFirst

        Call viewData

        myBookmark = mrc.Bookmark

        mcclean=True

     

     Else                                      如果没有记录

        str1 =MsgBox("没有学籍信息,是否添加学籍信息?", vbOKCancel, "提示") 

         If str1 = vbOK Then    点击确定

            unload frmModifysinfo         当前窗体卸载

            frmAddsinfo.Show             添加学籍窗体运行

         Else                                      点击取消

            Unload frmModifysinfo         当前窗体卸载

        End If      

   End If

End Sub



你可能感兴趣的:(学生信息管理系统中的实时错误’3021‘解决办法)