Microsoft SQL Server和MySQL有我可以查詢的INFORMATION_SCHEMA表。但它不存在於MS Access數據庫中。如何從MS Access數據庫獲取表名?
有沒有相當於我可以使用的?
Microsoft SQL Server和MySQL有我可以查詢的INFORMATION_SCHEMA表。但它不存在於MS Access數據庫中。如何從MS Access數據庫獲取表名?
有沒有相當於我可以使用的?
要建立在伊利亞的答案請嘗試以下查詢:
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
由於還有一個額外的表被包括在內,似乎是某種系統表。
獲取表的列表:
SELECT
Table_Name = Name,
FROM
MSysObjects
WHERE
(Left([Name],1)<>"~")
AND (Left([Name],4) <> "MSys")
AND ([Type] In (1, 4, 6))
ORDER BY
Name
僅適用於舊的Access版本。 – 2012-06-25 18:05:41
MsysObjects不受支持的系統表,不應使用。 MS Access以外的這些表上的權限可能非常緊張。 – Fionnuala 2012-06-29 11:52:21
架構信息意味着'訪問')通過OLE DB提供商。
參見:
您可以在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
這有助於從Excel中讀取表名,謝謝! – enderland 2013-09-05 16:10:05
SELECT
Name
FROM
MSysObjects
WHERE
(Left([Name],1)<>"~")
AND (Left([Name],4) <> "MSys")
AND ([Type] In (1, 4, 6))
ORDER BY
Name
這是一個在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
最好不要亂用msysObjects(恕我直言)
CurrentDB.TableDefs
CurrentDB.QueryDefs
CurrentProject.AllForms
CurrentProject.AllReports
CurrentProject.AllMacros
無法讀取記錄; 'MSysObjects'沒有讀取權限。 – 2009-07-05 15:59:20