当前 two/more 个元素的 header 相等时,Jasper 报告显示组 header

Jasper report displays group header when first two/more elements' headers are equal

从外观内执行查询以生成报告数据。查询正确地将数据分组如下:A=351 的一行(B=757 的行),A=352 的行(B=523/535/等),依此类推。

如果页面中出现的第一行 A=350,那么第二行的值与 350 不同(例如 351),则“351”header 将显示在下一页(仅当然,如果有足够的 351 行可以到达另一页)。

第 2 行和第 3 行应该在 351 组内,而是在另一个名为 352 的组内。但这种行为并不总是发生在其他页面上。在这种情况下,两个描述是相同的,但第 11 页上仍然显示 352。

这是 JasperReports 中的错误吗?

我以前做程序化排序而不是SQL GROUP BY,如下,并没有改变任何东西:

Collections.sort(Reports.LIST,

    (Comparator<MyObject>) new Comparator<MyObject>() {

        public int compare(MyObject o1, MyObject o2) {

            if (o1.getA().compareTo(o2.getA()) == 0) {
                return o1.getB().compareTo(o2.getB());
            } else {
                return o1.getA().compareTo(o2.getA());
            }

        }

    }

);

编辑:发现在这种特定情况下,无论行位于何处(352 是本页的最后一行):

Group Expression选项只有描述,没有编号;因此,当相同数字的描述相同时,它不会分隔行。

步骤:

  1. 打开 iReport 和您的文件;
  2. 转到 Report Inspector(左侧窗格)
  3. 单击所需的组 Header 并打开 Properties 窗格(右侧)
  4. 在最后一节 Group properties 下,键入正确的 Group Expression