数据库是Access,需要知道各张表名,以及每张表的字段名,编程实现,可以用ADO
谢谢

解决方案 »

  1.   

    Access用ADO???这样就很难呢,用DAO就蛮轻松了
      

  2.   

    '*****
    ' ADO:
    '*****
    Public Sub OpenSchemaX() 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

    End Sub
      

  3.   

    '----------------------------------------------------------------------------
    '
    'Author:lihonggen0
    'Date:2003-6-19
    '功能:获取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
      

  4.   

    '----------------------------------------------------------------------------
    '
    'Author:lihonggen0
    'Date:2003-6-19
    '功能:获取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
      

  5.   

    http://expert.csdn.net/Expert/FAQ/FAQ_Index.asp?id=8159
      

  6.   

    to all
    可以找到表了,可是有很多系统表我不需要的,该怎么判断呢?
      

  7.   

    还有,同一张表为什么会出现两次如:xxx和xxxquery
      

  8.   

    是不是出来一些以MS打头的表,我今天刚解决这个问题:Dim Db As Database
    Dim MyTableDef As TableDef
    Dim check As BooleanSet Db = OpenDatabase(databace, True, False)
    For Each MyTableDef In Db.TableDefs()
    check = MyTableDef.Name Like "MS*"
        If check = False Then
            List1.AddItem MyTableDef.Name
        End If
            Next MyTableDef我用的是DAO,其中List1是ListBox控件.关键是用like运算符做的判断.
      

  9.   

    to all
    多谢各位,问题都解决了只差一个,我怎么取得各张表的字段名呢?
    如果问题很愚蠢,请见量。