2015-02-11 1 views
0

Я хотел бы передать набор данных из основного отчета в нижестоящий отчет iReport. В Odoo version7 я использовал именно так.Как передать набор данных из основного отчета в подчиненный отчет 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 и новый модуль jasper_reports для версии 8. Таким образом, я передал некоторые из файлов .jar из модуля jasper_reports в иРепорт IDE. Позже ... все отчеты из odoo version7 вызвали ошибки Groovy. Вот почему я изменил язык Groovy на Java-язык в iReport. Но ... все подзаголовки не работали, потому что param_obj paramter не приводил набор данных в отчет.

Если я изменил 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 получить поля из источника данных paramter.

Как это должно быть? Я не знаю, как передать основной набор данных в подчиненный. Если вы не возражаете, пожалуйста, объясните шаг за шагом.

PS. Я использовал язык запросов XPath и использовал файл шаблона xml для этого набора данных.

+0

возможный дубликат [Как передать основной источник данных отчета в подзаголовок (JasperReports)?] (http://stackoverflow.com/questions/8490563/how-to-pass-main-report-data-source-to-subreport-jasperreports) – GenericJon

ответ

0

Используйте тег поля вместо тега параметра.

Это означает, что вы можете заменить:

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

С:

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

Если это не так хорошо, вы можете попробовать другой способ в here.

+0

Если я как это произошло, я получил эту ошибку: не удалось вызвать метод execute в классе com.nantic.jasperreports.JasperServer: com.nantic.jasperreports.LanguageTable не может быть передан в net.sf.jasperreports.engine.JRDataSource –

+0

не могли бы вы предоставить код ?? –

+0

У меня было 7 подзаголовков для этого. Я назвал каждый отчет, как показано выше. Я уже тестировал эту ссылку. Спасибо за вашу помощь! –