Dim Conn As New ADODB.Connection
Dim rs As New ADODB.RecordsetPrivate Sub Command1_Click()
    Conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\myProject\Temp\data.mdb;Persist Security Info=False"
    Conn.Open
    
    rs.Open "select * from caiwu", Conn, adOpenStatic, adLockReadOnly
    
    Set DataGrid1.DataSource = rs
    DataGrid1.Refresh
    
    
End Sub
为什么datagrid1没反应啊?奇怪!!谢谢大家了!帮帮我吧!

解决方案 »

  1.   

    加一句 
    rs.CursorLocation = adUseClient
      

  2.   

    rs.CursorLocation = adUseClient
    rs.Open "select * from caiwu", Conn, adOpenStatic, adLockReadOnly
      

  3.   

    Dim Conn As New ADODB.Connection
    Dim rs As New ADODB.RecordsetPrivate Sub Command1_Click()
        Conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\myProject\Temp\data.mdb;Persist Security Info=False"
        Conn.Open
        rs.CursorLocation = adUseClient
        rs.Open "select * from users", Conn, adOpenStatic, adLockReadOnly
        MsgBox rs.RecordCount & rs.Fields(0)
        Set DataGrid1.DataSource = rs
        DataGrid1.Refresh
        
    End Sub
      

  4.   

    除了将rs.CursorLocation = adUseClient
    外,在设计时,也不能给datasource设置值,如果设置了值,并检索了datagrid字段,则
    以上代码根本不会显示出来,你可以放置一个不设置任何属性的datagrid控件试一试。
      

  5.   

    CursorLocationEnum,没有做控制,CursorLocationEnum在默认的状态下为adUseServer,而Datagrid显示Access数据库需要使用客户端游标adUseClient。
      

  6.   

    把客户端游标Conn.CursorLocation = adUseClient加到程序中,要成为一种习惯,至于是什么道理,要么把ado的官方资料从头到尾看一遍,要么什么也不理会,反正大家都在用的一定没错。还有取得rs值后判断一下是否不为空,这样更有利于程序的健壮性。