2

我有一个问题,我很难为其设置合适的标题。我需要将前端分发到我们 WAN 中的多个位置。后端表将位于每个人都可以访问的特定驱动器上。

我遇到的问题是,并非每个人都拥有包含映射到相同驱动器号的后端的驱动器。Access 似乎通过路径(即 H:\tables\backend)而不是服务器名称(wvadrive1\tables\backend)来引用后端的位置。

我知道我可以通过 VB 代码引用服务器名称而不是驱动器名称,但是当通过链接表管理器/外部数据设置链接表时,似乎访问映射它基于驱动器号。

是否有一个简单的解决方案来确保我将其分发给的每个人都将他们的表格正确链接?我可以在第一次打开数据库时运行一些 VBA 来映射链接表吗?

谢谢!

4

1 回答 1

2

使用 VBA 将TableDef.Connect属性更改为指向文件共享(UNC 路径)而不是驱动器号。

在最简单的情况下,您的所有用户都可以使用相同的 UNC 路径,并且所有链接表都在同一个 db 文件中......

Const cstrUncPath As String = ";DATABASE=\\Server\ShareName\AnotherFolder\YourDb.mdb"
Dim db As DAO.database
Dim tdf As DAO.TableDef

Set db = CurrentDb
For Each tdf In db.TableDefs
    If tdf.Connect Like ";DATABASE=*" Then
        tdf.Connect = cstrUncPath
        tdf.RefreshLink
    End If
Next
Set tdf = Nothing
Set db = Nothing

在将 db 文件分发给用户之前对其执行此操作。如果您愿意,您可以随后从用户的 db 文件的本地副本运行类似的过程。

请注意,代码只会更改访问表的链接。到其他数据源(ODBC、Excel、文本文件等)的链接将被忽略。

如果您需要链接到多个 Access 后端数据库中的表,请使用包含数据库路径和表/链接名称的单独表。然后,您可以将该表作为记录集打开并循环访问以根据需要更改/创建链接。

于 2013-02-08T20:50:04.490 回答