2014-01-20 87 views
2

我创建了一个带有JasperStudio 5.5的报告,它在主数据库中定义了许多参数,并且需要此参数的许多子数据集(使用表定义)。将主参数传递给JasperStudio中的子数据集

的情况:

/主/参数:myPar

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

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

因此,我的问题是子数据集无法在此主参数中访问,我一直试图编译,程序发送给我“参数未找到:myPar”。

我怎么能在子数据集中使用myPar?

P.S:我看这个线程Pass main dataset parameter to subdataset query(基于iReport的),但没有成功......

+0

另一个用户发送我的方法:HTTP://community.jaspersoft .COM /问题/ 823038 /传球,主参数子数据sets-jasperstudio#comment-805329 – dceccon

回答

3

那么,你需要填写子数据参数与价值观,你居然利用它们。在这种情况下,列出来自您的子数据集的项目的表格需要声明必要的参数并为其分配报告级别数据集参数的值。

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

非常感谢......这真的非常有帮助 –

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

+0

我的错误是尝试在subdataset声明中分配一个默认值和parent report参数的值。这只会使价值无效。相反,使用上述解决方案会使其工作。谢谢 ! –