是否可以生成一个“Print When Expression”来检测 XML 数据源文件中的最后一个元素?
基本上,我有一个报告,在详细信息区域的子报告之后插入了分栏符,这样我就可以清楚地定义新记录的开头的新页面。但它总是让我最后一页空白。所以我希望如果我有一个打印条件可以防止出现这种情况,如果它是 XML 数据源中的最后一个记录元素,则可以防止列中断。
这可能吗?
问题在于,在查找下一个元素之前,您不知道它是最后一个元素。我认为没有简单的方法。
原则上这样做应该没问题:
围绕整个报表创建一个超级报表。在超级报告中运行相同的查询。计算行数。然后将行数传递到原始报表(现在是子报表)并再次重新运行查询。显然,运行查询两次是另一个缺点。
如果数据源是 SQL,那么我建议修改 SQL 以返回行数作为结果集的一部分。但对于非 SQL 数据源,在到达最后一行之前,您需要某种方法来了解行数(嗯...某种识别最后一行的方法)。
迟到了很多年... 如果您确定您的数据源是 JRBeanCollectionDataSource,您可以使用:
$V{REPORT_COUNT} == ((net.sf.jasperreports.engine.data.JRBeanCollectionDataSource)ORIGINAL_DATA_SOURCE( )).getData().size()
您只能将对象的位置类型更改为 Float,这样 Jasper 就会适合其上方元素结束的内容。