【问题标题】:Sorting report according to parameter in iReport根据 iReport 中的参数对报表进行排序
【发布时间】:2013-04-15 16:39:54
【问题描述】:

我有一个包含两个字段的简单报告:ID 和 NAME。 我想根据用户在运行时选择的参数按 ID 或 NAME 对详细信息进行排序。

我尝试过这样做:

<sortField name="sort" type="Variable"/>

<variable name="sort" class="java.lang.String">
    <variableExpression>
        <![CDATA[$P{ord}.equals("name") ? $F{entity}.getName() : $F{entity}.getId().toString()]]>
    </variableExpression>
</variable>

编辑 1:我将数据源作为参数传递,我不执行来自 JasperReports 的 sql 查询。 我想我可以将已经排序的数据源传递给 JasperReports,但我想直接从报告中对数据进行排序。

编辑 2:我查看了之前的代码,对我来说工作正常。

【问题讨论】:

    标签: jasper-reports ireport


    【解决方案1】:

    只需创建一个默认值为“ID”的参数“Sort_order”,并在查询中添加 order by 子句。

      SELECT...
      FROM..
      ORDER BY $P!{Sort_order} DESC
    

    【讨论】:

    • 我忘了说我没有从 JasperReports 执行 sql 查询
    【解决方案2】:

    您可以在 SELECT 中使用 ORDER BY 子句。但是,有时由于内部化或类似的事情,您需要按 jasper 对数据进行排序。解决此问题的一种方法是选择特殊列进行排序(POSTGRESQL):

    SELECT 
        id, name,
        (CASE WHEN $P!{Sort_order}='id' THEN id ELSE null END) sort_id,
        (CASE WHEN $P!{Sort_order}='name' THEN name ELSE null END) sort_name
    FROM
        your_table;
    

    然后您设置按列排序 sort_namesort_id

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-17
      • 1970-01-01
      相关资源
      最近更新 更多