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



是否可以生成一个"表达式时打印"来检测XML数据源文件中的最后一个元素?

基本上,我有一个在详细信息带中的子报告后面插入分栏符的报告,这样我就可以清楚地定义新记录开头的新页面。但它总是给我留下空白的最后一页。因此,我希望如果我有一个print when条件,如果它是XML数据源中的最后一个记录元素,则可以防止列中断,那么我可以防止这种情况。

这可能吗?

问题是,直到找到下一个元素后,才知道它是最后一个元素。我认为没有简单的方法。

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

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

许多年后。。。如果您确定您的数据源是JRBeanCollectionDataSource,则可以使用:

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

最新更新