Jasper reports jasper报告中的多个组

Jasper reports jasper报告中的多个组,jasper-reports,report,ireport,Jasper Reports,Report,Ireport,我想在ireport中创建多个组,数据应以组方式显示。例如: 首先,应完整打印Group1数据,然后 第一组: 模块数据 在此之后,我想完全打印Group2数据 第2组: 类别数据 我正在使用结果集数据源 有人能帮我吗?如果iReport中的组没有将所有数据保存在一起,请使用子报表。当Jasper找到一个子报表时,它运行整个子报表并将整个内容放入报表中。你可以有这样的东西: 子报告1-第1组 第一组第一记录 第一组第二次记录 第一组第三项记录 ... 第一组最后记录 次级报告2-第2组 第

我想在ireport中创建多个组,数据应以组方式显示。例如: 首先,应完整打印Group1数据,然后


第一组:


模块数据 在此之后,我想完全打印Group2数据

第2组:


类别数据

我正在使用结果集数据源


有人能帮我吗?

如果iReport中的组没有将所有数据保存在一起,请使用子报表。当Jasper找到一个子报表时,它运行整个子报表并将整个内容放入报表中。你可以有这样的东西:

子报告1-第1组 第一组第一记录 第一组第二次记录 第一组第三项记录 ... 第一组最后记录 次级报告2-第2组 第2组第一记录 第二组记录 第二组第三次记录 ...
第2组第三条记录

只要查询结果排序正确,Jasper报告将以这种方式工作

例如,假设您通过一个名为“MY_GROUP”的字段进行分组,该字段的值为“GROUP a”和“GROUP B”。在报告中,您将为字段“MY_group”创建一个组。在查询中,确保将MY_GROUP作为ORDER BY子句中的第一个字段。您还可以在iReports中通过添加“MY_GROUP”字段作为报表查询排序选项部分的第一个字段来完成此操作

现在,您已经添加了您的组并正确排序,您的结果将如下所示:

标题-A组 详图-A组 页脚-A组 标题-B组 详细信息-B组 页脚-B组


完全如你所愿。我的猜测是您没有正确排序查询结果。这可能会导致A组、B组等有多个分组。所有分组都分散在一起。

这正是Tom所说的。Jasper Reports组不会对从查询中检索到的数据进行排序,而是按照数据的顺序进行排序


为了以分组方式显示信息,必须向查询中添加order BY,以便报表接收的行已经排序。

因此,使用多个组标题时会出现问题。第一个标头的行为类似于仅在唯一值上按列值A排序的预期行为。使用列值B的第二个标题将在每一行上打印,尽管是非唯一值

  • 理论上,您应该能够使用ORDER BY:
  • 若要正确显示报告,请假定您正在使用sql、plsql等。。。然而,在我的情况下,这并没有发生,尽管对其他人来说,这似乎是可行的

  • 使用子报告通过唯一报告附加细微差异。您创建了一个包含空详细信息的根报告。然后创建独特的报告作为子报告。最后,使用subreport元素将值链接到根报告中。虽然这是一个很好的工作,可能会导致重复代码
  • 我使用的一种老套方法是:“表达式时打印”与逻辑布尔表达式的混合,逻辑布尔表达式带有2个组标题和一个列标题。 布尔表达式:
  • 具有两个组标题和一个列标题。列标题不会对每一行重复,因此您将其中一个布尔表达式指定给它的“打印时间”,因此它不会始终打印。第一个组标题不会对每一行重复,并且会起作用。第二个组标题用于您希望它对每个唯一值重复的次数,因为它总是对每一行进行打印,并且您在它的“打印时间”上使用另一个布尔值。希望能有帮助

    ORDER BY ValueA, ValueB
    
    $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)