Set conn = New ADODB.Connection
    Set rs = New ADODB.Recordset
    conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\jsyxxgl.mdb"
    rs.Open "select * from Main_User", conn, 2, 2Private Sub Command3_Click()
    If rs.EOF Then
        MsgBox "已到末记录", 48, "记录浏览"
    Else
        rs.MoveNext
        Call display
    End If
End Sub这个程序我是按照教程写的,问题就是会超出下边,出现3021实时错误,本人是新手,希望能有大神能解答这个问题,感激不尽~~~
源文件:http://pan.baidu.com/s/1geM4yZp

解决方案 »

  1.   

    1)用客户端游标
        Set conn = New ADODB.Connection
        Set rs = New ADODB.Recordset
        conn.CursorLocation = adUseClient '<-
        conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\jsyxxgl.mdb"
        rs.Open "select * from Main_User", conn, 2, 2
    2)rs.Open 之后判断一下记录是否为空,如果为空 Command3 就不能操作。
      

  2.   

    @Tiger_Zhao 那个BOF还是判定不出来,一直False         是我那个代码有错嘛?
      

  3.   

    BOF、EOF 属性 (ADO)
             BOF 指示当前记录位置位于 Recordset 对象的第一个记录之前。
    EOF 指示当前记录位置位于 Recordset 对象的最后一个记录之后。 
    返回值BOF 和 EOF 属性返回布尔型值。说明使用 BOF 和 EOF 属性可确定 Recordset 对象是否包含记录,或者从一个记录移动到另一个记录时是否超出 Recordset 对象的限制。如果当前记录位于第一个记录之前,BOF 属性将返回 True (-1),如果当前记录为第一个记录或位于其后则将返回 False (0)。如果当前记录位于 Recordset 对象的最后一个记录之后 EOF 属性将返回 True,而当前记录为 Recordset 对象的最后一个记录或位于其前,则将返回 False。如果 BOF 或 EOF 属性为 True,则没有当前记录。如果打开没有记录的 Recordset 对象,BOF 和 EOF 属性将设置为 True,而 Recordset 对象的 RecordCount 属性设置为零。打开至少包含一条记录的 Recordset 对象时,第一条记录为当前记录,而 BOF 和 EOF 属性为 False。如果删除 Recordset 对象中保留的最后记录,BOF 和 EOF 属性将保持 False,直到重新安排当前记录。以下表格说明不同 BOF 和 EOF 属性组合所允许的 Move 方法。 MoveFirst,
    MoveLast MovePrevious,
    Move < 0 
    Move 0 MoveNext,
    Move > 0 
    BOF=True,
    EOF=False 允许 错误 错误 允许 
    BOF=False,
    EOF=True 允许 允许 错误 错误 
    同时为 True 错误 错误 错误 错误 
    同时为 False 允许 允许 允许 允许 
    允许使用 Move 方法并不能保证该方法成功定位记录,只是意味着调用指定的 Move 方法不会产生错误。下表说明当调用各种 Move 方法但未成功定位记录时 BOF 和 EOF 属性设置所发生的情况。 BOF EOF 
    MoveFirst, MoveLast 设置为 True 设置为 True  
    Move 0 没有变化 没有变化 
    MovePrevious, Move < 0 设置为 True 没有变化 
    MoveNext, Move > 0 没有变化 设置为 True 
      

  4.   

    Private Sub Command3_Click()
        rs.MoveNext    If rs.EOF Then
            MsgBox "已到末记录", 48, "记录浏览"
        Else
            Call display
        End If
    End Sub
      

  5.   

    你对 EOF 的理解与设计者不同。在他们看来,在最后一条记录上,并非 EOF。只有越过最后记录,到达了 EOF 这一点,EOF 属性才有效。