我如何从MS Access数据库中获取表名?

Microsoft SQL Server和MySQL有我可以查询的INFORMATION_SCHEMA表。 但是它不存在于MS Access数据库中。

有没有相当于我可以使用的?

要build立伊利亚的答案尝试以下查询:

SELECT MSysObjects.Name AS table_name FROM MSysObjects WHERE (((Left([Name],1))<>"~") AND ((Left([Name],4))<>"MSys") AND ((MSysObjects.Type) In (1,4,6))) order by MSysObjects.Name 

(这个工作没有MDB修改)

ACCDB用户可能需要这样做

 SELECT MSysObjects.Name AS table_name FROM MSysObjects WHERE (((Left([Name],1))<>"~") AND ((Left([Name],4))<>"MSys") AND ((MSysObjects.Type) In (1,4,6)) AND ((MSysObjects.Flags)=0)) order by MSysObjects.Name 

因为有一个额外的表格被包括在内似乎是某种系统表格。

您可以在Access中使用架构。

 Sub ListAccessTables2(strDBPath) Dim cnnDB As ADODB.Connection Dim rstList As ADODB.Recordset Set cnnDB = New ADODB.Connection ' Open the connection. With cnnDB .Provider = "Microsoft.Jet.OLEDB.4.0" .Open strDBPath End With ' Open the tables schema rowset. Set rstList = cnnDB.OpenSchema(adSchemaTables) ' Loop through the results and print the ' names and types in the Immediate pane. With rstList Do While Not .EOF If .Fields("TABLE_TYPE") <> "VIEW" Then Debug.Print .Fields("TABLE_NAME") & vbTab & _ .Fields("TABLE_TYPE") End If .MoveNext Loop End With cnnDB.Close Set cnnDB = Nothing End Sub 

从: http : //msdn.microsoft.com/en-us/library/aa165325(office.10).aspx

这是一个在Access 2010 VBA中使用数据访问对象(DAO)的更新答案。 表的名字保存在TableDef.Name中。 所有表定义的集合保存在TableDefs中。 下面是循环遍历表名的一个简单例子:

 Dim db as Database Dim td as TableDef Set db = CurrentDb() For Each td In db.TableDefs YourSubTakingTableName(td.Name) Next td 

可以通过OLE DB提供程序为Jet / ACE引擎(我假设你的意思是“访问”)获取与SQL-92 INFORMATION_SCHEMA非常接近的模式信息。

看到:

OpenSchema方法(ADO)

支持的模式行集

获取表格列表:

 SELECT Table_Name = Name, FROM MSysObjects WHERE (Left([Name],1)<>"~") AND (Left([Name],4) <> "MSys") AND ([Type] In (1, 4, 6)) ORDER BY Name 
 SELECT Name FROM MSysObjects WHERE (Left([Name],1)<>"~") AND (Left([Name],4) <> "MSys") AND ([Type] In (1, 4, 6)) ORDER BY Name 

最好不要乱用msysObjects(恕我直言)。

 CurrentDB.TableDefs CurrentDB.QueryDefs CurrentProject.AllForms CurrentProject.AllReports CurrentProject.AllMacros