【发布时间】:2011-12-05 16:56:30
【问题描述】:
我试图弄清楚当我构建和运行报告时 MS Access 如何处理打开的数据库对象。
我在每个报告中都有几十个查询,并且由于我的数据库是标准化的,每个查询都在查看许多不同的表。但是,我似乎总是达到打开这么多数据库对象的地步,Access 不会让我在报告中包含更多查询。我对如何生成报告的想法可能很幼稚,但我只是假设 Access 会运行查询,将数据放入报告中,关闭查询和所有关联对象,然后重复。但这似乎并非如此。
我关心的唯一原因是因为我想加快我的报告速度。我在某处读到,您不应该构建表格以使查询变得容易,但为了避免每次尝试运行报告时都会出现 7 或 8 分钟的空白,我重新构建了表格,因此查询在生成数据时可以使用更少的对象。这些表格在一定程度上仍然是标准化的,但我想唯一的缺点是我在技术上将计算存储在表格中。例如,我必须报告我们客户群的当前年龄,而不是使用简单的 switch 语句(这需要我查询保存生日的单独表)将它们分组,而是将年龄范围(18-22 、23-27 等)直接在表格中。
无论如何,如果有人能告诉我访问是如何关闭数据库对象的,也许我可以查明为什么我的报告如此缓慢。
谢谢
【问题讨论】:
-
当您说 Access 不会让您在报告中包含更多查询时,您指的是报告本身的 RecordSource 吗?平均而言,您将多少查询绑定到给定报告?
-
谷歌“JETSHOWPLAN”。查看 Jet/ACE 生成的准查询计划可能有助于为您解开谜团。它在识别应该被索引的字段时特别有用。
-
不是记录源本身,而是通过子报告。合并后,子报告使用了大约 80 个查询(如果算上子查询,大约是 110 个)
-
“每个报告中有几十个查询”?能给个样品吗?由于 Access 存在,我正在构建 Access(一些复杂的)应用程序,并且从不需要它。
-
您说您的表格已标准化。那你怎么能把客户的年龄放在一张桌子上???根据定义,这违反了规范化的基本规则。
标签: ms-access