欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

Birt 的总功能

最编程 2024-04-03 13:05:21
...
所有聚集函数都允许使用两个可选参数来指示过滤和分组:

Total. <聚集函数> ( ..., filter, group )

关于过滤器参数
过滤器参数提供了一个布尔表达式,对于每一行,BIRT 都会对该表达式进行求值。在计算聚集时,BIRT 仅考虑与该过滤器匹配的行。例如,报告可以对活动客户的贷记限额进行求和,以确定最大贷记风险。

此表达式是在数据转换阶段执行的。它可以访问行中的列、参数、用户定义的函数以及上述上下文描述中定义的其他资源。例如:

Total.sum( row["CreditLimit"], row["Active"] == &apos;Y&apos; );

指定过滤器参数 null、未定义过滤器参数或者指定 Total.NO_FILTER,都表示未提供过滤器。如果应用程序未提供过滤器,则过滤器缺省为未定义。如果提供了组参数,则必须提供 null 或 Total.NO_FILTER 以指示不进行过滤。

关于组参数
报告经常需要显示当前分组级别的总计。例如,假定一个报告按客户和订单进行分组,并且详细信息记录表示订单中的行项。每个行项都有单位价格和数量,如以下聚集函数所示:

Total.sum( row["price"] * row["quantity"] )

此聚集函数对当前组的金额进行求和。如果将此聚集放在订单组脚中,则它将显示该订单的行项之和。如果将其放在客户组脚中,它就会显示该客户的所有订单的所有行项之和。并且,如果将其放在报告组脚中,它就会显示所有客户的所有行项之和。

但是,应用程序有时需要访问另一分组级别的总计。例如,您可能想了解一个订单的总金额在该客户所有订单中所占的百分比。在这种情况下,必须访问除当前组以外的组的总计。可以使用分组参数来实现此目的:

Total.sum( row.CreditLimit, null, "Customer" );

组参数可以是下列其中一项:

Null,这表示当前分组级别。
当前分组级别或更高分组级别的组的名称。此名称是报告设计中指定的名称。
当前分组级别或更高分组级别的组的组键表达式。
组级别的数字索引。0 表示整体总计,1 表示*别的组,依此类推。
相对组索引:-1 表示比此组高一级的组,-2 表示比此组高两级的组,依此类推。
特殊名称“Overall”,此名称引用数据集的整体总计。也可以使用静态属性 Total.OVERALL。
下列示例演示了三类组参数:

Total.sum( row["myCol"] null, null ); // 当前组
Total.sum( row["myCol"], null, "Customer" ); // 按名称
Total.sum( row["myCol"], null, "row[`custID']" ); // 按组键
Total.sum( row["myCol"], null, 1 ); // 按组索引
Total.sum( row["myCol"], null, "Overall" ); // 整体总计
Total.sum( row["myCol"], null, 0 ); // 整体总计

使用分组参数时,必须提供过滤器参数。如果不需要过滤器,请指定 null 作为过滤器值。不能将组索引括在引号中,它必须是数字。即,1 表示级别为 1 的组,而 "1" 表示名为 "1" 的组。