Jasper reports 在JasperStudio中将主参数传递给子数据集

Jasper reports 在JasperStudio中将主参数传递给子数据集,jasper-reports,report,Jasper Reports,Report,我用JasperStudio 5.5创建了一个报告,其中有许多在主数据集中定义的参数,以及许多需要这些参数的子数据集(用表定义) 情况: /主要/参数:myPar /main/mySubDataSet1/ /main/mySubDataSet2/ … /main/mySubDataSetN/ 子数据集需要在其查询中使用此参数:从选项卡t中选择*其中t.attr=$p!{myPar} 所以,我的问题是,子数据集无法在这个主要参数处访问,在我尝试编译的所有时间里,程序都向我发送“Parameter

我用JasperStudio 5.5创建了一个报告,其中有许多在主数据集中定义的参数,以及许多需要这些参数的子数据集(用表定义)

情况:

/主要/参数:myPar

/main/mySubDataSet1/
/main/mySubDataSet2/

/main/mySubDataSetN/

子数据集需要在其查询中使用此参数:从选项卡t中选择*其中t.attr=$p!{myPar}

所以,我的问题是,子数据集无法在这个主要参数处访问,在我尝试编译的所有时间里,程序都向我发送“Parameter not found:myPar”

如何在子数据集中使用myPar


p、 s:我读了这个线程(基于iReport),但没有成功…

好吧,您需要用实际使用的值填充子数据集参数。在这种情况下,列出子数据集中项目的表需要声明必要的参数,并将报表级数据集参数的值分配给它们

在jrxml中听起来:

<jr:table xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd">
    <datasetRun subDataset="mySubDataSet1" uuid="bbe7937c-a8f1-4838-811a-3f11ec1f8e35">
        <datasetParameter name="myPar">
            <datasetParameterExpression><![CDATA[$P{myPar}]]></datasetParameterExpression>
        </datasetParameter>
        <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
    </datasetRun>
    ...
</jr:table>

...
有关详细信息:

<subDataset name="dsLines" uuid="a47307ff-90a8-476f-afd1-0fd8aa0517d0">
<parameter name="formalId" class="java.lang.String"/>
<queryString language="SQL">
    <![CDATA[
        SELECT s.formalid, sl.*
        FROM salesorder s INNER JOIN salesorderline sl
        ON (s.id = sl.salesorder_id)
        WHERE s.formalid = $P{formalId}
    ]]>
</queryString>
<field name="qty" class="java.math.BigDecimal"/>
...

...


...

另一位用户向我发送了该方法:我的错误是尝试在子数据集声明中使用父报表参数的值指定默认值。这将使该值无效。相反,使用上述解决方案将使其工作。谢谢非常感谢。。。这真的很有帮助
<jr:table xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd">
<datasetRun subDataset="dsLines" uuid="3ef5ec78-ab18-4f44-88e6-f99f3eafac07">
<datasetParameter name="formalId">
    <datasetParameterExpression><![CDATA[$F{formalid}]]></datasetParameterExpression>
</datasetParameter>
</datasetRun>
<jr:column width="29" uuid="f675a273-7ea6-4bd4-8a55-c7522dfea2a8">
    ...