Search code examples
jasper-reportssubreport

Jasper subreport arent receiving any F{}


In my master report, I have a subreport tag:

<subreport>
    <subreportParameter name="quotaSanitarySeal">
        <subreportParameterExpression><![CDATA[$F{quotaSanitarySeal}]]>
        </subreportParameterExpression>
            </subreportParameter>
    <dataSourceExpression><![CDATA[$P{REPORT_DATA_SOURCE}]]></dataSourceExpression>
    <subreportExpression class="java.lang.String"><![CDATA[$P{SUBREPORT_DIR} + "subReportTest.jasper"]]>
    </subreportExpression>
</subreport>

But when I generate it, It doesn't show up the value of the field...

<textFieldExpression class="java.lang.String"><![CDATA[$F{quotaSanitarySeal} == 0.0 ? "" : $F{quotaSanitarySeal}]]></textFieldExpression>

What I'm missing? I must do something in my subReportTest?


Solution

  • When you pass a field or Variable or Parameter to sub-report. Those values will be stored inside Parameter section of subreport.

    So when you are passing a field, you have to create a respective Parameter field inside the sub-report, in your case create a parameter called "quotaSanitarySeal" in your sub report. Once you added the parameter, then you can pass a value to the parameter from a master report like below,

    <subreport>
        <subreportParameter name="quotaSanitarySeal">
            <subreportParameterExpression><![CDATA[$F{quotaSanitarySeal}]]>
            </subreportParameterExpression>
        </subreportParameter>
        <dataSourceExpression><![CDATA[$P{REPORT_DATA_SOURCE}]]</dataSourceExpression>
        <subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "subReportTest.jasper"]]></subreportExpression>
    </subreport>
    

    Once you have successfully passed the value then you can use the parameter like below inside the subreport,

    <textFieldExpression class="java.lang.String"><![CDATA[$P{quotaSanitarySeal} == 0.0 ? "" : $P{quotaSanitarySeal}]]></textFieldExpression>
    

    Note: For "subreportExpression", you need not set the type class="java.lang.String".

    Hope this helps.