gpt4 book ai didi

java - 将数据源克隆传递给子报表

转载 作者:行者123 更新时间:2023-11-30 04:41:30 24 4
gpt4 key购买 nike

我想将数据源从主报表传递到子报表。

因此,我只需将iReport中的连接类型更改为使用数据源表达式并传递REPORT_DATA_SOURCE参数。

报告应生成数百个网站。它每页计算 1 个子报表。

子报表只需要数据源的某些行,因此在查询中使用了他自己的WHERE。

问题是:

连接类型连接到数据源更改后,报告仅显示第一个站点。看起来好像子报表将主报表的数据集及其 WHERE 语句更改为只有一行。

我已经看到了解决方案 http://www.billmann.de/2011/12/01/jasperreports-subreport-datasource/但是当我尝试这个时,我收到一个错误:

java.lang.ClassCastException: net.sf.jasperreports.engine.JRResultSetDataSource cannot be cast to net.sf.jasperreports.engine.data.JRBeanCollectionDataSource

还有其他克隆数据源的可能性吗?或者我可以在子报表中设置一些东西,这样数据源就不会改变吗?

如果我使用Connection而不是DataSource,报表可以工作,但它会渲染5分钟或更长时间,因为每个子报表调用都会生成自己的数据集。

最佳答案

我是上述博客文章的作者,并且类型转换为 JRBeanCollectionDataSource 是必要的,因为我们使用的数据源是 JRBeanCollectionDataSource,并且此 JRDatasSurce 支持cloneDataSource() 方法。

并非所有 JRDataSources 都支持这种方法。如果您有机会以编程方式读取数据库并将数据填充到另一个 JRDataSource(例如 JRMapArrayDataSource)中,则可以使用cloneDataSource() 方法。

我不确定此解决方案是否适用于附加 where 子句。

关于java - 将数据源克隆传递给子报表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12172297/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com