Set oRs = oCn.OpenSchema(adSchemaTables)
--------------------------------------------
oRs.RecordCount = -1 ,如何得到表总数?

解决方案 »

  1.   

    Set rs = oCn.OpenSchema(adSchemaTables)得到的表信息包含系统表。要得到用户表的数目,可以:
    n=0
    Do While Not rs.EOF
        IF rs.Fields("Table_Type")="SYSTEM TABLE" Then Exit Do
        n=n+1
        rs.MoveNext
    loop
    'rs.Fields("Table_Name")可获得每个表的名称
      

  2.   

    我现在就用的这个变通的方法  
    有没有类似recordcount这样的属性或方法呢?
      

  3.   

    在打开连接前,设置连接为客户端游标
    oCn.CursorLocation = adUseClient
    oCn.Open
      

  4.   

        Dim sql As String
        Dim cn As New ADODB.Connection
        sql = "select * from jishijilu "
        Dim rs As New ADODB.Recordset
        cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\wd.mdb;Persist Security Info=False"
        cn.Open
        rs.CursorLocation = adUseClient
        rs.Open sql, cn, adOpenDynamic, adLockOptimistic
        rs.MoveFirst
        Debug.Print rs.RecordCount
      

  5.   

    Dim cn As New Connection, rs As Recordset
    cn.CursorLocation = adUseClient
    cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\xx.mdb;Persist Security Info=False"
    cn.Open
    Set rs = cn.OpenSchema(adSchemaTables)
    Me.Caption = rs.RecordCount-3'除去三个系统表
      

  6.   

    当RecordCount得到-1时,说明取到的记录条数不正确,而记录集数是由游标获得的,说明游标不能正常上下浮动,因此,得出结论你的游标初始化不正确。具体可以参考4、5楼的文字。祝好运!