动态链接

问题描述:

我试图让表链接到后端在启动Access 2010中,动态链接

下面是代码:

dbs.TableDefs(intLoop - 1).Connect = ";DATABASE=" & strBack & strBackEnd 
Debug.Print (dbs.TableDefs(intLoop - 1).Connect) 
dbs.TableDefs(intLoop - 1).RefreshLink 

现在的连接是一个文件上C:或D:驱动器取决于PC设置。但不是连接到文件,而是打开系统DNS选择器窗口。

任何线索为什么?路径有效,数据库有效。

+0

'strBack&strBackEnd'输出是什么?它们分别是具有正斜杠Windows分隔符和扩展名的目录和基本名称吗? – Parfait

+0

是的,该字符串是有效的mdb文件的有效路径。它是RefreshLink打开dsn窗口 – Rob

+0

DSN设置启动的唯一原因是使用了ODBC链接表(非Access源)。 – Parfait

在评论你解释:

数据库具有本地表,连接到MDB文件的混合和链接 到SQLServer的。

可以处理该组合通过检查每个TableDef.Connect财产,只有改变那些链接到另一个Access数据库。

Dim dbs As DAO.Database 
Dim tdf As DAO.TableDef 

Set dbs = CurrentDb 
For Each tdf In dbs.TableDefs 
    With tdf 
     If .Connect Like ";DATABASE=*" Then 
      .Connect = ";DATABASE=" & strBack & strBackEnd 
      .RefreshLink 
     End If 
    End With 
Next 

该建议假设链接已经存在,而您只是试图改变它们的连接属性。如果您需要从头开始创建链接,请使用包含每个链接表信息的本地表格,然后使用该信息驱动链接创建。

+0

谢谢,一旦我释放我的错误,我有这种排序,但我会将其标记为可能在同一条路上漫步的其他人的答案, – Rob