我用代码写:
Private Function tb_num(ByRef tb_name() As String)
Dim dbase As Database
Dim m As Long
Dim tbldef As TableDef
Set dbase = OpenDatabase(App.Path & "\database\" & database_niandu & "cbasedatadatabase.mdb") 'App.Path & "\database\" & database_niandu & "cbasedatadatabase.mdb"
For Each tbldef In dbase.TableDefs
tb_name(m) = tbldef.name
m = m + 1
Next
End Function但提示错误!!可能因为我的数据库是ACCESSXP,以上代码只能用与ACCESS97,是否?如果是,如何解决?

解决方案 »

  1.   

    Private  Sub  Form_Load()  
    Dim  adoCN  As  New  ADODB.Connection              '定义数据库的连接存放数据和代码Dim  rstSchema  
    Dim  strCnn  As  New  ADODB.Recordset  
                 
       str1  =  "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Program Files\Microsoft Visual Studio\VB98\NWIND.MDB;Persist Security Info=False"
      
       adoCN.Open  str1  
             
       Set  rstSchema  =  adoCN.OpenSchema(adSchemaTables)  
         
       Do  Until  rstSchema.EOF  
               out  =  out  &  "Table  name:  "  &  _  
                   rstSchema!TABLE_NAME  &  vbCr  &  _  
                   "Table  type:  "  &  rstSchema!TABLE_TYPE  &  vbCr  
               rstSchema.MoveNext  
       Loop  
       rstSchema.Close  
         
       adoCN.Close  
    Debug.Print  out  
    End  Sub  
    ---------------------------------------------------------------  
     
    sql  server:  
     
    select  name  from  sysobjects  where  xtype='u'  
     
     
    mysql  :  
       show  tables  
     
      

  2.   

    用ADO试试
    Dim conn As ADODB.Connection
    Dim rs As New ADODB.Recordset
    Dim str As String
    Set conn = New ADODB.Connection
    str = "Provider=Microsoft.Jet.OLEDB.4.0;Password='';User ID=Admin;Data Source=" + FrmOpen.Text1.Text + ";"
    conn.Open str
    Set rs = conn.OpenSchema(ADODB.SchemaEnum.adSchemaTables)
    Do Until rs.EOF
          
               If rs("table_Type").Value = "TABLE" Then
                    Form2.List1.AddItem (rs("table_Name").Value)
               End If
               rs.MoveNext
      Loop
    rs.Close
    conn.Close