【问题标题】:BIRT, How to get Dataset Row Count using JavascriptBIRT,如何使用 Javascript 获取数据集行数
【发布时间】:2015-04-21 11:16:18
【问题描述】:

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

【问题讨论】:

    标签: report birt


    【解决方案1】:

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

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

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

      vars["items"]=0;

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

      vars["items"]++;

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

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

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

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

    【讨论】:

    • 非常感谢@Dominique,拯救了我的一天!
    【解决方案2】:

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

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

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

    或者您可以在您的报告中使用聚合来对值求和,这将在放置任何过滤器或组之后。

    【讨论】:

      【解决方案3】:

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

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

      Avilable Column Bindings > Table > RowNum

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

      【讨论】:

        【解决方案4】:

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

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

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

        然后您可以使用以下表达式在表格后添加动态文本: "行数="+vars["计数器"]

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-10-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-05-05
          • 1970-01-01
          相关资源
          最近更新 更多