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

标签 java groovy jasper-reports odoo

我想将数据集从主报表传输到 iReport 中的子报表。 在Odoo version7中,我就是这样使用的。

<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 version7 的所有报告都导致了 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. 

子报表未从参数数据源获取字段。

应该怎样?我不知道如何将主数据集传递给子报表。 如果您不介意,请逐步解释。

PS。我使用了 XPath 查询语言并为该数据集使用了 xml 模板文件。

最佳答案

使用字段标签代替参数标签。

这意味着,您可以替换:

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

与:

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

如果不行,您可以尝试here.中的其他方式

关于java - 如何通过iReport将数据集从主报表传递到子报表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28450437/

相关文章:

java - 从 XML 解析数据的 Groovy 语法

java.io.StreamCorruptedException : invalid stream header: EFBFBDEF

java - 从 Jasperstudio 触发 Java

java - 扫描仪 NextLong() 中输入不匹配错误 -java

java - 在构造函数中初始化私有(private)变量

gradle - Gradle 构建脚本在语法上是否有效 Groovy?

java - 如何修复 Jaspersoft Studio 插件中由 TraceGovernor 引起的 java.lang.NullPointerException?

java - clojure/lein : How do I include a java file in my project?

java - 是否可以避免使用通过 META-INF 中的服务定义获取的 JAX-WS 提供程序?

java - 从字符串数组构建 <String, List<List>> 标记的 Groovy 方法