【发布时间】:2020-04-23 04:20:14
【问题描述】:
我想在 ireport 中创建多个组,并且数据应该以组的方式显示。例如: 首先应该完整打印 Group1 数据,然后,
组 1:
模块数据 在此之后我想完全打印 Group2 数据
组2:
分类数据
我正在使用结果集数据源。
有人可以帮助我吗?
【问题讨论】:
标签: jasper-reports report ireport
我想在 ireport 中创建多个组,并且数据应该以组的方式显示。例如: 首先应该完整打印 Group1 数据,然后,
组 1:
模块数据 在此之后我想完全打印 Group2 数据
组2:
分类数据
我正在使用结果集数据源。
有人可以帮助我吗?
【问题讨论】:
标签: jasper-reports report ireport
只要您的查询结果正确排序,Jasper 报告就会完全以这种方式工作。
例如,假设您按名为“MY_GROUP”的字段进行分组,并且该字段具有值“GROUP A”和“GROUP B”。在您的报告中,您将为字段“MY_GROUP”创建一个组。在您的查询中,确保将 MY_GROUP 作为 ORDER BY 子句中的第一个字段。您还可以在 iReports 中通过将“MY_GROUP”字段添加为报表查询的“排序选项”部分中的第一个字段来完成此操作。
现在您已经添加了您的组并正确排序,您的结果将如下所示:
标题 - A 组 细节 - A组 页脚 - A 组 标题 - B 组 细节 - B组 页脚 - GROUP B
完全如你所愿。我的猜测是您没有正确排序查询结果。这可能会导致 GROUP A、GROUP B 等的多个分组都穿插在一起。
【讨论】:
如果 iReport 中的组没有将所有数据放在一起,请使用子报表。当 Jasper 进入子报表时,它会运行整个子报表并将整个内容放入报表中。你可以有类似的东西:
子报表 1 - 组 1 第一组第一记录 组 1 秒记录 第 1 组第三记录 ... 第 1 组最后记录 子报表 2 - 第 2 组 第 2 组第一记录 组 2 秒记录 第 2 组第三记录 ... 第2组第三条记录
【讨论】:
正如汤姆所说。 Jasper Reports Groups 不会对从查询中检索到的数据进行排序,他们只是按照它来的顺序来排序。
为了以分组方式显示信息,您必须在查询中添加 ORDER BY,以便报表接收到的行已经排序。
【讨论】:
因此,当您使用多个组标题时会出现问题。第一个标题的行为与预期的一样,仅在唯一值上按列值 A 排序。使用列值 B 的第二个标题将打印在每一行上,尽管它是非唯一值。
ORDER BY ValueA, ValueB
假设您正在使用 sql、plsql 等来正确显示报告...但是,在我的情况下,这并没有发生,尽管对于其他人来说它似乎有效。
$F{QUERY}.equals(Query1) && ($P{P_Typequery}.equalsIgnoreCase("QueryA") && $P{P_parameter} == null)
和
$F{QUERY}.equals(Query1) && ($P{P_Typequery}.equalsIgnoreCase("P_QueryA") && $P{P_parameter} != null)
具有两个组标题和一个列标题。列标题不会为每一行重复,因此您将其中一个布尔表达式分配给它的“打印时间”,因此它并不总是打印。第一个组标题不会对每一行重复并且有效。第二组标题用于您希望它为每个唯一值重复的时间,因为它总是为每一行打印,并且您在它的“打印时间”上使用另一个布尔值。希望对你有帮助
【讨论】: