我编写了一个MS Access 2000报告,该报告显示每页一个月的日历,并将项目添加到特定日期。基础记录源中的唯一数据是月份列表。该结构是通过On Page事件创建的,该事件还会读入其他数据。
打开此报告时,我注意到第一页似乎没有触发On Page事件。 (我将此归结为以下事实:当页面被缓存而不是显示页面时,会激活报表中的页面,例如On Current for Access表单。)
当显示报告时,我的解决方法是使用On Activate事件强制On Page子例程运行,即使该事件尚未被调用。但是,在导出报表时,它不会触发On Activate事件,导出的第一页采用以下两种格式之一: 1)如果报告在Access中打开(即先前已触发On Activate),则第一页与显示的页面或最后一页之后的页面相同,除非正确的月份(来自基础记录源) ) 2)如果报告未在Access中打开,则第一页仅包含报告设计视图中的结构(即大量空框)
我最好的解决方法是强制(否则没有意义)封面页以确保第一页不包含任何需要运行代码的内容,但这远非理想。我可以强制代码运行导出的第一页吗?或者我可能误解了On Page的工作方式,我需要重构我的代码? (我也注意到On Page似乎在最后一页上运行了两次)。
答案 0 :(得分:1)
我建议重构代码,以便在一个查询,多个查询或VBA中构建数据,然后使用新数据源打开报表。我可能仍然在家中使用Access 2000进行检查,但在工作中我可以测试2003和2007,并且在两个版本中,OnPage事件在每个页面显示之前触发。如果您遇到不同的行为,我怀疑是因为Access不确定如何处理您要求它执行的操作。
通常,您所描述的报告将以相反的方式设计:报告的数据源将包含所有项目信息。您尝试显示的数据是否会阻止您构建包含所有数据的查询?
答案 1 :(得分:0)
您是否考虑过各个部分的格式事件,尤其是详细信息部分?格式化或打印是操作报告的更常见事件。