在 JasperReports 中打印当(到达最后一个元素)表达式时

问题描述 投票:0回答:3

是否可以生成一个“Print When Expression”来检测 XML 数据源文件中的最后一个元素?

基本上,我有一个报告,在详细信息区域的子报告之后插入了分栏符,这样我就可以清楚地定义新记录的开头的新页面。但它总是让我最后一页空白。所以我希望如果我有一个打印条件可以防止出现这种情况,如果它是 XML 数据源中的最后一个记录元素,则可以防止列中断。

这可能吗?

formatting jasper-reports
3个回答
1
投票

问题在于,在查找下一个元素之前,您不知道它是最后一个元素。我认为没有简单的方法。

原则上这样做应该没问题:
围绕整个报表创建一个超级报表。在超级报告中运行相同的查询。计算行数。然后将行数传递到原始报表(现在是子报表)并再次重新运行查询。显然,运行查询两次是另一个缺点。

如果数据源是 SQL,那么我建议修改 SQL 以返回行数作为结果集的一部分。但对于非 SQL 数据源,在到达最后一行之前,您需要某种方法来了解行数(嗯...某种识别最后一行的方法)。


0
投票

迟到了很多年... 如果您确定您的数据源是 JRBeanCollectionDataSource,您可以使用:

$V{REPORT_COUNT} == ((net.sf.jasperreports.engine.data.JRBeanCollectionDataSource)ORIGINAL_DATA_SOURCE( )).getData().size()

0
投票

您只能将对象的位置类型更改为 Float,这样 Jasper 就会适合其上方元素结束的内容。

© www.soinside.com 2019 - 2024. All rights reserved.