更改链接 Table 源访问 2016
Changing Linked Table Source Access 2016
我正在尝试更改 Access 2016 数据库中的 link,但我过去使用的方法无法按要求工作。
我正在使用
t.connect="new connection"
t.refreshlink
方法,其中 t 是 table.
我在 linked table 管理器中看到 table 现在按数据源分组。我可以创建新源并将其 link 到所需的 table,但我有很多迁移,所以想在代码中执行此操作。
我目前的方式没有错误,但在 .refreshlink
之后 table 的 .connect
仍然是一样的。
这还有可能吗?
我目前使用 table 名称填充字典并且它是现有连接,但前提是非 ODBC。
然后我循环遍历这本字典,获取 table 并更改其连接
CurrentDb.TableDefs(strTableName).Connect = strNewConnection
CurrentDb.TableDefs(strTableName).RefreshLink
Debug.Print CurrentDb.TableDefs(strTableName).Connect
现有连接 = ;DATABASE=\app01\Access\CRM_Data.mdb
新建连接=;DATABASE=C:\CRM_TEST\CRM_DATA_BE_2016.accdb
非常感谢
我在 Access 2016 中使用这段代码,它工作得很好:
Public Function RelinkTables(environment As Integer)
On Error Resume Next
Dim tblDef As DAO.TableDef
For Each tblDef In CurrentDb.TableDefs
If tblDef.Connect <> "" Then
tblDef.Connect = GetConnectionString(environment)
tblDef.RefreshLink
End If
Next
End Function
Public Function GetConnectionString(environment As Integer) As String
Select Case environment
Case 1 ' connection to Test db
GetConnectionString = "your connection string to Test"
Case 2 ' connection to Prod db
GetConnectionString = "your connection string to Production"
End Select
End Function
如果这对您的数据库不起作用,则可能是路径错误。
更改表时不应使用 CurrentDb.TableDefs
,因为这会在调用之间发生变化,并使对更改连接字符串的 tabledef 的引用与刷新 [=16] 的引用不同=].
Dim d As DAO.Database
Set d = CurrentDb
d.TableDefs(strTableName).Connect = strNewConnection
d.TableDefs(strTableName).RefreshLink
据我所知,此行为与版本无关,因此您提供的代码永远不会起作用。
我正在尝试更改 Access 2016 数据库中的 link,但我过去使用的方法无法按要求工作。
我正在使用
t.connect="new connection"
t.refreshlink
方法,其中 t 是 table.
我在 linked table 管理器中看到 table 现在按数据源分组。我可以创建新源并将其 link 到所需的 table,但我有很多迁移,所以想在代码中执行此操作。
我目前的方式没有错误,但在 .refreshlink
之后 table 的 .connect
仍然是一样的。
这还有可能吗?
我目前使用 table 名称填充字典并且它是现有连接,但前提是非 ODBC。
然后我循环遍历这本字典,获取 table 并更改其连接
CurrentDb.TableDefs(strTableName).Connect = strNewConnection
CurrentDb.TableDefs(strTableName).RefreshLink
Debug.Print CurrentDb.TableDefs(strTableName).Connect
现有连接 = ;DATABASE=\app01\Access\CRM_Data.mdb
新建连接=;DATABASE=C:\CRM_TEST\CRM_DATA_BE_2016.accdb
非常感谢
我在 Access 2016 中使用这段代码,它工作得很好:
Public Function RelinkTables(environment As Integer)
On Error Resume Next
Dim tblDef As DAO.TableDef
For Each tblDef In CurrentDb.TableDefs
If tblDef.Connect <> "" Then
tblDef.Connect = GetConnectionString(environment)
tblDef.RefreshLink
End If
Next
End Function
Public Function GetConnectionString(environment As Integer) As String
Select Case environment
Case 1 ' connection to Test db
GetConnectionString = "your connection string to Test"
Case 2 ' connection to Prod db
GetConnectionString = "your connection string to Production"
End Select
End Function
如果这对您的数据库不起作用,则可能是路径错误。
更改表时不应使用 CurrentDb.TableDefs
,因为这会在调用之间发生变化,并使对更改连接字符串的 tabledef 的引用与刷新 [=16] 的引用不同=].
Dim d As DAO.Database
Set d = CurrentDb
d.TableDefs(strTableName).Connect = strNewConnection
d.TableDefs(strTableName).RefreshLink
据我所知,此行为与版本无关,因此您提供的代码永远不会起作用。