Dim cnn1 As ADODB.Connection
Dim rstSchema As ADODB.Recordset
Dim strCnn As String
Set cnn1 = New ADODB.Connection
strCnn = "driver={SQL Server};server=srv;" & _
"uid=sa;pwd=;database=pubs"
cnn1.Open strCnn
Set rstSchema = cnn1.OpenSchema(adSchemaTables)
Do Until rstSchema.EOF
Debug.Print "Table name: " & _
rstSchema!TABLE_NAME & vbCr & _
"Table type: " & rstSchema!TABLE_TYPE & vbCr 
rstSchema.MoveNext Loop
rstSchema.Close
cnn1.Close

解决方案 »

  1.   

    执行SQL语句:
    select * from tab
      

  2.   

    SELECT name FROM sysobjects WHERE type = 'U' AND status>0注:SQL Server下
      

  3.   

    SELECT TABLE_NAME FROM USER_TABLESOracle下
      

  4.   

    我忘了一句,我的数据库是ACCESS2000
      

  5.   

    强烈建议不要用Access2000,Access97都比他好!!
    还是用SQL2000吧。
      

  6.   

    dim a as database
    dim b as tabledefset a=opendatabase("您的数据库")
    set b=a.tabledefs
    for each b in a.tabledefs
     debug b.name
    next大概就是这个意思,也许有小错,您先试试。
      

  7.   

    Database 和 DatabaseName 属性示例
    这个例子检查数据控件的 Database 属性并在 Debug 窗口中输出每个 Table 的名称。Sub PrintTableNames ()
       Dim Td As TableDef
       ' 设置数据库文件。
       Data1.DatabaseName = "BIBLIO.MDB"
       Data1.Refresh   ' 打开数据库。
       ' 读入并输出数据库中每个表的名称。
       For Each Td in Data1.Database.TableDefs
          Debug.Print Td.Name
       Next
    End Sub
      

  8.   

    我自己用的一個函數﹐參數RCT1是List控件﹐此函數返回一個MDB中的所有表
    調用前先用DAO打開MDB
    Public Sub GetTableList(cnDase As Database, rctl As Control)
        Dim intX    As Integer
        Dim sTmp    As String
        Dim tbl     As TableDef
        
        On Error Resume Next
        rctl.Clear
        For Each tbl In cnDase.TableDefs
           sTmp = tbl.Name
           If (cnDase.TableDefs(sTmp).Attributes And dbSystemObject) = 0 Then
             rctl.AddItem sTmp
             rctl.ItemData(rctl.NewIndex) = 0
           End If
        Next
    End Sub
      

  9.   


    '---------------------------grid1-------------
    Grid1.Cols = 4
    Grid1.TextMatrix(0, 0) = "序号"
    Grid1.TextMatrix(0, 1) = "表名称"
    Grid1.TextMatrix(0, 2) = "字段数"
    Grid1.TextMatrix(0, 3) = "表中记录数"
    Grid1.ColWidth(0) = 800
    Grid1.ColWidth(3) = 1500
    Grid1.Rows = 10
    '--------------
    Dim dbs As Database
    Dim rst As Recordset
    Dim tdf As TableDef
    Set dbs = OpenDatabase(zhuan_2)
    For j = 0 To dbs.TableDefs.Count - 1
    If Left$(dbs.TableDefs(j).Name, 4) <> "MSys" Then
    i = i + 1
    'Grid1.AddItem Grid1.Rows + 1
    'Grid1.Rows = i + 1
    Grid1.TextMatrix(i, 0) = i
    Grid1.TextMatrix(i, 1) = dbs.TableDefs(j).Name
    Grid1.TextMatrix(i, 2) = dbs.TableDefs(j).Fields.Count
    Grid1.TextMatrix(i, 3) = dbs.TableDefs(j).RecordCount'dbs.TableDefs(i).Fields.Count
    'MsgBox dbs.TableDefs(i).RecordCount & "|" & dbs.TableDefs(i).Fields.Count
    End If
    Next j
    '---------------------------grid1-------------
    Grid1.Cols = 4
    Grid1.TextMatrix(0, 0) = "序号"
    Grid1.TextMatrix(0, 1) = "表名称"
    Grid1.TextMatrix(0, 2) = "字段数"
    Grid1.TextMatrix(0, 3) = "表中记录数"
    Grid1.ColWidth(0) = 800
    Grid1.ColWidth(3) = 1500
    Grid1.Rows = 10
    '--------------
    Dim dbs As Database
    Dim rst As Recordset
    Dim tdf As TableDef
    Set dbs = OpenDatabase(zhuan_2)
    For j = 0 To dbs.TableDefs.Count - 1
    i = i + 1
    'Grid1.AddItem Grid1.Rows + 1
    'Grid1.Rows = i + 1
    Grid1.TextMatrix(i, 0) = i
    Grid1.TextMatrix(i, 1) = dbs.TableDefs(j).Name
    Grid1.TextMatrix(i, 2) = dbs.TableDefs(j).Fields.Count
    Grid1.TextMatrix(i, 3) = dbs.TableDefs(j).RecordCount'dbs.TableDefs(i).Fields.Count
    'MsgBox dbs.TableDefs(i).RecordCount & "|" & dbs.TableDefs(i).Fields.Count
    Next j
    ++++++++++++++++++++++++++++++++++++++++
    问题:
    为什么我所得到的表中有五个是系统的?ms开头的!?
      

  10.   

    Set RS = Conn.OpenSchema(adSchemaCatalogs)
        While Not RS.EOF
            If Trim(RS!CATALOG_NAME) = "tempdb" Then RS.MoveNext
            If Trim(RS!CATALOG_NAME) = "master" Then RS.MoveNext
            If Trim(RS!CATALOG_NAME) = "model" Then RS.MoveNext
            If Trim(RS!CATALOG_NAME) = "temp" Then RS.MoveNext
            Msgbox RS!CATALOG_NAME
            RS.MoveNext
        Wend