【发布时间】:2014-02-12 19:14:29
【问题描述】:
我们如何设置一个路径不存在的链接表?
我们需要在 Access 中设置一个链接表,以便最终在没有安装 MS Access 的客户环境中使用(Access 数据库只是通过 Jet 用作后端)。
我们可以在客户站点上使用 Jet 和 DDL 在他们的 .mdb 中创建/编辑/删除表,但据我所知,您无法使用 DDL 创建链接表。
理论上我们可以在这里创建链接表(我们可以访问的地方)并使用 VBA 指定“无效”路径(假设乞力马扎罗山是我们网络上不存在的客户服务器):
Function SetLinkedTablePath(tableName As String)
Dim cdb As DAO.Database
Set cdb = CurrentDb
cdb.TableDefs(tableName).Connect = ";DATABASE=\\Kilimanjaro\Foo-Data.mdb"
cdb.TableDefs(tableName).RefreshLink
Set cdb = Nothing
End Function
但是,.RefreshLink 行尝试验证路径,因此在我们的网络上失败了。
如果我们注释掉 .RefreshLink 行并运行它,它会执行得很好,但是在 Access 中检查 Linked Table Manager 并没有采用新路径。
有什么解决办法吗?我们不希望使用映射驱动器。
【问题讨论】:
-
为什么不删除链接表并重新创建它而不是依赖RefreshLink?
-
@ta.speot.is 那么我们如何使用尚不存在的路径重新创建它......这就是我要问的
-
我只是在说,如果您正在编辑现有的链接表并且
RefreshLink不起作用,那么您应该尝试删除链接表并重新创建它,这两种方法都不涉及调用@987654327 @。 microsoftaccessexpert.com/Microsoft-Access-Code-LinkTable.aspx -
@ta.speot.is 我已经测试了您链接到的代码。诚然,您链接到的代码不使用
.RefreshLinks,但它肯定会尝试验证myDB.TableDefs.Append行上的路径,并且如果路径不存在则无法创建链接表 -
好吧,如果这样做很关键,那么也许您可以弄乱系统表并在那里创建/编辑您的链接表。但是,不能保证它会起作用。 stackoverflow.com/questions/3994956/…
标签: ms-access ddl jet linked-tables