2015-02-11 122 views
0

我想从主报告传输数据集到iReport中的子报表。 在Odoo版本7中,我使用的就是这样。如何通过iReport将主报表的数据集传递给子报表?

<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和版本8的新jasper_reports模块于是我转移了一些jar文件从jasper_reports模块iReport的IDE。后来...... odoo版本7的所有报告都会导致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. 

报表没” t从参数数据源获取字段。

应该是怎么回事?我不知道如何将主数据集传递给子报表。 如果您不介意,请一步一步解释。

PS。我使用XPath查询语言并使用该数据集的xml模板文件。

+0

的可能重复[如何将主报表数据源传递给子报表(JasperReports)?](http://stackoverflow.com/questions/8490563/how-to-pass-main-report-data-source-to-subreport-jasperreports) – GenericJon 2015-02-11 15:02:52

回答

0

使用字段标记而不是参数标记。

这意味着,你可以替换:

<parameter name="param_obj" class="java.lang.Object" isForPrompting="false"/> 

有了:

<field name="param_obj" class="java.lang.Object" /> 

如果不正常,你可以用另一种方式尝试在here.

+0

如果我像这样改变,我得到这个错误:无法调用方法在类com.nantic.jasperreports.JasperServer中执行:com.nantic.jasperreports.LanguageTable无法转换为net.sf.jasperreports.engine.JRDataSource – 2015-02-11 09:33:36

+0

请问您可以提供代码?? – 2015-02-11 09:37:25

+0

我有7个子报告。我按照上面所示的方式调用每个子报表。我已经测试过这个链接。谢谢你的帮助! – 2015-02-11 10:00:18

相关问题