您的位置:首页 > 其它

学生管理系统调试——实时错误(实时错误“3021)

2013-08-03 15:39 274 查看



最近敲了一个小的练习项目——学生信息管理系统,在调试的过程了出现了一些问题。通过这些过问题又让我学习到了不少新的知识,今天我首先要记录的是”实时错误 ‘3021’“相信大多数人在初次使用VB链接数据库的过程中都会遇到这样的问题。怎么解决实时错误”3021“呢?那还是先让我们了解一下什么是EOF和BOF吧。

使用ADO数据库进行查询的时候,将数据库查询结果返回查询端的时候,在查询端的内存中就会有一个列表,这个列表存放的就是查询的结果集。我们假设mrc是数据集,1、2、3、4为该数据集中的四个数据如下图:




如图我们能很清楚的看到当mrc指向编号-1,这样就符合了BOF的情况;指向5(并不存在这条记录)的时候,这就是EOF的情况。如果同时出现BOF和EOF的情况,就是说指针既在上界之外也在下界之外,这就表示该数据集为空。

出现这种错误的原因:1、我们查找的数据库记录为空;

2、查找到数据后,用Del命令删除记录后,再引用Fields后出现错误;

3、已经用MoveFirst或用MovePrevious命令移动数据库开始后再用MovePrevious命令;

4、已经用MoveLast或用MoveNext命令移动至数据库最后位置后再用MoveNext命令。

解决问题的方法:

如果我们在查询的表中没有数据的话我们可以加上一个错误处理:

On Error resume next
mrc.MoveFirst
If Err=3021 then
    Response.Write"无数据!"
End If


当我们删除最后一条记录的时候,引用Fields的过程中也会出现这样的问题,大家可以参考一下以下代码:

Private Sub cmdDelete_Click()
    Dim intMsgbox As Integer
    
    m_vntBookmark = m_rstCourseInfo.Bookmark           
    intMsgbox = MsgBox("是否删除当前记录?", vbOKCancel, "删除当前记录")
    
    If intMsgbox = vbOK Then
        m_rstCourseInfo.MoveNext
        
        If m_rstCourseInfo.EOF = True Then
            m_rstCourseInfo.MovePrevious
            m_rstCourseInfo.MovePrevious
            
            If m_rstCourseInfo.BOF = True Then
                m_rstCourseInfo.MoveNext
                m_rstCourseInfo.Delete
                MsgBox "最后一条记录删除,记录为空!", vbOKOnly + vbExclamation, "警告"
                Unload Me
            Else
                m_rstCourseInfo.MoveFirst
                m_vntBookmark = m_rstCourseInfo.Bookmark
                m_rstCourseInfo.MoveLast
                m_rstCourseInfo.Delete
                m_rstCourseInfo.Bookmark = m_vntBookmark
                Call viewData
            End If
        Else
            m_vntBookmark = m_rstCourseInfo.Bookmark
            m_rstCourseInfo.MovePrevious
            m_rstCourseInfo.Delete
            m_rstCourseInfo.Bookmark = m_vntBookmark
            Call viewData
        End If
        
    Else
        m_rstCourseInfo.Bookmark = m_vntBookmark
        Call viewData
    End If
    
End Sub

进一步的整理会在接下来的博客中陆续发布,希望大家能关注!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: