学生修改信息之‘3021’问题

在敲学生的时候,经常出现‘3021’问题,当BOF或EOF中有一个为真时,就会出现’3021‘的错误,出现这个问题的原因主要是查找的数据库当中没有数据,在修改学籍信息的时候,将所有的数据删除就报错,可以添加一个on error goto line 错误捕捉语句,出现3021问题的时候弹出提示框提示没有学籍信息,需要先添加学籍信息,代码如下:

Private Sub cmddelete_Click()
    On Error GoTo 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
    
    '错误处理
err:
    If err = 3021 Then
        If mrc.EOF And mrc.BOF Then
            MsgBox "当前没有记录!", vbOKOnly + vbExclamation, "警告"
        Else
            a = MsgBox("这是最后一条记录,是否删除!?", vbOKOnly + vbExclamation, "警告")
            If a = vbOK Then
                txtSID.Text = ""
                txtName.Text = ""
                combosex.Text = ""
                txtTel.Text = ""
                txtAdress.Text = ""
                txtcomment.Text = ""
                ComboClassNo.Text = ""
                MsgBox "当前无记录,系统将退出!", vbOKOnly + vbexcalamation, "警告"
                Unload Me
            Else
                Exit Sub
            End If
        End If

    End If
End Sub

这样在将所有的信息删除之后,就不会再报3021,没有记录的时候会退出系统,刚开始认为这样就可以了,但是后来发现,当我再次点开修改信息这个窗体的时候还是会报3021,所以又在主窗体的菜单栏那块增加了这些代码,再点击修改学籍信息窗体的时候进行判断,如果数据库信息为0(mrc.recordcount=0),就报提示框,然后返回添加学籍信息窗体添加信息,代码如下

 Private Sub midifystu_Click()
    Dim txtsql As String
    Dim mrc As ADODB.Recordset
    Dim msgtext As String
    
    txtsql = "select * from student_info "
    Set mrc = ExecuteSQL(txtsql, msgtext)
    
    '修改学籍信息的时候没有信息首先判断要添加学籍信息
    If mrc.RecordCount = 0 Then
        MsgBox "没有学籍信息,请先添加学籍信息!", vbOKOnly + vbExclamation, "警告"
        mrc.Close
        Set mrc = Nothing
        frmaddsinfo.Show
        Exit Sub
    Else
        frmModifyinfo.Show
    End If
    
End Sub
上一篇:机房收费系统---------结账


下一篇:【The Clean Code Blog】roots