BIRT,如何使用Javascript获取数据集行数

时间:2015-04-21 11:16:19

标签: report birt

如何在BIRT中从Javascript函数获取数据集行数。我尝试在BIRT交换中搜索它,但是那里提供的唯一解决方案是让新数据集获取所需数据集的值。这不符合我的需要。 有没有办法使用数据集事件获取它。

4 个答案:

答案 0 :(得分:7)

一种简单的方法是对报表变量中的数据集项进行计数。

  • 在报告大纲中声明一个新变量: enter image description here

  • 在数据集的 beforeOpen 脚本中重置它(如果在报告执行期间多次调用此数据集):

    乏["项目"] = 0;

  • 增加数据集的 onFetch 脚本中的变量:

    乏["项目"] ++;

  • 在任何表达式中使用您的变量。例如,在报告正文中添加动态文本元素:

    "项目数=" + vars ["项目"]

重要1 :当且仅当数据集绑定到至少一个报表元素(表格,图表,数据元素等)时,此方法才有效。例如,如果仅调用数据集来填充报表参数的选择列表,则它将无法工作。

重要2 :在报告正文中,此变量只能在使用相关数据集的 第一个报表元素后使用,否则它不会被使用被初始化

答案 1 :(得分:1)

多米尼克有一个很好的答案;我的问题不清楚这个简单的解决方案是否也能满足您的需求。

在数据集中使用值为“1”的计算列,然后对值进行求和。

如果符合特定条件,您可以编写仅添加值的JS。

或者您可以在报表上使用汇总来对值进行求和,这些值将在放置任何过滤器或组之后。

答案 2 :(得分:0)

您还可以创建一个变量,然后为表中创建的每一行添加一个变量。

例如,在Table-Detail脚本中,设置onCreate事件以检查每行中的值以及是否有一行来增加行数。以下onCreate脚本将检查该行是否为空。如果该行不为空,则脚本会增加计数器并转到下一行。

var checker = this.getRowData().getExpressionCount();
if( checker > 0 ) vars["Counter"]++;

然后,您可以使用以下表达式在表后添加动态文本: “行数=”+变量[“计数器”]

答案 3 :(得分:0)

如果在表格页脚中使用行号,则有一种更简单的方法:

Row number

在“动态文本”元素中,您可以选择:

Avilable Column Bindings> Table> RowNum

添加 1 ,因为索引以 0 开头。