我想在ireport中创建多个组,数据应该以分组方式显示。对于Eg: 首先,Group1数据应该完全打印,然后,
组别1:
模块数据 在此之后我想完全打印Group2数据
组2:
类别数据
我正在使用结果集数据源。
有人可以帮助我吗?
答案 0 :(得分:4)
只要您的查询结果正确排序,Jasper报告就会以这种方式正常工作。
例如,假设您正在按名为“MY_GROUP”的字段进行分组,并且其值为“GROUP A”和“GROUP B”。在报告中,您将为字段“MY_GROUP”创建一个组。在查询中,请确保将MY_GROUP作为ORDER BY子句中的第一个字段。您还可以在iReports中通过添加“MY_GROUP”字段作为报表查询的“排序选项”部分中的第一个字段来完成此操作。
现在您已经添加了论坛并且订购正确,您的结果将如下所示:
标题 - GROUP A 细节 - 小组A. 页脚 - 组A. 标题 - B组 细节 - B组 页脚 - B组
正如您所愿。我的猜测是你没有正确地订购你的查询结果。这可能会导致对A组,B组等进行多次分组。所有这些都是散布的。
答案 1 :(得分:2)
如果iReport中的组未将所有数据保存在一起,请使用子报告。当Jasper到达子报表时,它会运行整个子报表并将整个事件放入报表中。你可以有类似的东西:
子报告1 - 第1组 第1组第一记录 第1组第二记录 第1组第3记录 ... 第1组最后一项记录 分报告2 - 第2组 第2组第一记录 第2组第二记录 第2组第3记录 ... 第2组第3记录
答案 2 :(得分:1)
正如汤姆所说的那样。 Jasper Reports Groups不会对从查询中检索到的数据进行排序,只是按照它来的顺序进行排序。
为了以分组方式显示信息,您必须向查询添加ORDER BY,以便报告接收的行已经订购。
答案 3 :(得分:0)
因此,当您使用多个组标题时,会发生一个问题。第一个标头的行为仅按唯一值按列值A的预期顺序进行。尽管列值B是非唯一值,但使用列值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)
,带有两个组标题和一个列标题。列标题不会针对每一行重复,因此您将布尔表达式之一分配给它的“何时打印”,因此它并不总是打印。第一组标题不会针对每一行重复,并且可以工作。第二个组标题用于您希望它为每个唯一值重复的时间,因为它总是为每一行打印,并且您在“打印时间”时使用另一个布尔值。希望对您有帮助