Dim MyDatabase As Database
Dim MyTable As TableDef
set MyDatabase=OpenDatabase("D:\data\db1.mdb")
  For Each MyTable  In MyDatabase.TableDefs    
     Debug.Print MyTable.Name
  Next
这样也会把以下四个系统表搞出来。
MSysACEs
MSysObjects
MSysQueries
MSysRelationships用什么方法只获得用户建的表呢???

解决方案 »

  1.   

    '功能:获取access库中表的个数及表的名称
    '用ado怎样实现
    '工程--->引用--->Microsoft ActiveX Data Object 2.x(版本号)
    '----------------------------------------------------------------------------
    Private Sub Form_Load()
    Dim adoCN   As New ADODB.Connection                '定义数据库的连接
    Dim strCnn   As New ADODB.Recordset
    Dim I As Integer
       str1 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\Northwind.MDB;Persist Security Info=False"
       adoCN.Open str1
             
       Set rstSchema = adoCN.OpenSchema(adSchemaTables)
         
       Do Until rstSchema.EOF
            If rstSchema!TABLE_TYPE = "TABLE" Then '说明用户表
               out = out & "Table  name:  " & _
                   rstSchema!TABLE_NAME & vbCr & _
                   "Table  type:  " & rstSchema!TABLE_TYPE & vbCr
                I = I + 1
            End If
            rstSchema.MoveNext
       Loop
       MsgBox I
       rstSchema.Close
         
       adoCN.Close
    Debug.Print out
    End Sub
      

  2.   

    cn1.ConnectionString = "dsn=" & cboDSN1.Text & ";uid=" & txtUID1.Text & ";pwd=" & txtPWD1.Text
      cn1.Open
      
      Set rs = cn1.OpenSchema(adSchemaTables)
      
      lstTable1.Clear
      
      lblStatus1.Caption = "数据源连接成功,正在检索数据表..."
      
      DoEvents
      
      Do Until rs.EOF
        If Trim(rs!TABLE_TYPE) = "TABLE" Then lstTable1.AddItem Trim(rs!TABLE_NAME)
        rs.MoveNext
      Loop