Как передать набор данных из основного отчета в подотчет по 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" />
Если это не так, вы можете попробовать другой способ здесь.