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不確定如何處理您要求的操作。

通常情況下,您正在描述的報告將以相反方式進行設計:報告的數據源將包含所有項目信息。是否有關於您試圖顯示的數據的某些信息阻止您構建包含所有數據的查詢?