0

状況を説明しましょう: レポート A とサブレポート B および C があります。A は B を使用し、B は C を使用しますSUBREPORT_DIR。A のデフォルト値は です$P{CUSTOM_SUBREPORT_DIR}。A.jrxml には次のように表示されます。

<parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false">
    <defaultValueExpression><![CDATA[$P{CUSTOM_SUBREPORT_DIR}]]></defaultValueExpression>
</parameter>
<parameter name="CUSTOM_SUBREPORT_DIR" class="java.lang.String">
    <defaultValueExpression><![CDATA[]]></defaultValueExpression>
</parameter>

Bの適切な値も必要なSUBREPORT_DIRので、iReport (サブレポートのプロパティ/パラメーター) を使用して渡しましたA.jrxml

<subreportParameter name="SUBREPORT_DIR">
    <subreportParameterExpression><![CDATA[$P{SUBREPORT_DIR}]]></subreportParameterExpression>
</subreportParameter>

そして、レポート AI を生成しようとすると、net.sf.jasperreports.engine.JRException: Incompatible java.lang.Integer value assigned to parameter SUBREPORT_DIR in the B dataset.

$P{SUBREPORT_DIR}それは整数ではなく、SUBREPORT_DIRB サブレポートのパラメーターのタイプは文字列であると確信しています。iReport 4.0.2 を使用して作成したすべてのレポート。

4

1 に答える 1

0

次のことを試すことができます(私はこの方法でそれを行い、動作します):

レポート A でパラメーターを定義します。

<parameter name="SUBREPORT_B_DIR" class="java.lang.String" isForPrompting="false" />
<parameter name="SUBREPORT_C_DIR" class="java.lang.String" isForPrompting="false" />

レポート A でサブレポート B を定義します。ここでは、パラメーターからレポート B に DataSource を使用します。また、サブレポート C ディレクトリを使用してサブレポート B にパラメーターを送信し、レポート C の DataSource を使用して別のパラメーターを送信します。

<subreport>
    <reportElement x="0" y="16" width="583" height="10" />
    <subreportParameter name="SUBREPORT_C_DIR">
         <subreportParameterExpression><![CDATA[$P{SUBREPORT_C_DIR}]]></subreportParameterExpression>
    </subreportParameter>
    <subreportParameter name="SubReportCDataSource">
         <subreportParameterExpression><![CDATA[$P{SubReportCDataSource}]]></subreportParameterExpression>
    </subreportParameter>
    <dataSourceExpression><![CDATA[$P{SubReportBDataSource}]]></dataSourceExpression>
    <subreportExpression><![CDATA[$P{SUBREPORT_B_DIR} + "B.jasper"]]></subreportExpression>
</subreport>

最後に、サブレポート B で、サブレポート C を定義します。

<subreport>
        <reportElement x="0" y="16" width="583" height="10" />
        <dataSourceExpression><![CDATA[$P{SubReportCDataSource}]]></dataSourceExpression>
        <subreportExpression><![CDATA[$P{SUBREPORT_C_DIR} + "C.jasper"]]></subreportExpression>
    </subreport>
于 2012-06-06T15:48:18.270 に答える