MS Access - 如何通过修改表来更改链接表路径

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 个表重命名数据库时,我无法修改路径。有什么办法可以通过修改表来修改链接表路径?

Eri*_*k A 5

是的,您可以通过 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)