【问题标题】:Jasper Report operation over multiple rowsJasper Report 对多行的操作
【发布时间】:2015-01-04 12:48:07
【问题描述】:

Jasper 报告在从数据库中获取值时如何工作。 我知道每行都会重复详细信息带,但我的问题是:

1)首先获取所有数据库行,然后为每一行重复详细信息带。 或者 2) 这是一个并行过程,一旦报告得到一行,它就会创建新的详细信息带。

我问这些问题的原因是,我想对所有行进行一些操作,因为我的详细信息带中有一个元素应该在每个带中打印或不打印。

示例:假设我的数据库总是返回两行,一是公共的,一是私有的,并且我必须比较其中的一列,将名称说成如下所示的整体分数:

1) 如果私有的整体分数大于公共的,标题私有应该是下划线。 2) 如果公共整体得分大于私有,则标头公共应加下划线。 3) 如果两个overall_score 都相等,则两个标题都应该是下划线

根据两行的overall_score 比较,我想在细节带上放置一个行元素printWhenexpression

请帮助我,我是 Jasper Report 的新手。

【问题讨论】:

    标签: jasper-reports


    【解决方案1】:

    你可以试试这个。

    1. 在记录对上的任何通用字段上创建一个组。如果您不想让它们显示在报表上,您可以将组页眉和页脚带的高度设置为零。
    2. 创建一个变量,获取每个组的最大总分值。
    3. 在您的 PrintWhenExpression 中,将当前记录的总体得分与包含该组最大总体得分的变量进行比较。

    【讨论】:

    • 嗨@Tom,如果记录按降序排列,则解决方案有效overall_max_score 例如,该组将仅对计算时获取的行数进行计算,因此如果第一条记录的值为80,第二条记录有 85,那么最大值将是第一个为 80,第二个为 85
    • 有趣的是,另一种可能性是将组最大值作为查询中的字段。您可以使用子选择查询来执行此操作。然后你可以在你的 print when 表达式中使用它。
    猜你喜欢
    • 1970-01-01
    • 2013-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-11
    相关资源
    最近更新 更多