vba - 如何分配前端与指向不同驱动器号的链接表

标签 vba ms-access networking

我有一个问题,但无法为其指定合适的标题。我需要将前端分发到 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/

相关文章:

vba - 在 Excel 中创建删除线宏

html - MS Access VBA 从 Web 浏览器控件的内容中获取数据

c - C Socket编程中的多个客户端

Excel 为文本分配自动编号

javascript - JavaScript 中的 VBA 等效项,用于 Google 表格的 Google Apps 脚本

c# - 无法从 C#.NET 更新 Access 数据库文件

networking - UDP 数据包大小和数据包丢失

windows - VBS : Check IP address and open URL (but only once)

vba - Excel vba - 多个条件和多个语句

java - 在java中获取无效游标状态异常