我想将数据源从主报表传递到子报表。
所以我只需将iReport中的连接类型更改为使用数据源表达式并传递REPORT_DATA_SOURCE参数。
该报告应生成数百个站点。它每页计算 1 个子报表。
子报表只需要数据源的一些行,所以在查询中使用了他自己的WHERE。
问题是:
将Connection Type从Connection 更改为 Data Source后,报表仅显示第一个站点。似乎子报表将带有WHERE语句的主报表的数据集更改为仅一行。
我已经看到了 http://www.billmann.de/2011/12/01/jasperreports-subreport-datasource/的解决方案, 但是当我尝试这个时,我得到一个错误:
java.lang.ClassCastException:net.sf.jasperreports.engine.JRResultSetDataSource 无法转换为 net.sf.jasperreports.engine.data.JRBeanCollectionDataSource
还有其他克隆数据源的可能性吗?或者我可以在子报表中设置一些东西,这样数据源就不会改变?
如果我使用Connection而不是DataSource,则报表可以工作,但它会呈现 5 分钟或更长时间,因为每个 Subreport 调用都会生成自己的数据集。