Ms access 子窗体联接、主/子窗体、引用窗体控件或使用查询联接,哪一种更好
我是一名高级用户,希望讨论以下连接子窗体的方法的相对优点: 主窗体有3个字段:ID、month、year(为本次讨论简化了名称),显示相应的子窗体记录时需要这些字段。这是预算,因此有15个子表单以不同的方式显示财务数据 Mainform仅限于一个记录。必须关闭才能打开另一条记录 因此,有三种选择:Ms access 子窗体联接、主/子窗体、引用窗体控件或使用查询联接,哪一种更好,ms-access,Ms Access,我是一名高级用户,希望讨论以下连接子窗体的方法的相对优点: 主窗体有3个字段:ID、month、year(为本次讨论简化了名称),显示相应的子窗体记录时需要这些字段。这是预算,因此有15个子表单以不同的方式显示财务数据 Mainform仅限于一个记录。必须关闭才能打开另一条记录 因此,有三种选择: 使用主/子ID加入子窗体。子窗体查询仍需要2个附加条件。这似乎是最糟糕的解决方案,因为主窗体只有一个记录 子表单查询引用表单控件(mainform!ID,etc)作为条件 子窗体查询在每个条件上与ma
感谢各位,stackoverflow是网络上最好的站点。不清楚您所说的15个子表单是同时显示在主表单上,还是一次只显示一个子表单,因为它是从15个可能的子表单列表中动态选择的 如果您正在显示所有这些查询,那么可能会有很多,而且执行这15个查询并在表单打开时呈现它们肯定需要一段时间 1.主/详细链接 您可以链接主窗体/子窗体上的多个字段,因此不限于单个字段: 2.子窗体中的父引用 并不总是优雅的,但它们工作得很好,因为您不允许用户更改主窗体的字段。如果是,可能在某些情况下需要重新查询子窗体,以确保它们在更改后更新 3.联接查询 不完全确定你的实际意思
一些评论 由于您(正确地)关注性能,这里有一些对您的情况可能有帮助,也可能没有帮助的建议:
- 考虑是否真的需要一次显示那么多子窗体。
是否可以将它们拆分为较小的组,以显示在选项卡控制页中?
如果是这样,当用户选择选项卡时,您可以轻松地按需加载它们。这样,您只需在第一个选项卡上加载最重要的子表单,然后,如果用户需要更多信息,她可以单击另一个选项卡页面以加载更多数据 - Access总是非常努力地限制获取的数据量,因此如果您定义了主/详细链接,或者如果您是用户
条件在子表单的Parent!ID
子句中,它们应该只提取过滤后的数据,而不是所有数据。WHERE
这就是说,请确保在这些字段上设置了适当的索引,否则性能会非常差,数据库引擎需要先提取所有数据,然后才能对其进行过滤,而不是依赖索引进行过滤 - 如果怀疑Access正在提取所需的更多数据,则始终可以使用在加载主窗体时动态设置的即席SQL来构造子窗体的查询。这将确保每个子窗体都具有所需的精确查询。同样,对于良好的性能,索引仍然和以往一样重要
- 如果需要显示大量数据,并且不需要每次打开主窗体时都计算这些数据,则可以将数据缓存到本地表中。
在查询中使用
语句将结果注入本地表,并仅使用该本地数据显示在子窗体中。INSERT-INTO
在主窗体上,只需跟踪上次刷新数据的时间,并在某处显示该日期和时间。您还可以添加一个按钮,这样他们可以再次手动刷新数据,或者在检测到数据过时时自动刷新数据
在Access中,总是有很多提高性能的策略。当然,在尝试解决问题之前,请确保您确实遇到了问题,因为解决问题需要更多的时间和资源,而不仅仅是让Access为您完成工作。谢谢您的指点,总是很有帮助的。我给人的印象是,只要索引正确(我相信是正确的),使用哪种方法关联子表单并不重要。我搜索了一种或另一种方法的内在性能优势,但没有成功。谢谢你抽出时间。