3

我需要在JasperReports中开发一份报告,其中包含一个子报告,但是对于列表参数中的每个值都会重复该子报告。例如:

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

我的报告 :

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

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

  • 值为 1.1 的“子子报表”(另一个交叉表)
  • 值为 1.2 的“子子报表”(另一个交叉表)
  • 值为 1.3 的“子子报表”(另一个交叉表)

换句话说,我正在尝试循环使用相同的子报表,但使用不同的数据,例如:

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

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

4

2 回答 2

2

您的详细信息带将为每条记录触发。因此,如果您的输入控件是 $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 页包含有关子报告的信息。

于 2013-06-14T18:34:55.340 回答
0

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

于 2013-06-25T18:39:53.120 回答