【学生管理系统】EOF和BOF

这个错误提示,相信大家都在敲学生管理的时候看到过。


一、EOF和BOF的理解

一直理解的BOF是记录集第一行,EOF是最后一行,这是大错特错的。

         在进行查询的时候,数据库将查询结果返回查询端。BOF表示当前的指针是在记录集的前面,EOF表示当前指针式在记录集的最后。

如果同时产生了BOF和EOF的情况,就是说当前的指针既在上界之外也在下界之外,这样只有一种情况,就是记录集是空的,这样当前指针无论是指到什么地方都是同时具有BOF和EOF的属性。


二、用法

If mrc.BOf Then   :当前指针的位置是在第一行记录之前

If mrc.EOF Then :当前指针的位置是在最后一行记录之后

If Not mrc.EOF Then  :当前指针的位置没有到达最后一条记录

If Not mrc.BOF Then  :当前指针的位置没有到达第一条记录

If mrc.BOF AND mrc.EOF  Then :没有任何记录

If Not (mrc.BOF AND mrc.EOF) Then :指针位于记录集的当中,说明一定有记录

三、代码完善

代码漏洞很多,关于上面的问题有:查询窗体、修改窗体、删除。

以成绩管理为例

查询窗体:

Private Sub inquireresultMenu_Click()
    Dim txtSQL As String
    Dim MsgText As String
    Dim mrc As ADODB.Recordset
    
    txtSQL = "select * from result_Info "
    Set mrc = ExecuteSQL(txtSQL, MsgText)
    If mrc.EOF And mrc.BOF Then
        MsgBox "什么都没有查什么查先添加成绩信息吧亲", vbOKOnly + vbExclamation, "警告"
        frmAddresult.Show
        Exit Sub
    Else
        frmInquiresinfo.Show
    End If
End Sub

修改窗体:

Private Sub modifyresultMenu_Click()
    Dim txtSQL As String
    Dim MsgText As String
    Dim mrc As ADODB.Recordset
    
    txtSQL = "select * from result_Info "
    Set mrc = ExecuteSQL(txtSQL, MsgText)
    If mrc.EOF And mrc.BOF Then
        MsgBox "什么都没有改什么改,先添加成绩信息吧亲", vbOKOnly + vbExclamation, "警告"
        frmAddresult.Show
        Exit Sub
    Else
       frmModifyresult.Show
    End If
End Sub

删除按钮:

Private Sub deleteCommand_Click()
    myBookmark = mrc.Bookmark
        Dim txtSQL As String
        Dim MsgText As String
    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
             txtSQL = "select * from result_Info "
          Set mrc = ExecuteSQL(txtSQL, MsgText)
                If mrc.EOF And mrc.BOF Then
                    MsgBox "最后一条记录真的要删除吗", vbOKOnly + vbExclamation, "警告"
                    mrc.Close
                    Frame1.Enabled = False
                    Frame2.Enabled = False
                   comboExamtype.Text = ""
                   comboSID.Text = ""
                   comboCourse.Text = ""
                   comboClassNo.Text = ""
                   txtName.Text = ""
                   txtResult.Text = ""
                Else
                    Call viewData
                End If
             Else
                 myBookmark = mrc.Bookmark
                 mrc.MovePrevious
                 mrc.Delete
                 mrc.Bookmark = myBookmark
                 Call viewData
                End If
        Else
           myBookmark = mrc.Bookmark
           Call viewData
       End If
       Unload Me
    
End Sub

你可能感兴趣的:(sql,数据库,tag)