我在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
答案 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"));
持久性全局变量只是一个可序列化的值,可以跨报表中的组件边界访问。对于像你这样的要求,它可以非常方便。
祝你好运!