1

我在 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
4

1 回答 1

3

您已经在前三个表中创建了必要的小计(我猜是通过一个组)。在包含总计的表格单元格的创建脚本事件中,设置一个持久全局变量来跟踪每个小计。然后,您可以访问第四个也是最后一个表中的每个值。

设置变量:

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"));

持久全局变量只是一个可序列化的值,可以跨报表内的组件边界访问。它可以非常方便地满足您的需求。

祝你好运!

于 2009-08-04T21:24:02.177 回答