Format 事件

此頁沒有內容條目
內容

expandtri全部顯示

在 Microsoft Access 確定哪些數據屬于報表節(jié)之時、Microsoft Access 為預覽或打印而設置節(jié)的格式之前,F(xiàn)ormat 事件發(fā)生。

Private Sub sectionname_Format(Cancel As Integer, FormatCount As Integer)

SectionName    報表節(jié)的名稱。

Cancel    該設置確定是否設置節(jié)的格式。將 Cancel 參數設為 True (–1) 可取消設置節(jié)的格式。

FormatCount    整數值,該值指定節(jié)是否已經發(fā)生了多次 Format 事件。例如,如果一個節(jié)在一頁上放不下,則它的一部分會移至報表的下一頁,Microsoft Access 會將 FormatCount 參數設為 2。

說明

若要在此事件發(fā)生時運行事件過程,請將 OnFormat 屬性設置為宏的名稱或 [事件過程]。

在報表的每一節(jié)上都將發(fā)生 Format 事件。這使得用戶可以使用各節(jié)(包括沒有被打印的節(jié))中的數據,來進行復雜的計算。

對于報表主體節(jié),節(jié)中每一記錄的 Format 事件正好發(fā)生在 Microsoft Access 為記錄中的數據設置格式之前。Format 宏或事件過程都能訪問當前記錄中的數據。

對于報表組頁眉,F(xiàn)ormat 事件發(fā)生在每一個新的數據組中,F(xiàn)ormat 宏或事件過程可以訪問組頁眉中的數據,以及在主體節(jié)中第一條記錄中的數據。對于報表組頁腳,F(xiàn)ormat 事件同樣發(fā)生在每一個新的數據組中,F(xiàn)ormat 宏或事件過程可以訪問組頁腳中的數據,以及主體節(jié)中最后一條記錄中的數據。

在 Format 事件發(fā)生時運行宏或事件過程,可以使用當前記錄中的數據來更改報表,這將對頁面的布局產生影響。例如,在銷售報表中,可以根據銷售總和,在每個銷售人員的月銷售量旁邊顯示或隱藏祝賀消息。在控件被顯示或隱藏之后,Microsoft Access 使用格式屬性值來設置節(jié)的格式,格式屬性包括 CanGrow、CanShrink、HideDuplicatesKeepTogetherVisible。

對于不影響頁面布局的變動,或那些只有當頁面上的數據已經設置格式后才能運行的事件過程或宏(如用于打印頁總計的宏),請使用報表節(jié)的 Print 事件。

有時候 Microsoft Access 必須返回報表中前一個節(jié)來執(zhí)行多重格式設置。當這種情況發(fā)生時,Retreat 事件將在報表返回到前一個節(jié)時發(fā)生,而 Format 事件則在每節(jié)上多次發(fā)生。當發(fā)生了 Retreat 事件,來撤消在 Format 事件發(fā)生時對節(jié)所作的所有更改時,可以運行宏或事件過程。當 Format 宏或事件過程執(zhí)行一些對每一節(jié)只執(zhí)行一次的操作(如計算頁總計或控制節(jié)的大?。r,這些宏或事件過程尤其有用。

可以使用 FormatCount 屬性來檢查某個節(jié)是否多次發(fā)生了 Format 事件。例如,如果一個節(jié)在一頁內放不下,它的一部分就會移至報表的下一頁,而每一頁會發(fā)生一次 Format 事件,因此 FormatCount 屬性被設為 2??梢詸z查 FormatCount 屬性設置以確定每個節(jié)已經運行了多少次 Format 宏。

可以在 Format 宏中使用 CancelEvent 操作來取消設置節(jié)格式的操作。如果取消設置格式,Microsoft Access 將不設置該節(jié)的打印格式,而直接打印下一節(jié)。可以使用 CancelEvent 操作在打印時跳過報表中的某一節(jié),而且不會在頁面上留下空白。

示例

下面的示例顯示或隱藏一個計算控件(用于顯示每個銷售人員的銷售總額)旁邊的祝賀消息文本。打印銷售總額大于銷售目標的報表節(jié)時,一個名為“Message”的標簽會顯示消息“Congratulations! You have met your sales goal”。而在銷售總額小于銷售目標的節(jié)中,則隱藏該標簽。

要試用該示例,請將下面的事件過程添加到一個報表中,該報表包含一個標簽(名為“Message”)、一個文本框(名為“GrandTotal”,顯示銷售總額的計算控件)和一個主體節(jié)(名為“SalesDetail”)。

Private Sub SalesDetail_Format(Cancel As Integer, _

        FormatCount As Integer)

    Const conSalesGoal = 1000

    If Me!GrandTotal > conSalesGoal Then

        Me!Message.Visible = True

    Else

        Me!Message.Visible = False

    End If

End Sub