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

Report BIRT,如何使用Javascript获取数据集行数,report,birt,Report,Birt,如何从BIRT中的Javascript函数获取数据集行数。我曾尝试在BIRT exchange中搜索此数据集,但提供的唯一解决方案是使用一个新的数据集获取所需数据集的值计数。这不适合我的需要。 是否有任何方法可以使用数据集事件获取它。一种简单的方法是在报表变量中计算数据集项 在报告大纲中声明一个新变量: 在数据集的beforeOpen脚本中重置它(如果在报告执行期间多次调用此数据集): 变量[“项目”]=0 在数据集的onFetch脚本中增加变量: 变量[“项目”]+ 在任何表达式中使用变量

如何从BIRT中的Javascript函数获取数据集行数。我曾尝试在BIRT exchange中搜索此数据集,但提供的唯一解决方案是使用一个新的数据集获取所需数据集的值计数。这不适合我的需要。
是否有任何方法可以使用数据集事件获取它。

一种简单的方法是在报表变量中计算数据集项

  • 在报告大纲中声明一个新变量:

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

    变量[“项目”]=0

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

    变量[“项目”]+

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

    “项目计数=”+变量[“项目”]

重要1:当且仅当数据集绑定到至少一个报表元素(表、图表、数据元素等)时,此方法才有效。例如,如果调用dataset只是为了填充报表参数的选择选项列表,那么它将不起作用


重要2:在报告正文中,此变量只能在使用相关数据集的第一个报告元素之后使用,否则它将不会初始化Dominique有一个很好的答案;从你的问题来看,我不清楚这个更简单的解决方案是否也能满足你的需要

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

您可以编写只在满足特定条件时添加值的JS


或者,您可以在报表上使用聚合对值进行求和,这将在放置任何筛选器或组之后进行。

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

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

var checker = this.getRowData().getExpressionCount();
if( checker > 0 ) vars["Counter"]++;
然后,可以使用以下表达式在表后添加动态文本:
“Row count=“+vars[“Counter”]”

如果在表尾使用行号,有一种更简单的方法:

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

可用列绑定
RowNum


添加1,因为索引以0开始

非常感谢@Dominique,救了我一天!