如何从iReport

时间:2016-01-08 14:49:56

标签: jasper-reports

我的主报告中有一份子报告。

如果子报告没有返回任何行,我需要隐藏文本。

我试图获取子报表的记录数,在主报表中添加一个新变量,并将其设置为return values subreport(for rount_count)属性中的目标变量,但是当我运行主报表时,值变量为null

1 个答案:

答案 0 :(得分:6)

计算子报告中的记录

  1. 在主报告

    中定义变量
    <subreport>
        <reportElement x="100" y="20" width="400" height="20" uuid="a7a89ebb-54d4-4b6e-8c9f-c107e8a40bbb"/>
        <dataSourceExpression><![CDATA[... your datasource ...]]></dataSourceExpression>
        <returnValue subreportVariable="REPORT_COUNT" toVariable="subReportCount"/>
        <subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "Your_subreport.jasper"]]></subreportExpression>
    </subreport>
    
  2. 调用子报表时,将返回参数设置为变量

    textField
  3. 此变量现在可以在textField中使用,但是您需要小心,因为textField需要在正确的时间(在执行子报告之后)进行评估。

    <textField evaluationTime="Report" pattern="###0"> <reportElement positionType="Float" x="300" y="60" width="200" height="20" uuid="125aa2d0-3d4e-4377-bed1-b4531c9142c9"/> <textElement textAlignment="Right" verticalAlignment="Middle"/> <textFieldExpression><![CDATA[$V{subReportCount}]]></textFieldExpression> </textField> 上的媒体资源为evaluationTime

    实施例

    evalutationTime="Band"

    评估时间

      

    自动评估时间,表示参与的每个变量   表达式应在发动机决定的时间进行评估   乐队元素将在乐队结束时进行评估   一个常量,指定在填充每列后应计算表达式   一个常量,指定在每次分组后应评估表达式   用于主报告结束时评估的元素   现在一个常量,指定表达式应在填充过程中的恰好时刻进行评估。
      页面一个常量,指定在填充每个页面后应评估表达式。
      报告一个常量,指定应在填充过程结束时评估表达式。

    一般情况下使用子报告

    • 如果它在详细信息带中并在数据源集上重复 evalutationTime="Report"
    • 如果它只出现一组{{1}}