如何在另一个DB中使用Query作为Form的RecordSource?

时间:2009-07-09 18:04:45

标签: ms-access forms vba ms-access-2007 access-vba

我正在尝试将数据库分成两部分 - 一个自动更新的后端,以及一个允许搜索和添加/编辑注释的前端。源数据库中的数据从多个表一起拉到一对查询中,我想将这些查询用作当前数据库的源。

Access 2007支持将数据库分成多个部分,但不是我想要的方式。它将表保留在源数据库中,并将所有表单,查询,报表和宏放入新数据库中。表和查询已经在后端,这个新数据库应该只为最终用户提供良好的GUI。

Access 2007还支持链接表,但这些只能使用表作为源,而不是查询对象。

我认为最好的方法是按照

的方式进行SQL查询
SELECT * FROM SourceQuery IN "C:\Path\To\ExternalDB.accdb";

我正在朝着哪个方向努力,这是最好的方法吗?

由于项目仍然处于相对较早的阶段,因此重新架构数据库并非不可能,但这是我宁愿避免的。

2 个答案:

答案 0 :(得分:1)

希望我能正确理解您,但最明智的解决方案是链接后端数据库中的表并将查询复制到UI数据库。这些查询仍然可以无问题地访问uderlying表(通过链接表),并且可以通过常规方式访问表单和VBA代码。

您是否有特殊原因要求UI数据库中的查询?

答案 1 :(得分:1)

您正确描述了通常的Access BE-FE部门:只有后端的表。我知道不是所有的DB程序都这样做,但这是Access,我的方法是尊重通常的部门。 (而且你几乎没有选择,因为你无法在Access中“链接到查询”。)

审核你的评论('有一个特定的原因......'),我认为这可能意味着

  1. 在后端添加几个表,主要是存储桶(导入数据,就绪形式;导出1;导出2),允许所有用户获得一致的处理数据;
  2. 制作一个位于BE旁边的小型管理员FE,并存储您的模块,导出查询和导出例程;和
  3. 对用户FE进行一些冗余查询。这在我自己的工作中很烦人。我只是尝试在这些角色中设计坚固稳定的“构建块”查询,并将其数量保持在最低限度。