大虾,我现在在自学VB,我现在想让datagrid通过代码与数据库相连,但报错。这段代码我发给我的一个网友,运行正常。代码如下(报错为行集合不能作为标签,光标停在倒数第二行,数据库为VB自带的)
Dim cn As Connection
Dim rt As Recordset
Set cn = New Connection
Set rt = New Recordset
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source=C:\Program Files\Microsoft Visual Studio\VB98\BIBLIO.MDB"
cn.Open
Set rt = cn.Execute("select * from authors")
Set DataGrid1.DataSource = rt
    DataGrid1.Refresh

解决方案 »

  1.   

    改成这样:
    set rt=new adodb.recordset
    rt.open "select * from authors", conn,1,1
    set datagrid1.datasource=rt
      

  2.   

    if cn.state<>adstateopen then msgbox err.description
      

  3.   

    改成这样:
    工程--->引用--->Microsoft ActiveX Data Object 2.x(版本号)    Dim CN   As New ADODB.Connection                '定义数据库的连接
        Dim Rs   As New ADODB.Recordset    CN.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program Files\Microsoft Visual Studio\VB98\BIBLIO.MDB;Persist Security Info=False"
        CN.Open    Rs.CursorLocation = adUseClient
        Rs.Open "select * from authors", CN, adOpenDynamic, adLockBatchOptimistic    Set DataGrid1.DataSource = Rs
      

  4.   

    改成这样:
    工程--->引用--->Microsoft ActiveX Data Object 2.x(版本号)    Dim CN   As New ADODB.Connection                '定义数据库的连接
        Dim Rs   As New ADODB.Recordset    CN.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program Files\Microsoft Visual Studio\VB98\BIBLIO.MDB;Persist Security Info=False"
        CN.Open    Rs.CursorLocation = adUseClient
        Rs.Open "select * from authors", CN, adOpenDynamic, adLockBatchOptimistic    Set DataGrid1.DataSource = Rs
      

  5.   

    加上一句cn.CursorLocation = adUseClient
      

  6.   

    同意楼上的,用客户端游标,但Dim Rs   As New ADODB.Recordset  '这句加个new是在浪费资源,呵呵呵
      

  7.   

    to hengxin54(火星) 
        按照你的改了之后,程序可运行正常了。但有一点我不明白,为什么我用
    Set rt = cn.Execute("select * from authors")语句通不过呢
      

  8.   

    TO wei1027(猫1027)
            you're right!但为什么加上这一句就可以了呢