在 Access 中为尚不存在的路径设置链接表?



我们如何在路径尚不存在的地方设置链接表?

我们需要在 Access 中设置一个链接表,以便最终在未安装 MS Access 的客户环境中使用(Access 数据库只是通过 Jet 用作后端)。

我们可以在客户的网站上使用Jet&DDL在他们的.mdb中创建/编辑/删除表,但据我所知,您无法使用DDL创建链接表。

理论上,我们可以在这里创建链接表(我们有 Access 的地方)并使用 VBA 指定"无效"路径,如下所示(假设乞力马扎罗山是客户的服务器,我们的网络上不存在):

Function SetLinkedTablePath(tableName As String)
    Dim cdb As DAO.Database
    Set cdb = CurrentDb
    cdb.TableDefs(tableName).Connect = ";DATABASE=\KilimanjaroFoo-Data.mdb"
    cdb.TableDefs(tableName).RefreshLink
    Set cdb = Nothing
End Function

但是,.RefreshLink行尝试验证路径,因此在我们的网络上失败。

如果我们注释掉.RefreshLink行并运行它,它可以很好地执行,但是在 Access 中检查链接表管理器的新路径尚未采用。

有什么解决方案吗?我们宁愿不使用映射驱动器。

如果您的本地网络上没有名为 Kilimanjaro 的实际服务器,那么您可以编辑计算机上的hosts文件以"愚弄"它,使其认为有一个。我刚刚在Access 2010上尝试了这个,它对我有用:

我"以管理员身份"打开了 Windows 命令提示符并发出了命令

notepad C:WindowsSystem32driversetchosts

我在文件末尾添加了一行,如下所示

192.168.1.109   Kilimanjaro

其中192.168.1.109是我的本地测试服务器的 IPv4 地址(其真实名称不同)。我保存了更改并退出了记事本。

然后在 Access 中,我能够调整链接表的 .Connect 属性以指向\Kilimanjaro如下所示:

Dim cdb As DAO.Database, tbd As DAO.TableDef
Set cdb = CurrentDb
Set tbd = cdb.TableDefs("TableX")
tbd.Connect = ";DATABASE=\KilimanjaroPublicDatabase1.accdb"
tbd.RefreshLink
Set tbd = Nothing
Set cdb = Nothing

由于在该 UNC 路径上确实有一个名为 Database1.accdb 的文件,因此 Access 没有问题,我可以像往常一样在数据表视图中打开链接表。

最后,

我们在网络上取了一个备用虚拟机,并临时重命名它以匹配我们客户端的服务器(例如,将其称为\Kilimanjaro)。然后我们可以毫无问题地创建链接表。

这是不令人满意和不优雅的。但我会接受这个答案,因为它是我们的解决方案,但如果有人想出一个更巧妙的技巧,我很想听听。

相关内容

  • 没有找到相关文章

最新更新