下面是代码:
Dim db As Database
Dim rs As Recordset
Set db = OpenDatabase(App.Path + "/db1.mdb")
Set rs = db.OpenRecordset("myTable")
MsgBox rs.RecordCount'结果显示表里面有两千多条数据。Dim sql As String
sql = "SELECT * from myTable"
Set rs = db.OpenRecordset(sql)
MsgBox rs.RecordCount‘结果显示只有一条数据为什么??怎样用sql把表里面的数据查询出来。

解决方案 »

  1.   

    你先建立一个模块放连接数据的程序
     Option ExplicitPublic Function ConnectToDatabase()
        ConnectToDatabase = False
        
        Set gConnection = New ADODB.Connection
        On Error GoTo ErrHandler
        With gConnection
            .ConnectionTimeout = 3
            .CursorLocation = adUseClient
            .ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=freight;Data Source=TVL715"
        End With
        gConnection.Open
        
        ConnectToDatabase = True
        Exit Function
    ErrHandler:
        MsgBox "连接数据库失败:" + Err.Description
        Exit Function
    End Function然后在你的程序里面,先调用数据连接,然后就可以做了
    Dim rs As Recordset
    rs.Open "SELECT * from myTable",ADO_Cnn, adOpenKeyset, adLockOptimistic
        text1.text=rs.Fields("ziduan")
    rs.close
      

  2.   

    我的数据库就一个access文件。
      

  3.   

    改成sql = "SELECT * from myTable",cnn,adopenkeyset,adLockOptimistic
      

  4.   

    你更改连接字符串的连接就可以了
    SQL2000和ACCESS都可以用我的方法阿
      

  5.   

    写成这样试试!!!
    rs= db.OpenRecordset("select * from myTable",dbOpenDynaset)
      

  6.   

    Set rs = db.OpenRecordset(sql)
    rs.movelast
    rs.movefirst
    MsgBox rs.RecordCountdandy1437((乐天派!直面所有问题)), didishu0807() ,(LCAAA(小小程序员) ( ) :
    你们连人家用的是DAO都没有搞清楚,就敢口若悬河?哈哈!
      

  7.   

    of123,大哥你先看清楚好吧!!!
    我写的也是用的DAO呀,只是马虎少写了个SET。我写的只是存在语法错误呀!你看看你写的和我写的有什么区别呀???骗分也不要贬低别人吗?
      

  8.   

    LCAAA(小小程序员) 
    冲你这句话,我还不要分了。
    你说说有什么区别?你不知道DAO数据集不能自动取得记录数吧?火有什么用?先把本事涨上去。搂主,如果我的代码能行,把分加给小小XX员。
      

  9.   

    Set rs=db.OpenRecordSet(source,type) 
    其中: 
    source 指定记录集的内容,它可以是一个表名、查询名或SQL语句。 
    type 创建记录集的类型。
    =dbOpenTable表型记录集。
    =dbOpenDynaset动态型记录集。
    =dbOpenSnapshot快照型记录集。
     如果 Data Source 为数据库中的本地表,那么可以用表类型、动态集、快照和动态类型的 Recordset 对象,缺省的记录集类型为表类型。如果 Data Source 为其它类型,那么只能使用动态集和快照类型的 Recordset 对象,动态集类型为缺省的类型。表型记录集:
    Set rs = db.OpenRecordset("myTable")
    可以直接得出总数
    动态型记录集:
    sql = "SELECT * from myTable"
    Set rs = db.OpenRecordset(sql)需要:rs.movelast  才能得出总数:
    MsgBox rs.RecordCount
      

  10.   


    关于Dao的操作,参考:
    http://www.cnttvietnam.com/hoctaps/vb/15.htm
    to : of123  和 LCAAA(小小程序员) 
    你们都是热心帮助别人,请不要吵了!
      

  11.   

    先rs.movelast  ,再rs.RecordCount数量就对了
      

  12.   

    谢谢 LCAAA(小小程序员) 和of123() ,问题解决了。
    也要特别感谢 lihonggen0(李洪根,用.NET,标准答案来了) :你帮我解决了好多问题,而且还给出几个供选择的答案。
    谢谢所有csdn上的兄弟们。
      

  13.   

    楼主!真不好意思看错了你的意思
    LCAAA(小小程序员) 和of123() 你们也别吵了
    谁都有错的时候阿
    再说大家都是出于好心帮助别人阿!