【问题标题】:BIRT - Adding total from multiple datasetBIRT - 从多个数据集中添加总数
【发布时间】:2009-08-04 14:47:39
【问题描述】:

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

【问题讨论】:

    标签: eclipse reporting birt


    【解决方案1】:

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

    设置变量:

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

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

    祝你好运!

    【讨论】:

    • 我试过这样做,但它似乎不起作用。我的数据集总计是表聚合(SUM 函数) - 该字段位于页脚中。我尝试在似乎不起作用的表的 Render 方法中添加代码。我尝试将它添加到页脚文本字段的 Render 方法中,但这也不起作用。欢迎任何关于我可能做错了什么/如何解决它的建议
    • 最终的代码示例缺少对每次调用 getPersistentGlobalVariable() 的 reportContext 的引用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多