2015-02-11 158 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

相關問題