在 Microsoft Access 确定哪些数据属于报表的节之时、Microsoft Access 为预览或打印而设置节的格式之前,Format 事件发生。
Private Sub sectionname_Format(Cancel As Integer, FormatCount As Integer)
SectionName 报表节的名称。
Cancel 该设置确定是否设置节的格式。将 Cancel 参数设为 True (–1) 可取消设置节的格式。
FormatCount 整数值,该值指定节是否已经发生了多次 Format 事件。例如,如果一个节在一页上放不下,则它的一部分会移至报表的下一页,Microsoft Access 会将 FormatCount 参数设为 2。
若要在此事件发生时运行宏或事件过程,请将 OnFormat 属性设置为宏的名称或 [事件过程]。
在报表的每一节上都将发生 Format 事件。这使得用户可以使用各节(包括没有被打印的节)中的数据,来进行复杂的计算。
对于报表主体节,节中每一记录的 Format 事件正好发生在 Microsoft Access 为记录中的数据设置格式之前。Format 宏或事件过程都能访问当前记录中的数据。
对于报表组页眉,Format 事件发生在每一个新的数据组中,Format 宏或事件过程可以访问组页眉中的数据,以及在主体节中第一条记录中的数据。对于报表组页脚,Format 事件同样发生在每一个新的数据组中,Format 宏或事件过程可以访问组页脚中的数据,以及主体节中最后一条记录中的数据。
在 Format 事件发生时运行宏或事件过程,可以使用当前记录中的数据来更改报表,这将对页面的布局产生影响。例如,在销售报表中,可以根据销售总和,在每个销售人员的月销售量旁边显示或隐藏祝贺消息。在控件被显示或隐藏之后,Microsoft Access 使用格式属性值来设置节的格式,格式属性包括 CanGrow、CanShrink、HideDuplicates、KeepTogether 和 Visible。
对于不影响页面布局的变动,或那些只有当页面上的数据已经设置格式后才能运行的事件过程或宏(如用于打印页总计的宏),请使用报表节的 Print 事件。
有时候 Microsoft Access 必须返回报表中前一个节来执行多重格式设置。当这种情况发生时,Retreat 事件将在报表返回到前一个节时发生,而 Format 事件则在每节上多次发生。当发生了 Retreat 事件,来撤消在 Format 事件发生时对节所作的所有更改时,可以运行宏或事件过程。当 Format 宏或事件过程执行一些对每一节只执行一次的操作(如计算页总计或控制节的大小)时,这些宏或事件过程尤其有用。
可以使用 FormatCount 属性来检查某个节是否多次发生了 Format 事件。例如,如果一个节在一页内放不下,它的一部分就会移至报表的下一页,而每一页会发生一次 Format 事件,因此 FormatCount 属性被设为 2。可以检查 FormatCount 属性设置以确定每个节已经运行了多少次 Format 宏。
可以在 Format 宏中使用 CancelEvent 操作来取消设置节格式的操作。如果取消设置格式,Microsoft Access 将不设置该节的打印格式,而直接打印下一节。可以使用 CancelEvent 操作在打印时跳过报表中的某一节,而且不会在页面上留下空白。
下面的示例显示或隐藏一个计算控件(用于显示每个销售人员的销售总额)旁边的祝贺消息文本。打印销售总额大于销售目标的报表节时,一个名为“Message”的标签会显示消息“Congratulations! You have met your sales goal”。而在销售总额小于销售目标的节中,则隐藏该标签。
要试用该示例,请将下面的事件过程添加到一个报表中,该报表包含一个标签(名为“Message”)、一个文本框(名为“GrandTotal”,显示销售总额的计算控件)和一个主体节(名为“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