将主要参数传递给Jasper Studio中的子数据集

时间:2014-01-20 18:18:06

标签: jasper-reports report

我在JasperStudio 5.5中创建了一个报告,该报告在main中定义了许多参数,并且需要使用这些参数的许多子数据集(用表定义)。

情况:

/ main /参数:myPar

/主/ mySubDataSet1 /
/主/ mySubDataSet2 /
...
/ main / mySubDataSetN /

子数据集需要在她的查询中使用此参数:select * from Tab t其中t.attr = $ P!{myPar}

所以,我的问题是子数据集无法访问此主参数,我尝试编译的所有时间,程序发送给我“参数未找到:myPar”。

如何在子数据集中使用myPar?

p.s。:我读了这个帖子Pass main dataset parameter to subdataset query(基于iReport),但没有成功......

2 个答案:

答案 0 :(得分:3)

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

在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>

答案 1 :(得分:2)

详细信息:

<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">
    ...