1

我是一名高级用户,正在寻找以下连接子表单方式的相对优点的讨论:

主表单有 3 个字段:ID、月份、年份(为本次讨论简化的名称)需要显示适当的子表单记录。这是预算,因此有 15 个子表格以不同方式显示财务数据。

Mainform 仅限于一条记录。必须关闭才能打开另一条记录。

所以三个选项是:

  1. 使用主/子将子表单加入到 ID。子表单查询仍然需要 2 个附加条件。这似乎是最糟糕的解决方案,因为主窗体只有一个记录。

  2. 子表单查询引用表单控件(mainform!ID 等)作为条件。

  3. 子表单查询有 1-1 个连接到每个条件上的主表单查询,总共三个连接。

请注意,网络上的数据传输是一个主要问题。

谢谢大家,stackoverflow 是网上最好的网站。

4

1 回答 1

0

目前尚不清楚您是在谈论 15 个子表单都同时显示在主表单上,还是一次仅显示一个子表单,因为它是从 15 个可能的列表中动态选择的。

如果您要显示所有这些,那么可能会很多,并且执行这 15 个查询并在表单打开时呈现它们肯定需要一段时间。

1.主/详细链接

您可以链接主表单/子表单上的多个字段,因此您不限于单个字段:

主窗体/子窗体链接

主窗体/子窗体链接编辑器

2.子表单中的父引用

并不总是优雅,但它们工作正常,因为您不让用户更改主表单的字段。如果是这样,在某些情况下,您可能需要重新查询子表单以确保它们在更改后更新。

3. 联合查询

实际上,不完全确定您的意思。


一些评论

由于您(正确地)关注性能,因此这里有一些对您的情况可能有帮助或无帮助的提示:

  • 考虑一下您是否真的需要一次显示那么多子表单。
    是否可以将它们拆分为可以显示在选项卡控制页面中的较小组?
    如果是这种情况,您可以在用户选择选项卡时轻松按需加载它们。这样,您只在第一个选项卡上加载最重要的子表单,然后,如果用户需要更多信息,她可以单击另一个将加载更多数据的选项卡页面。

  • Access 总是非常努力地限制获取的数据量,因此如果您定义了主/详细链接或者如果您Parent!ID在子表单的WHERE子句中使用标准,他们应该只提取过滤后的数据,而不是所有内容。
    也就是说,请确保您在这些字段上设置了正确的索引,否则性能会很差,并且数据库引擎需要在过滤之前提取所有数据,而不是依赖索引来执行此操作。

  • 如果您怀疑 Access 正在提取更多所需的数据,您始终可以使用在加载主表单时动态设置的临时 SQL 构建子表单的查询。这将确保每个子表单都有准确的查询需求。同样,对于良好的性能,索引仍然与以往一样重要。

  • 如果需要显示大量数据,并且不需要每次打开主窗体时都计算这些数据,则可以将数据缓存到本地表中。
    使用INSERT INTO带有查询的语句将结果注入本地表中,并且仅使用该本地数据显示在您的子表单中。
    在您的主窗体上,只需跟踪上次刷新数据的时间并在某处显示该日期和时间。您还可以添加一个按钮,以便他们可以再次手动刷新数据,或者在您检测到数据过时时自动刷新。

Access 中总是有很多提高性能的策略。当然,在尝试解决问题之前,请确保您确实遇到了问题,因为它需要更多的时间和资源来解决,而不仅仅是让 Access 为您完成工作。

于 2013-09-07T07:09:38.600 回答