如何组合 Access 2010 数据库并保持关系
Posted
技术标签:
【中文标题】如何组合 Access 2010 数据库并保持关系【英文标题】:How to combine Access 2010 databases and keep relationships 【发布时间】:2016-06-03 17:00:38 【问题描述】:我正在开发一个现有的 MS Access 2010 应用程序,它有 9 个单独的 .accdb 文件。这些数据库中有 7 个由一个本地表和几个链接表组成,一个本地表与这些链接表具有外键关系。还有一个只有 15 个本地表的数据库,最后是一个包含表单/查询以及指向所有其他数据库中所有其他表的链接的数据库。
我希望最终得到一个“后端” .accdb 文件,其中所有表都存储在本地,一个“前端” .accdb 文件保存带有表链接的表单/查询。
我的具体问题是如何将保存 .accdb 文件的各种数据合并为一个。到目前为止我尝试过的所有操作(导入、转换为本地)都会导致错误或关系丢失。
一个简化的例子是:
Database 1 has
Local Table A
Linked Table B
Linked Table C
Linked Table D
Table A has relationships with B, C, D
Database 2 has
Local Table B
Linked Table C
Linked Table D
Linked Table E
Table B has relationships with C, D, E
Database 3 has
Local Tables C, D, E
我想最终得到一个后端 Db:
Database Z
Local Tables A, B, C, D, E with all relationships intact.
这可行吗?非常感谢任何建议。谢谢。
【问题讨论】:
所以外部数据\功能区上的导入不起作用?默认情况下,它导入关系并将链接表保留为链接对象(您可以在本地表中运行生成表查询)。 它可以工作,但结果可能是某些表的两个版本,一个是本地的,一个是链接的。我希望该过程足够智能,可以检测到导入的链接表指向目标数据库中的本地表,因此用导入关系中的本地等效替换链接表。 【参考方案1】:一种可能是在最终后端数据库中本地创建所有表,确保在“导入对象”对话框(在“选项>>”菜单下)取消选中关系。
然后添加来自 Microsoft 的代码(它很旧,但应该仍然可以使用):https://support.microsoft.com/en-us/kb/210302。使用它仅从每个单独的前端数据库导入关系。
请注意,如果任何关系具有相同的名称,它们将无法导入。
【讨论】:
谢谢 - 有趣的想法。不确定这是否会“按原样”对我有用,因为即使这些链接的对象在当前数据库中,导入的关系仍将使用链接表。但是,我可以将所有后端数据库(包括关系)导入一个数据库并修改 VBA 代码以“修复”每个关系。即关系与指向当前数据库中本地表的链接表的关系,修改关系以使用本地版本。最后,删除链接表。如果我尝试这个并且它有效,我会再次发布。 @Grayman 如果有帮助,我尝试将所有表作为本地表导入一个数据库。然后导入关系例程工作,即使引用的数据库有一个表作为链接。我认为只要名称相同就没有关系,但我不确定。希望其中一种方法对您有用。 谢谢。最终我不得不按照我之前的建议去做。即将所有表和关系导入一个后端数据库。关系已成功导入,但使用链接表而不是本地表。我使用 VBA 代码来查找这些关系,“克隆”它们并修改为使用本地表。然后必须删除原来的关系。以上是关于如何组合 Access 2010 数据库并保持关系的主要内容,如果未能解决你的问题,请参考以下文章