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

来源:互联网 发布:淘宝店推广预算计划书 编辑:程序博客网 时间:2024/06/02 18:22

                                                                   

         最近敲了一个小的练习项目——学生信息管理系统,在调试的过程了出现了一些问题。通过这些过问题又让我学习到了不少新的知识,今天我首先要记录的是”实时错误 ‘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 nextmrc.MoveFirstIf 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

         进一步的整理会在接下来的博客中陆续发布,希望大家能关注!

 

 

 

 

 

原创粉丝点击