BuildGroupHeader

在生成某个分组头之前执行。

e参数属性:

Book:      返回工作簿
TableName:  字符型,返回分组的表名
ColumnName:字符型,返回分组的列名
DataRow:   DataRow类型,返回此分组的第一个数据行
NewPage:   逻辑型,如果此分组头是因为换页而重复打印的,则返回True,否则返回False。

之前介绍的分组统计,统计结果只能在分组尾显示,有了BuildGroupHeader事件,我们就可以在分组头显示统计结果了。

示例

假定设计了一个报表模板,根据产品分组打印订单,希望在分组头打印金额和数量小计。

实现步骤

1、在设计模板的时候,在分组头插入两个标签: <数量合计>、<金额合计> 。

2、在BeforeBuild事件中,将两个标签插入到Marks集合:

Select Case e.Book.TempLate
    Case
"模板名称"
        e.Book.Marks.Add("数量合计", 0)
        e.Book.Marks.Add("金额合计", 0)
End Select

3、在BuildGroupHeader事件中加入代码:

Select Case e.Book.TempLate
    Case
"模板名称"
       
Dim Filter As String = "产品 = '" & e.Datarow("产品") & "'"
        e.Book.Marks("数量合计") = DataTables("订单").Compute("Sum(数量)",Filter)
        e.Book.Marks("金额合计") = DataTables("订单").Compute("Sum(金额)",Filter)
End
Select

提示,如果模板中有多个分组,需要用e参数TableName和ColumnName来判断是哪一个分组,例如:

Select Case e.Book.TempLate
    Case "模板名称"
       
If e.TableName = "订单" AndAlso e.ColumnName = "产品" Then
            Dim
Filter As String = "产品 = '" & e.Datarow("产品") & "'"
           
e.Book.Marks("数量合计") = DataTables("订单").Compute("Sum(数量)",Filter)
            e.Book.Marks("金额合计") = DataTables("订单").Compute("Sum(金额)",Filter)
        End If
End
Select


本页地址:http://www.foxtable.com/webhelp/topics/1958.htm