1

我编写了一个 MS Access 2000 报告,该报告显示一个日历,每页一个月,项目添加到特定日期。基础记录源中的唯一数据是月份列表。该结构是通过 On Page 事件创建的,该事件还读取其他数据。

打开此报告时,我注意到第一页似乎没有触发 On Page 事件。(我将此归因于这样一个事实,即在缓存页面而不是显示页面时激活报表中的 On Page,例如 On Current for Access 表单。)

当显示报告时,我的解决方法是使用 On Activate 事件来强制 On Page 子例程运行,即使该事件尚未被调用。但是,当导出报表时,它不会触发 On Activate 事件,并且导出的第一页采用以下两种格式之一:1) 如果报表在 Access 中打开(即之前已触发 On Activate),则第一页是与显示的页面之后的页面或最后一页相同,除了正确的月份(来自基础记录源)2)如果报表未在 Access 中打开,则第一页仅包含报表设计中的结构查看(即很多空框)

我最好的解决方法是强制使用(否则毫无意义的)封面,以确保第一页不包含任何需要运行代码的内容,但这远非理想。我可以强制代码在导出的第一页运行吗?或者我可能误解了 On Page 的工作原理,我需要重组我的代码?(我还注意到 On Page 似乎在最后一页运行了两次)。

4

2 回答 2

1

我建议重组代码,以便在一个查询、多个查询或 VBA 中构建数据,然后使用新数据源打开报表。我可能还在家里有 Access 2000 可以检查,但在工作中我可以测试 2003 和 2007,并且在这两个版本中,在显示每个页面之前都会触发 OnPage 事件。如果您遇到不同的行为,我怀疑这是因为 Access 不确定如何处理您要求它执行的操作。

通常,像您所描述的那样的报告会以另一种方式设计:报告的数据源将包含所有项目信息。您尝试显示的数据是否存在阻止您构建包含所有数据的查询的内容?

于 2008-10-21T12:59:31.760 回答
0

您是否考虑过各个部分的 Format 事件,尤其是 Detail 部分?格式化或打印是操作报告的更常见的事件。

于 2008-10-21T09:18:25.747 回答