2015-01-02 48 views
1

从数据库中获取值时,Jasper报告如何工作。 我知道细节带被重复的每一行,但我的问题是:多行Jasper Report操作

 
1) Do all DB rows gets fetched first and then detail band gets repeated for each row. 

         or 

2) It is parallel process as soon as report gets one row it creates new detail band. 

为什么我问的这些问题,我希望做的是基础,通过所有行一些操作有一个元件中的我每个乐队应该打印或不打印的细节乐队。

例如:假设我的数据库总是返回两行,一个为公共和一个私人,和外面我要比较一列,说名overall_score如下:

 
1) If private overall_score is greater than public the header private should be underlined. 
2) if public overall_score is greater than private the header public should be underlined. 
3) if both overall_score are equals both header should be underline. 

我有一个在我想要放置的细节带上的线元素printWhellspression基于两个行的overall_score的比较。

请帮帮我我是贾斯珀报告的新手。

回答

1

你可以试试这个。

  1. 在记录对上常见的任何字段上创建一个组。如果您不希望它们显示在报告上,可以将组页眉和页脚乐队的高度设置为零。
  2. 创建一个变量,获取每个组的最大overall_score值。
  3. 在您的PrintWhenExpression中,将当前记录的overall_score与包含组的最大overall_score的变量进行比较。
+0

嗨@汤姆,解决方案工作,如果记录降序orderoverall_max_score例如,该组将只对计算时获取的行数进行计算,因此,如果第一个记录的值为80,第二个记录为85则最大值为80,第二个为 – Krishna

+0

有趣的是,另一种可能性是将群组max作为查询中的字段。您可以使用子选择查询来执行此操作。然后你可以在表达时在你的印刷品中使用它。 – Tom