Private Sub Form_Load()
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Public Const connst = "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source=C:\My Documents\friend.mdb"
conn.Open connst
sql = "select * from myfriend order by id desc "
Set rs = conn.Execute(sql)
rs.MoveFirst
Set DataGrid1.DataSource = rs
end sub错误:the rowset is not bookable

解决方案 »

  1.   

    ...
    sql = "select * from myfriend order by id desc "
    rs.open sql ,conn
    if rs.recordcount>0 then rs.MoveFirst
    Set DataGrid1.DataSource = rs
      

  2.   

    不对Private Sub Form_Load()
    Dim conn As New ADODB.Connection
    Dim rs As New ADODB.Recordset
    connst = "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source=C:\db1.mdb"
    conn.Open connst
    sql = "select * from myfriend order by id desc "
    rs.CursorLocation = adUseClient
    'Set rs = conn.Execute(sql)
    rs.Open sql, conn
    rs.MoveFirst
    Set DataGrid1.DataSource = rs
    End Sub
    --------------------------------------------------------
    rs.CursorLocation = adUseClient很重要
    Set rs = conn.Execute(sql)改变rs.CursorLocation为adUseServer所以出错
      

  3.   

    ADO连接:
    工程--->引用--->Microsoft ActiveX Data Object 2.x(版本号)Option ExplicitDim WithEvents adoRS As Recordset
    Dim db As Connection
    '提数据事件
        Set db = New Connection
        db.CursorLocation = adUseClient
        db.Open"Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" & App.Path & "\db1.mdb;Jet OLEDB:Database Password=1234;"
    '                           ##########################################
    '打开密码是1234的Access2000数据库db1.mdb
    '不需要密码,就把Jet OLEDB:Database Password=1234;这段去掉    Set adoRS = New Recordset
        
        adoRS.Open "SELECT * FROM 表", db, adOpenStatic, adLockOptimistic
        '赋值给 DataGrid 表
        Set DataGrid1.DataSource = adoRS
        '表刷新
        DataGrid1.Refresh    '如果要绑定TextBox(数组):
        'Text1(0).DataField = 字段1
        'Text1(1).DataField = 字段2
        '.........
        Dim oText As TextBox 'TextBox
        For Each oText In Me.Text1
            Set oText.DataSource = adoRS
        Next
    '添加事件和保存
        adoRS.AddNew
        '保存
        adoRS![字段a] = text1.Text
        adoRS![字段b] = text2.Text
        adoRS.UpdateBatch adAffectAll'删除
        adoRS.Delete
        '重新赋值给表
        adoRS.Requery
        Set DataGrid1.DataSource = adoRS
        DataGrid1.Refresh    '其他相关操作:
        '上一条
        If Not adoRS.BOF Then adoRS.MovePrevious
        If adoRS.BOF And adoRS.RecordCount > 0 Then
             '已到最后返回
             adoRS.MoveFirst
        End If
        '下一条
        If Not adoRS.EOF Then adoRS.MoveNext    '下一条
        If adoRS.EOF And adoRS.RecordCount > 0 Then
              '已到最后返回
              adoRS.MoveLast
        End If
        '第一条
        If Not adoRS.BOF Then adoRS.MoveFirst
        '最末
        If Not adoRS.EOF Then adoRS.MoveLast
      

  4.   

    rs.open sqlstr,conn,adopenstatic,adlockreadonly