2008-10-21 57 views
1

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

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

当报告显示时,我的工作是使用On Activate事件强制On Page子例程运行,即使该事件尚未被调用。但是,导出报告时,它不会触发On Activate事件,并且导出的第一页采用以下两种格式之一: 1)如果报告在Access中打开(即先前已激活“激活”),则第一页与正在显示的页面之后的页面或最后一页相同,除了正确的月份(来自底层记录源) 2)如果报表在Access中未打开,则第一页仅包含报告设计视图(即大量空盒子)

我最好的解决方法是强制一个(否则毫无意义的)封面页以确保第一页包含任何需要代码运行的东西,但这远非理想。我可以强制代码运行导出的第一页吗?或者,也许我误解了页面上的工作方式,并且需要重构我的代码? (我也注意到On Page似乎在最后一页上运行两次)。

回答

0

您是否考虑过各个部分的Format事件,特别是Detail部分?格式化或打印是用于处理报告的更常见的事件。

1

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

通常情况下,您正在描述的报告将以相反方式进行设计:报告的数据源将包含所有项目信息。是否有关于您试图显示的数据的某些信息阻止您构建包含所有数据的查询?