我刚刚接手一家公司的 IT 工作,这家公司有大量包含本地表的 Access 数据库。一个数据库可能有 20 个本地表,其中 10 个表作为链接表链接到不同的数据库。
无需打开每个 Access 数据库,有没有办法从源表中判断它是否链接到不同的数据库,如果是,那么链接到哪一个数据库?
编辑 -->
这可能不是一个可行的解决方案,所以让我这样表述这个问题。如果我打开每个单独的数据库,是否有一个可以执行的脚本可以为我提供所有链接表的列表以及该表链接回的源数据库?
答案1
尝试这个:
Public Sub LoopThroughTables()
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Set db = CurrentDb
For Each tdf In db.TableDefs
' ignore system and temporary tables
If Not (tdf.Name Like "MSys*" Or tdf.Name Like "~*") Then
Debug.Print tdf.Name, tdf.Connect
End If
Next
Set tdf = Nothing
Set db = Nothing
End Sub
来源:如何循环遍历 MS Access DB 中的所有表(添加tdf.Connect
)
上述代码将列出每个表的名称以及该表的连接字符串。对于本地表,连接字符串将为空。
下面是来自 Access DB 的示例输出,该数据库有一个名为“LocalTable”的本地表和一个名为“LinkedTable”的链接表(链接到 Excel 文件):
LinkedTable Excel 12.0 Xml;HDR=YES;IMEX=2;ACCDB=YES;DATABASE=C:\Temp\temp.xlsx LocalTable