JasperReports:为list参数的每个值重复子报表

时间:2013-06-14 16:12:41

标签: jasper-reports subreport

我需要在 JasperReports 中开发一个报告,其中包含 ONE子报告,但是对于list参数中的每个值都会重复子报告。例如:< / p>

要传递给 ONE子报告的参数列表:1,2,3,4

MyReport:

  • 传递参​​数的值1的子报告(Crosstable +分页符)
  • 传递参​​数
  • 的值2的子报告(Crosstable +分页符)
  • 传递参​​数
  • 的值3的子报告(Crosstable +分页符)
  • 传递参​​数**
  • 的值4的子报告(Crosstable +分页符)

然后子报表还将包含另一个“子子报表”,应该为每个值重复X次,例如: 子报告(Crosstable +分页符)表示传递参数的值1:

  • “sub-subreport”(另一个Crosstable),价值为1.1
  • “sub-subreport”(另一个Crosstable),价值为1.2
  • “sub-subreport”(另一个Crosstable),价值为1.3

换句话说,我试图在相同的子报表上循环,但使用不同的数据:

for(i=0; i<list.lenght();i++){
   print(subreport(i));
}

我不知道怎么做。我希望我的例子清楚。提前致谢

2 个答案:

答案 0 :(得分:1)

您的详细频段将针对每条记录触发。因此,如果您的输入控件是$ P {myCustomers}并且主报表的查询是:

SELECT customer_id
FROM customers
WHERE $X{IN, customer_id, myCustomers}

然后您的主报告将有一个字段$ F {customer_id}。您的子报表需要具有自己的参数,并且它将从主报表中获取值。将子报表插入主报表的详细信息区域。单击主报表中的子报表,然后在主报表的“属性”窗口中,单击“参数”。 “名称”列是子报表中将接受传入值的参数的名称,“表达式”字段是要传递的值。因此,如果您的子报表还有一个客户ID参数,则名称为customer_id,要传递的表达式为$ F {customer_id}。

iReport文档(http://community.jaspersoft.com/documentation/ireport-ultimate-guide)包含有关子报告的信息,第90页。

答案 1 :(得分:0)

尝试使用报告组:该组基于值或表达式,然后您可以将子报告嵌入到组中。