BIRT,如何使用 Javascript 获取数据集行数
BIRT, How to get Dataset Row Count using Javascript
如何从 BIRT 中的 Javascript 函数获取数据集行数。我尝试在 BIRT 交换中搜索它,但唯一提供的解决方案是让一个新数据集获取所需数据集的值计数。这不适合我的需要。
有什么方法可以使用数据集事件获取它吗?
一种简单的方法是对报表变量中的数据集项进行计数。
在您的报告大纲中声明一个新变量:
在数据集的beforeOpen脚本中重置(以防在报表执行期间多次调用此数据集):
变量["items"]=0;
增加数据集onFetch脚本中的变量:
变量["items"]++;
在任何表达式中使用您的变量。例如在报告正文中添加一个动态文本元素,例如:
"Items count="+vars[[=51=]]
重要 1:当且仅当数据集绑定到至少一个报表元素(table、图表、数据元素等时,此方法才有效。 ).例如,如果仅调用数据集来填充报表参数的选择列表,它将不起作用。
重要2:在报表正文中,这个变量只能在在第一个使用相关数据集的报表元素之后使用,否则不会初始化
多米尼克的回答很好;从你的问题中我不清楚这个更简单的解决方案是否也能满足你的需求。
在您的数据集中使用值为“1”的计算列,然后对这些值求和。
您可以编写仅在满足特定条件时才添加值的 JS。
或者您可以在报告中使用聚合来对值求和,这将在放置任何过滤器或组之后进行。
您还可以创建一个变量,然后为 table 中创建的每一行添加该变量。
例如,在Table-Detail 脚本中,设置一个onCreate 事件来检查每一行中的值,如果有则增加行数。以下 onCreate 脚本将检查该行是否为空。如果该行不为空,脚本会增加计数器并转到下一行。
var checker = this.getRowData().getExpressionCount();
if( checker > 0 ) vars["Counter"]++;
然后您可以使用以下表达式在 table 之后添加动态文本:
"Row count="+vars[[=18=]]
如果您在表格页脚中使用行号,则有一种更简单的方法:
在 'Dynamic Text' 元素中,您可以 select:
Avilable Column Bindings
> Table
> RowNum
添加 1 因为索引以 0.
开头
如何从 BIRT 中的 Javascript 函数获取数据集行数。我尝试在 BIRT 交换中搜索它,但唯一提供的解决方案是让一个新数据集获取所需数据集的值计数。这不适合我的需要。 有什么方法可以使用数据集事件获取它吗?
一种简单的方法是对报表变量中的数据集项进行计数。
在您的报告大纲中声明一个新变量:
在数据集的beforeOpen脚本中重置(以防在报表执行期间多次调用此数据集):
变量["items"]=0;
增加数据集onFetch脚本中的变量:
变量["items"]++;
在任何表达式中使用您的变量。例如在报告正文中添加一个动态文本元素,例如:
"Items count="+vars[[=51=]]
重要 1:当且仅当数据集绑定到至少一个报表元素(table、图表、数据元素等时,此方法才有效。 ).例如,如果仅调用数据集来填充报表参数的选择列表,它将不起作用。
重要2:在报表正文中,这个变量只能在在第一个使用相关数据集的报表元素之后使用,否则不会初始化
多米尼克的回答很好;从你的问题中我不清楚这个更简单的解决方案是否也能满足你的需求。
在您的数据集中使用值为“1”的计算列,然后对这些值求和。
您可以编写仅在满足特定条件时才添加值的 JS。
或者您可以在报告中使用聚合来对值求和,这将在放置任何过滤器或组之后进行。
您还可以创建一个变量,然后为 table 中创建的每一行添加该变量。
例如,在Table-Detail 脚本中,设置一个onCreate 事件来检查每一行中的值,如果有则增加行数。以下 onCreate 脚本将检查该行是否为空。如果该行不为空,脚本会增加计数器并转到下一行。
var checker = this.getRowData().getExpressionCount();
if( checker > 0 ) vars["Counter"]++;
然后您可以使用以下表达式在 table 之后添加动态文本: "Row count="+vars[[=18=]]
如果您在表格页脚中使用行号,则有一种更简单的方法:
在 'Dynamic Text' 元素中,您可以 select:
Avilable Column Bindings
> Table
> RowNum
添加 1 因为索引以 0.
开头