BIRT - 从多个数据集中添加总计

时间:2009-08-04 14:47:40

标签: eclipse reporting birt

我在BIRT中有一份报告,我想在最后添加摘要。

该报告是3个具有自己的数据集的表。我想要显示第四个表格,其中包含摘要信息和总计。我无法计算总计。

例如:

DataSet #1
col1 | col 2 | Total
   x |     x |     x
   x |     x |     x
                  xx


DataSet #2
col1 | col 2 | Total
   x |     x |     x
   x |     x |     x
                  xx

DataSet #3
col1 | col 2 | Total
   x |     x |     x
   x |     x |     x
                  xx


Summary
Total DataSet #1 |  xx
Total DataSet #2 |  xx
Total DataSet #3 |  xx
Grand Total      | xxx

1 个答案:

答案 0 :(得分:3)

您已经在前三个表中的每个表中创建了必要的小计(通过我猜的组)。在具有Grand Total的表格单元格的create scripting事件中,设置持久性全局变量以跟踪每个子总计。然后,您可以访问第四个和最后一个表中的每个值。

设置变量:

var totalValue = this.getDataRowData().getColumnValue("totalColumnName");
reportContext.setPersistentGlbalVariable("DataSet1Total", totalValue.toString());

注意:您需要将总计发送到“字符串”类型以确保序列化。在渲染最终摘要表时,可以将其转换回数字。

要使用该变量,请在报表中添加“文本”控件(在“汇总表”的单元格中)。在文本控件的onCreate脚本事件中,输入以下内容:

this.text = reportContext.getPersistentGlobalVariable("DataSet1Total");

您可以为之前保留的每个摘要字段执行此操作。然后对于总计,你可以这样做:

this.text = parseInt(reportContext.getPersistentGlobalVariable("DataSet1Total")) + parseInt(reportContext.getPersistentGlobalVariable("DataSet2Total")) + parseInt(reportContext.getPersistentGlobalVariable("DataSet3Total"));

持久性全局变量只是一个可序列化的值,可以跨报表中的组件边界访问。对于像你这样的要求,它可以非常方便。

祝你好运!