【问题标题】:Can BIRT use the output of one table to another table - different datasets?BIRT 可以使用一个表的输出到另一个表 - 不同的数据集吗?
【发布时间】:2014-06-13 14:46:28
【问题描述】:

我遇到的问题是:

我有一个表格,其中包含一个数据集 X 的输出,在输出字段中我有一个 COUNT 聚合,它返回一个数字。

我想做的是:在另一个已经有另一个数据集 Y 的表中使用这个数字, 我想要直接由我的聚合 COUNT 处理的最终数字。 在这种情况下,表格的关节没有用,因为它不会返回处理过的“数字”。

【问题讨论】:

    标签: java mysql sql report birt


    【解决方案1】:

    一个聪明的方法是创建一个报告变量来存储数据集X的聚合。例如我们将它命名为aggregationX:

    创建变量后,点击表X中的聚合数据->脚本->onCreate

    输入这个脚本:

    vars["aggregationX"]=this.getValue();
    

    然后,您可以在聚合 X 之后放置的报表元素的所有表达式中使用 vars["aggregationX"]:在数据集 Y 的计算列、表 Y 的数据绑定、过滤器、排序表达式、突出显示表达式、动态文本等中。

    【讨论】:

    • 我更喜欢 vars["aggregationX"] = row["Aggregation"]; (但请参阅我关于命名列绑定的答案)。
    • 非常好,很有帮助
    【解决方案2】:

    第一条规则:始终为列绑定提供有意义的名称(不仅仅是:“Aggregation”,而是“numRows”或类似名称)!

    第二条规则:报告变量是全局变量,因此它们被认为是不好的做法 - 仅当您没有找到任何其他解决方案时才使用它们。

    在最常见的情况下,您可以将表(基于数据集)y 放入表 x 的详细信息行中。然后您可以使用语法 row._outer["numRows"] 访问计数。 如果你还需要数据集y中的计数,你可以很容易地将它作为数据集参数传递(使用绑定选项卡中的“参数绑定”按钮)。

    如果(出于任何原因)您的布局不允许您将表 y 放在表 x 的详细信息行中,您只需要 Dominique 提供的报表变量解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-27
      • 1970-01-01
      • 2020-05-07
      • 2012-07-27
      • 2016-09-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多