我有一个问题,但无法为其指定合适的标题。我需要将前端分发到 WAN 内的多个位置。后端表将位于每个人都可以 Access 的特定驱动器上。
我遇到的问题是,并非每个人都有包含映射到同一驱动器号的后端的驱动器。看来Access是通过路径(即H:\tables\backend)而不是服务器名称(wvadrive1\tables\backend)来指代后端的位置。
我知道我可以通过 VB 代码引用服务器名称而不是驱动器名称,但是当通过链接表管理器/外部数据设置链接表时, Access 似乎是根据驱动器号进行映射的。
是否有一个简单的解决方案可以确保我向其分发此内容的每个人都能正确链接他们的表?我可以在第一次打开数据库时运行一些 VBA 来映射链接表吗?
谢谢!
最佳答案
使用 VBA 更改 TableDef.Connect
属性以指向文件共享(UNC 路径)而不是驱动器号。
在最简单的情况下,所有用户都可以使用相同的 UNC 路径,并且所有链接表都位于同一个数据库文件中...
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 文件本地副本运行类似的过程。
请注意,代码只会更改 Access 表的链接。到其他数据源(ODBC、Excel、文本文件等)的链接将被忽略。
如果您需要链接到多个 Access 后端数据库中的表,请使用包含数据库路径和表/链接名称的单独表。然后,您可以将该表作为记录集打开,并循环遍历它以根据需要更改/创建链接。
关于vba - 如何分配前端与指向不同驱动器号的链接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14780871/