问题描述
我的主报告中有一个子报告。
I have a sub report in my main report .
如果子报告没有返回任何行,我需要隐藏文本。
I need to hide a text if sub report returns no rows.
我试图获取子报告的记录数量,在主报告中添加一个新变量,并将其设置为的目标变量
<$ c的属性$ c> subreport(对于rount_count),但是当我运行主报表时,变量的值为null
I tried to get the number of records of subreport adding a new variable in main report and setting it as destination variable in return values
property of subreport(for rount_count)
, but when I run the main report, the value of variable is null
推荐答案
计算子报告中的记录
-
在主报告中定义变量
<variable name="subReportCount" class="java.lang.Integer"/>
调用子报告时,将返回参数设置为变量
<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>
此变量现在可用于 textField
,但是你需要小心,因为 textField
需要在正确的时间进行评估(在子报告执行之后) )。
This variable can now be used in a textField
, however you need to be careful since the textField
need's to be evaluate at the correct time (after subreport has been executed).
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>
评估时间:
一般情况下使用子报告
- 如果它在详细信息带中并在数据源上重复设置
evalutationTime =Band
- 如果它只出现一组
evalutationTime =Report
- if it is in detail band and is repeated on datasource set
evalutationTime="Band"
- if it's present only one set
evalutationTime="Report"
这篇关于如何从iReport中的子报表获取report_count的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!