更新Access链接表以使用UNC路径

时间:2013-03-18 09:21:35

标签: ms-access access-vba

我有一个Access 2010数据库 A.mdb ,其中包含一个表列表,其中一个是链接表,从另一个Access数据库 B.mdb 链接到同一台服务器这些数据库位于开发计算机xxx.xxx.xxx.xxx上,它在我的计算机上映射为R://,然后在yyy.yyy.yyy.yyy服务器上在线发布。

如果我想在本地处理数据库,我需要更改表的链接。但是,如果我通过文件系统更改它(使用“链接表管理器”),链接将变为R://....,当我查看请求这些数据的ASP页面时,它会被破坏,因为路径错误。此外,如果我在本地更改链接,它将无法在在线服务器上工作。

有没有办法以“编程方式”更改链接?也就是说,不使用链接表管理器?

我搜索了一个答案,但我不是那么专家,我只是明白我必须写一个“模块”? “宏”?

3 个答案:

答案 0 :(得分:15)

表链接可以是UNC路径。例如,假设我有一个指向\\192.168.1.2\Public\上的数据库的链接表,该数据库映射到驱动器P:。如果我启动VBA编辑器( Alt + F11 ),请打开立即窗口( Ctrl + G )和键入...

?CurrentDB.TableDefs("remoteTable").Connect

......它会回来......

;DATABASE=P:\B.accdb

...因为我在创建链接时指向了驱动器P:

现在,如果我创建并运行VBA函数......

Function linkToUnc()
Dim cdb As DAO.Database
Set cdb = CurrentDb
cdb.TableDefs("remoteTable").Connect = ";DATABASE=\\192.168.1.2\Public\B.accdb"
cdb.TableDefs("remoteTable").RefreshLink
Set cdb = Nothing
End Function

......链接现在是UNC路径。

顺便说一下,如果你浏览到“网络”,“机器名称”,“共享名称”,你可以在链接表管理器中创建UNC链接,但这会给你机器名称(在我的情况下{{1 }})。

答案 1 :(得分:0)

您可以右键单击链接表并选择链接表管理器。选择要处理的链接表,然后选中始终提示新位置的窗口旁边的复选框,然后单击“确定”按钮。

系统会要求您提供新位置。浏览并选择文件,然后单击“确定”。

答案 2 :(得分:0)

我喜欢在共享文件夹上设置文件DSN,该文件夹可通过对整个网络的读访问权限访问,然后使用链接表管理器访问UNC路径。为此,我使用链接表管理器并在我的桌面上设置文件DSN。然后,我将DSN文件复制并移动到共享的UNC目录。然后,我进入Access并删除链接表并重新创建链接表。为此,在删除链接表后,我执行以下操作:

  1. 我点击ODBC数据库 - >通过创建链接表链接到数据源 - >确定。
  2. 单击“选择数据源”窗口中的“文件数据源”选项卡。在对话框的底部,您将看到“DSN Name:”,后跟一个文本框和一个New Button。您将在该文本框中输入整个UNC路径和文件名(因此这指向您复制到UNC路径的文件)。例如,我输入\ ATD-SERVER1 \ AccessShare \ ContactsApp.accdb.dsn。然后单击确定。
  3. 假设您有链接到服务器的访问权限,将显示“链接表”对话框,然后您可以从那里选择链接表!如果他们尝试的话,微软就无法做到这一点。