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

时间:2012-01-24 02:24:06

标签: formatting jasper-reports

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

基本上我有一个报告,在详细信息带中的子报告之后插入了分栏符,因此我可以清楚地为新记录的开头定义新页面。但它总是留给我一个空白的最后一页。所以,我希望如果我有一个打印条件,如果它是XML数据源中的最后一个记录元素,那么就可以阻止这一点。

这甚至可能吗?

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

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

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