将值从主报告传递到子报告?

Nic*_*ick 3 jasper-reports ireport

我刚刚开始使用iReport并完成了对现有报告进行一些更改的任务.

目前有一份主要报告,其中包含A和B部分(联系方式和其他信息).有一个子报告C,然后是一个子报告D.我的任务是为D中的每个项目复制A和B.如果报告有很多D部分我想要每个都有一个A和B.

所有数据都在同一个XML文档中,并且可以简单地获取A部分和BI部分的数据

((net.sf.jasperreports.engine.data.JRXmlDataSource)$F{REPORT_DATA_SOURCE}).dataSource("/Header/")
Run Code Online (Sandbox Code Playgroud)

和D部分的子报告

((net.sf.jasperreports.engine.data.JRXmlDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("/Header/ProductHeader/Member")
Run Code Online (Sandbox Code Playgroud)

如果我将文档结构中的一个字段从A部分显示到部分D并检查表达式,它表示$ F {ContactNumber},但在D中显示Null,即使它在A部分显示一个值

如何修改数据源以在D中显示A和B的内容?

提前致谢

Aar*_*ron 9

您需要将参数传递给子报告.除非您明确定义合同,否则子报告不会共享主报告中的任何数据.它更像是方法调用,然后是主报告的延续.

如果要foo在子报告的主报告中显示带有名称的字段,则需要执行以下操作:

  1. 使用名称在子报告中创建参数foo.
  2. 在主报表中创建子报表元素.
  3. 在子报表元素的属性中,有一个名为"参数"的属性.打开对话框并添加一个带有名称foo和正确值表达式的参数.

如果要foo在子报表中使用值,则应使用表达式:$P{foo}if它是主报表参数.