将参数从主报表中的表传递到子报表

时间:2014-10-17 09:28:45

标签: jasper-reports subreport

我想将主报表中的表字段传递给子报表作为 JasperReports

中的参数
<jasperReport xmlns ---- >
    <subDataset name="tableDataset" >
    <queryString>
        <![CDATA[{select * from person]]>
    </queryString>
    <field name="ID" class="java.lang.Integer"/>
    </subDataset>
        <title>
            <jr:table >
                <jr:column width="133" >
                    <jr:detailCell >
                        <textField>
                            <textFieldExpression><![CDATA[$F{ID}]]></textFieldExpression>
                        </textField>
                    </jr:detailCell>
                </jr:column>
                ---
                --
                </jr:table>
        </title>
        <summary>
                <subreport>
<subreportParameter name="ID">
                <subreportParameterExpression><![CDATA[$F{ID}]]>     </subreportParameterExpression>
            </subreportParameter>
                    <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
                    <subreportExpression><![CDATA["phonemumbers.jasper"]]></subreportExpression>
                </subreport>


        </summary>
</jasperReport>

我将参数传递给子报告,如上所示,但在找不到字段时收到错误

1 个答案:

答案 0 :(得分:0)

您将字段作为参数从主报表传递到子报表的方式是正确的。但是您不能直接在子报表中使用此参数。您必须先捕获子报表中的参数,然后再使用它。将以下行添加到子报告(仅在<import>之后和<queryString>之前):

<parameter name="ID" class="java.lang.Integer" isForPrompting="false"/>

现在在子报告中使用它:

$P{ID}