use*_*seR 4 ms-access linked-tables
下面的查询允许我显示所有链接表及其对应的数据库路径
SELECT DISTINCTROW msysobjects.Name, msysobjects.Database, msysobjects.Connect
FROM msysobjects WHERE (((msysobjects.Type)=6 Or (msysobjects.Type) Like "dsn*")) ORDER BY msysobjects.Database;
Run Code Online (Sandbox Code Playgroud)
输出
Name Database Connect
Account Transactions C:\Users\Desktop\Database6_be.accdb
Categories C:\Users\Desktop\Database6_be.accdb
Filters C:\Users\Desktop\Database6_be.accdb
tblAuditLog C:\Users\Desktop\Database6_be.accdb
Run Code Online (Sandbox Code Playgroud)
当我为特定的 2 个表重命名数据库时,我无法修改路径。有什么办法可以通过修改表来修改链接表路径?
是的,您可以通过 VBA 或 GUI 来完成
通过 GUI (Access 2010):
您可以使用以下 VBA 子程序更改某些表上的连接字符串(您需要同时提供旧连接字符串和新连接字符串):
Public Sub ChangeConnection(OldStr As String, NewStr As String)
Dim td As DAO.TableDef
Dim db As DAO.Database
Set db = CurrentDb()
For Each td In db.TableDefs
With td
If .Connect = OldStr Then
.Connect = NewStr
.RefreshLink
End If
End With
Next td
End Sub
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用以下子项来更改一个特定的表
Public Sub ChangeTableConnection(Tablename As String, NewStr As String)
Dim td As DAO.TableDef
Dim db As DAO.Database
Set db = CurrentDb()
Set td = db.TableDefs(Tablename)
td.Connect = NewStr
td.RefreshLink
End Sub
Run Code Online (Sandbox Code Playgroud)