简体   繁体   English

如何通过iReport将数据集从主报表传递到子报表?

[英]How to pass dataset from main report to subreport by iReport?

I would like to transfer dataset from main report to subreport in iReport. 我想将数据集从主报表传输到iReport中的子报表。 In Odoo version7, I have used just like this. 在Odoo版本7中,我就是这样使用的。

<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>

Now I using Odoo version 8 and new jasper_reports module for version 8. So I transferred some of the jar files from jasper_reports module to iReport IDE. 现在,我使用Odoo版本8和新的版本8的jasper_reports模块。因此,我将一些jar文件从jasper_reports模块转移到了iReport IDE。 Later... all the reports from odoo version7 caused Groovy errors. 后来... odoo version7的所有报告均导致Groovy错误。 That's why I changed Groovy language to Java language in iReport. 这就是为什么我在iReport中将Groovy语言更改为Java语言的原因。 But... all the subreports didn't work because param_obj paramter didn't bring the dataset to subreport. 但是...所有子报表都无法正常工作,因为param_obj参数没有将数据集带到子报表中。

If I changed dataSourceExpression from param_obj to $P{REPORT_DATA_SOURCE} that built-in parameter like this: 如果我将dataSourceExpression从param_obj更改为$ P {REPORT_DATA_SOURCE},则该内置参数如下所示:

<dataSourceExpression><![CDATA[$P{REPORT_DATA_SOURCE}]]></dataSourceExpression>

, I got the error like this: ,我得到了这样的错误:

Failed to invoke method execute in class com.nantic.jasperreports.JasperServer: Field "Name-name" not found in data source. 

subreport didn't get fields from the paramter datasource. 子报表未从参数数据源获取字段。

How should it be? 应该怎么办 I don't know how to pass the main dataset to subreport. 我不知道如何将主数据集传递给子报表。 If you don't mind, please explain step by step. 如果您不介意,请分步说明。

PS. PS。 I used XPath query language and used xml template file for that dataset. 我使用XPath查询语言,并为该数据集使用xml模板文件。

Use field tag instead of parameter tag. 使用字段标签代替参数标签。

It means, you can replace : 这意味着,您可以替换:

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

With: 带有:

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

If it is not ok, you can try with another way in here. 如果还不行,您可以在这里尝试其他方法

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM