Private Sub Form_Load()
    Dim adocon As New ADODB.Connection
    Dim adors As New ADODB.Recordset
    adocon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\文件编码.mdb;Persist Security Info=False"
    adors.Open "select * from 文件信息", adocon, adOpenStatic, adLockOptimistic
    Set adors = adocon.Execute("select * from 文件信息")
    Set DataGrid1.DataSource = adors
    DataGrid1.Refresh
End Sub就是要实现在加载窗口的时候,把数据库的内容显示到datagrid1
运行后提示the rowset is not bookable
这是什么意思,为什么会这样

解决方案 »

  1.   

    Private Sub Form_Load() 
        Dim adocon As New ADODB.Connection 
        Dim adors As New ADODB.Recordset 
        adocon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\文件编码.mdb;Persist Security Info=False" 
        adors.Open "select * from 文件信息", adocon, adOpenStatic, adLockOptimistic 
        Set DataGrid1.DataSource = adors 
        adors.requery
        DataGrid1.Refresh 
    End Sub
      

  2.   

    楼上的大哥
    还是不行啊
    虽然没提示错误,但是datagrid没显示数据
      

  3.   

    adors.Open "select * from 文件信息", adocon, adOpenStatic, adLockOptimistic 前加一句adors.CursorLocation = adUseClient试试.可能是没有获取到记录.
      

  4.   

    谢谢楼上的啊
    现在可以了
    能不能告诉我为什么
        adors.requery 起什么作用
        为啥加了   Set adors = adocon.Execute("select * from 文件信息") 就不行了
        为啥后面加上adors.CursorLocation = adUseClient就OK了
      

  5.   

    Private Sub Form_Load()
        Dim adocon As New ADODB.Connection
        Dim adors As New ADODB.Recordset
        adocon.CursorLocation = adUseClient
        adocon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\文件编码.mdb;Persist Security Info=False" 
        adors.Open "select * from 文件信息", adocon, adOpenStatic, adLockOptimistic    
        'adors.Open "select * from itb1", adocon, adOpenStatic, adLockOptimistic
        Set adors = adocon.Execute("select * from itb1")
        Set DataGrid1.DataSource = adors
        'DataGrid1.Refresh
    End Sub
      

  6.   

    adors.requery 是让记录集重新获取记录,以便DataGrid1来用.
    adors.CursorLocation = adUseClient 是设置为客户端游标.
    Set adors = adocon.Execute("select * from 文件信息") 多余,前面有句open 了,这是两种不同的方式.
      

  7.   

    adors.Open "select * from 文件信息", adocon, adOpenStatic, adLockOptimistic 
    这句也不要
      

  8.   


    Private Sub Form_Load()
        Dim adocon As New ADODB.Connection
        Dim adors As New ADODB.Recordset
        adocon.CursorLocation = adUseClient '加上这句
        adocon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\文件编码.mdb;Persist Security Info=False"
        'adors.Open "select * from 文件信息", adocon, adOpenStatic, adLockOptimistic'删除这句
        Set adors = adocon.Execute("select * from 文件信息")
        Set DataGrid1.DataSource = adors
        'DataGrid1.Refresh '删除这句
    End Sub
      

  9.   

    只要使用了客户端游标,都可以不用加adors.requery 啊
    adors.CursorLocation = adUseClient 

    adocon.CursorLocation = adUseClient
    有何区别
    另外
    adors.requery和adors.update有和区别
    谢谢楼上的两位 
      

  10.   

    adors.CursorLocation = adUseClient和adocon.CursorLocation = adUseClient一回事,只是作用的对象不同.
    adors.requery一般用于adors.update之后.就是记录集中记录改变之后可以重新方便的调用数据库中新的记录信息.
    这里你没改什么,不用就是了
    understand?看ADO帮助吧...