いくつかのサブレポートがあり、これらのサブレポートはすべて別々のバンドに含まれています。例えば空のバンドを隠すためにサブレポートから値を返す方法は?
:
...
<detail>
<band height="500">
<subreport>
<reportElement isPrintRepeatedValues="false" x="-10" y="0" width="325" height="1" isRemoveLineWhenBlank="true" backcolor="#ffcc99"/>
<dataSourceExpression><![CDATA[$P{DepartmentASubReportData}]]></dataSourceExpression>
<subreportExpression class="net.sf.jasperreports.engine.JasperReport">
<![CDATA[$P{DepartmentASubReport}]]></subreportExpression>
</subreport>
<break type="Page">
<reportElement x="-10" y="1" width="325" height="1" key="element-1"/>
</break>
</band>
<band height="500">
<subreport>
<reportElement isPrintRepeatedValues="false" x="-10" y="1" width="325" height="1" isRemoveLineWhenBlank="true" backcolor="#ffcc99"/>
<dataSourceExpression><![CDATA[$P{DepartmentBSubReportData}]]></dataSourceExpression>
<subreportExpression class="net.sf.jasperreports.engine.JasperReport">
<![CDATA[$P{DepartmentBSubReport}]]></subreportExpression>
</subreport>
<break type="Page">
<reportElement x="-10" y="1" width="325" height="1" key="element-2"/>
</break>
</band>
<band height="500">
<subreport>
<reportElement isPrintRepeatedValues="false" x="-10" y="1" width="325" height="1" isRemoveLineWhenBlank="true" backcolor="#ffcc99"/>
<dataSourceExpression><![CDATA[$P{DepartmentCSubReportData}]]></dataSourceExpression>
<subreportExpression class="net.sf.jasperreports.engine.JasperReport">
<![CDATA[$P{DepartmentCSubReport}]]></subreportExpression>
</subreport>
<break type="Page">
<reportElement x="-10" y="1" width="325" height="1" key="element-3"/>
</break>
</band>
...
...
サブレポートは要素が含まれていない場合、私は要素band
を非表示にしたいと思います。
変数SUB_REPORT_ROW_CNT
をサブレポートに追加し、レポートの行数(この場合はサブレポート)を含む変数REPORT_COUNT
にリンクしました。私は、次を追加したマスターレポートのすべてのバンドで
<variable name="SUB_REPORT_ROW_CNT" class="java.lang.Integer" resetType="Report" calculation="Nothing">
<variableExpression><![CDATA[$V{REPORT_COUNT}]]></variableExpression>
</variable>
:
<band height="500">
<printWhenExpression><![CDATA[$V{SUB_REPORT_ROW_CNT} != 0]]></printWhenExpression>
<subreport>
<reportElement isPrintRepeatedValues="false" x="-10" y="1" width="325" height="1" isRemoveLineWhenBlank="true" backcolor="#ffcc99"/>
<dataSourceExpression><![CDATA[$P{DepartmentASubReportData}]]></dataSourceExpression>
<returnValue subreportVariable="SUB_REPORT_ROW_CNT" toVariable="SUB_REPORT_ROW_CNT"/>
<subreportExpression class="net.sf.jasperreports.engine.JasperReport">
<![CDATA[$P{DepartmentASubReport}]]></subreportExpression>
</subreport>
<break type="Page">
<reportElement x="-10" y="1" width="325" height="1" key="element-2"/>
</break>
</band>
しかし表現$V{SUB_REPORT_ROW_CNT} != 0
は常にfalse
として評価されます。
変数の値を次のブロックを使用して印刷すると、私はいつもnull
になります。エラー何ができるか?...空のバンドを非表示にするには、サブレポートから値を返すためにどのように
<textField>
<reportElement x="8" y="40" width="540" height="18" />
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$V{SUB_REPORT_ROW_CNT}]]></textFieldExpression>
</textField>
?..
私は情報のために非常に感謝されます。ありがとうございます。
ここで 'evaluationTime =" Band "'を指定する場所... –
レコードがない場合、サブレポートを削除する関連する方法https://stackoverflow.com/q/34682494/5292302 –
ありがとう!やってみる。 –