Jasper报告检测当前页面中是否存在数据带或子报告

问题描述 投票:0回答:2

我正在用jasper开发报告。

主报告有几个子报告。

这些子报表中只有一个具有带注释编号的固定文本,类似这样。

my text<sup>(2)</sup>

在主报告中,我必须打印脚注,但只能在所有带有注释文本的页面中打印。

更好解释的图像:

enter image description here

  • 是否有可以检测当前页面中是否存在子报表的内容?
  • 或者是否允许检测当前页面中是否存在详细信息带?
  • 或者是允许检测是否在当前页面中打印特定文本的内容?
  • 或其他处理这种特殊情况的策略?
jasper-reports
2个回答
0
投票

。在主报告“ subReportCount”中创建变量类型=整数,默认0重置类型='页面'

。将此变量(隐藏)放置在Subreport之后。

。在subreport中创建变量'SubVar',表达式== $ V {REPORT_COUNT}

。在主菜单中,转到子报表属性->编辑返回值->设置从变量= SubVar,到变量= subReportCount,计算类型=总和

。表达式= $ V {subReportCount}> 0]时的页面页脚打印

如果尝试在页面上至少打印一次子报表,这可能会起作用。

作为评论中的建议,尝试了一下,并为我工作:

<variable name="MY_VAR" class="java.lang.Integer" resetType="Page">
    <initialValueExpression><![CDATA[0]]></initialValueExpression>
</variable>

...

        <subreport>
            <>...</>
            <returnValue subreportVariable="REPORT_COUNT" toVariable="MY_VAR"/>
            <>...</>
        </subreport>

...

        <textField>
            <>...</>
            <reportElement stretchType="RelativeToTallestObject" x="4" y="2" width="548" height="55" uuid="bbe4cbeb-3ba4-4023-93a9-a533ee772713">
                <printWhenExpression><![CDATA[$V{MY_VAR} > 0 ? new Boolean(true) : new Boolean(false)]]></printWhenExpression>
            </reportElement>
            <>...</>
            <textFieldExpression><![CDATA["<sup>(2)</sup> ..."]]></textFieldExpression>
            <>...</>
        </textField>

0
投票

作为评论中的建议,尝试了一下,并为我工作:

© www.soinside.com 2019 - 2024. All rights reserved.