更改链接表源访问2016



我正在尝试更改Access 2016数据库中的链接,但我过去使用的方法无法按要求工作。

我正在使用

t.connect="new connection"
t.refreshlink

方法,其中t是表。

我在链接表管理器中看到,表现在按数据源分组。我可以创建新的源代码并将其链接到所需的表,但我有很多类似于迁移的内容,所以我想在代码中这样做。

我目前没有得到任何错误,但在.refreshlink之后,表的.connect仍然是一样的。

这还可能吗?

我目前用表名和它的现有连接来填充字典,但前提是非ODBC。

然后我循环浏览这本字典,获取表并更改其连接

CurrentDb.TableDefs(strTableName).Connect = strNewConnection
CurrentDb.TableDefs(strTableName).RefreshLink
Debug.Print CurrentDb.TableDefs(strTableName).Connect

现有连接=;DATABASE=\app01AccessCRM_Data.mdb新连接=;DATABASE=C:CRM_TESTCRM_DATA_BE_2016.accdb

非常感谢

更改表时不应使用CurrentDb.TableDefs,因为这会在调用之间发生变化,并使更改连接字符串时对tabledef的引用与刷新链接时的引用不同。

Dim d As DAO.Database
Set d = CurrentDb
d.TableDefs(strTableName).Connect = strNewConnection
d.TableDefs(strTableName).RefreshLink

AFAIK这种行为不依赖于版本,因此您提供的代码不应该起作用。

我在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

如果这对你的数据库不起作用,那么路径可能是错误的。

相关内容

  • 没有找到相关文章

最新更新