ms-access中的相对表链接

时间:2009-11-02 15:00:13

标签: ms-access odbc oledb

我确信之前一定会被问过,但我找不到它。

我可以在Access 2003中设置链接表位置的相对路径吗?

另一个表也存储在mdb文件中。这些数据库有时会通过odbc或oledb连接,因此依赖于Access打开文件时触发的vba代码将无法正常工作。如果可能的话,我想保持数据库的“拆分”对连接的程序不可见,而不是每次必须检查正确的表链接。

由于评论而编辑:

更清楚地解释;我关注的用例是一组相互关联的访问数据库,它们都位于同一目录中。

如果将它们作为一个组进行复制,则所有链接仍然有效,但在更新之前,它们将指向错误的数据。 如果我在Access中打开mdb文件,一个简单的vba宏可以检查并在需要时更新链接。问题是,在当前设置中,数据库通过其他程序(通过oledb / odbc)更频繁地连接到,而不是通过在Access 中打开它们。

问题是:每次移动mdb文件时是否需要手动触发更新,或者是否有某种方法可以使A)使链接相对或B)在建立连接时触发检查?

由于这个目的是拆分现有数据库,我不想修改连接程序来运行这些检查,除非肯定是必要的,因此这个问题。

2 个答案:

答案 0 :(得分:1)

这是一个非常有趣的问题!正如Raj Moore建议的那样,当表格被链接时,路径变为绝对路径,因此选项A(使链接相对)将不起作用。

关于选项B,您必须自己拦截连接请求并运行必要的代码来重新链接表 - Access中没有内置的工具可以让您开箱即用。即使你确实有时间拼凑代码来做这件事,我想你会发现,在实践中,一旦你开始研究它的工作方式(例如,你是否重新思考每一个)都不是很可行请求?当第一个客户端运行查询时,当另一个客户端连接到数据库时会发生什么?如果单个客户端打开到同一个mdb的多个连接会发生什么?)

正如您所提到的,您可以更改您的客户端应用程序以在启动时重新链接表,这可以工作,但您仍可能需要考虑多个客户端尝试连接到同一后端mdb文件的情况( S)。即使不应该发生,也很可能。另一点需要考虑的是可维护性。跟随您的其他人是否会意识到客户端应用程序在启动时正在执行此重新链接,并且知道在新用户到达时不要简单地将连接字符串信息从一个客户端PC复制到另一个客户端PC?

我确信你有一个很好的理由将你的mdb分成两个文件,但鉴于我们正在处理的一小部分信息作为这个问题的一部分,我想知道分裂它们是否会提供足够的收益超过可能出现的潜在问题。

如果您必须拆分数据库,并在网络共享上维护这些生成的mdb文件的单独副本,我认为最安全的替代方法是编写一个VBA过程来重新链接数据库中的表使用相对路径。将文件复制到新目录时,只需执行一次该过程即可重新链接表。

答案 1 :(得分:0)

您可以使用相对路径链接表,但在链接时,会评估相对路径并将其转换为绝对路径。

如果要继续使用相对路径,则应该有一个AutoExec宏,用于触发在运行时从相对路径链接表的过程。

这当然会增加你的启动时间。