我想将数据集从主报表传输到iReport中的子报表。 在Odoo version7中,我就是这样使用的。
<parameter name="param_obj" class="java.lang.Object" isForPrompting="false"/>
<subreport>
<reportElement x="0" y="0" width="555" height="13"/><subreportParameter name="tl_cAsset">
<subreportParameterExpression><![CDATA[$P{tl_cAsset}]]> </subreportParameterExpression>
</subreportParameter>
<dataSourceExpression><![CDATA[$P{param_obj}]]></dataSourceExpression>
<subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "acc_balance_current_assets2.jasper"]]></subreportExpression>
</subreport>
现在我使用Odoo版本8和新版本的jasper_reports模块。所以我将一些jar文件从jasper_reports模块传输到iReport IDE。后来...来自odoo version7的所有报告都导致了Groovy错误。这就是我在iReport中将Groovy语言改为Java语言的原因。但是......所有子报告都不起作用,因为param_obj参数没有将数据集带到子报告中。
如果我将dataSourceExpression从param_obj更改为$ P {REPORT_DATA_SOURCE} 这样的内置参数:
<dataSourceExpression><![CDATA[$P{REPORT_DATA_SOURCE}]]></dataSourceExpression>
,我得到了这样的错误:
Failed to invoke method execute in class com.nantic.jasperreports.JasperServer: Field "Name-name" not found in data source.
子报告没有从参数数据源获取字段。
应该怎么样?我不知道如何将主数据集传递给子报表。 如果您不介意,请逐步解释。
PS。我使用了XPath查询语言,并为该数据集使用了xml模板文件。
答案 0 :(得分:0)
使用字段标记代替参数标记
这意味着,您可以替换:
<parameter name="param_obj" class="java.lang.Object" isForPrompting="false"/>
使用:
<field name="param_obj" class="java.lang.Object" />
如果不正常,您可以在here.
中尝试其他方式