Как передать набор данных из основного отчета в подотчет по iReport?

Я хотел бы перенести набор данных из основного отчета в подотчет в iReport. В версии 7 Odoo я использовал именно так.

<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 iReport. Позже... все сообщения от odoo version7 вызвали ошибки Groovy. Вот почему я изменил язык Groovy на язык Java в iReport. Но... все подотчеты не сработали, потому что параметр 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. 

подотчет не получил поля из источника данных paramter.

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

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

1 ответ

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

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

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

С:

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

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

Другие вопросы по тегам