【问题标题】:Jasper - sort by field with char and int valuesJasper - 使用 char 和 int 值按字段排序
【发布时间】:2018-09-12 19:52:10
【问题描述】:

我有一份报告,它使用 SP 来获取编号从 1 到 ~1700 的字段列表,但还包括一些 char 值(H44、HH4 等)。db 将这些存储为 char(5) 类型。报告字段类是 java.lang.String。输出几乎是随机的,我想从数字开始对字段进行升序排序。我正在使用 JasperSoft Studio 6.2.1。

从大纲视图中,我选择了排序字段。我使用要排序的字段的名称创建了一个新的 sortField。它将 Type 显示为“字段”,并且 Order 正在排序“asc”。这些是 sortField 属性中的唯一选项。

在源代码中显示:

<sortField name = "myfield"/>

当我运行报告时,我会按顺序列出字段,但仅按前几位。它显示 1,10,100,1002,1003,1004...103,1030(没有 101,102,1001)。它将 2,3,4,5 等放在列表的其他位置。

我尝试创建一个变量并转换字符串,但我发现我无法使用:

Integer.parseInt("myField") 

因为它似乎一碰到非整数就会窒息。事实上,当我尝试运行它时,我得到了一个 JRExpressionEvalException。在这种情况下,字符串似乎是“1511” - 最后有一个空格?

我无法控制 SP,有没有办法解决这个烂摊子?

【问题讨论】:

  • 我会尝试在查询中修复它,看起来你给 jasper 的结果是不可排序的..
  • 来自 proc 结果的查询...?
  • 这取决于您希望 H44、HH4 和其他非数字值出现在排序序列中的位置。我知道数字应该按数字排序,但你没有说非数字应该如何排序。我假设不是数字的值应该按字母顺序排序,毕竟数字。我建议您按字符串变量排序,在该变量中在值的开头附加足够的零,如下所示: "0000" + $F{myField}).substring($F{myField}.length())

标签: sorting jasper-reports


【解决方案1】:

我今天在 Jasper 服务器上创建 Ad Hoc 视图时遇到了同样的问题。我已经解决了如下: 1) 创建一个包含完整字符串的计算字段(例如,“--”导致“1-2-3”、“2-2-3”、“10-2-3”、...) 2)将此字段作为列添加到报告中 3) 按如下方式对报表的结果集进行排序:value1, value2, value3 这对您的问题有帮助吗?

斯文

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-11
    • 2021-11-22
    • 2017-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多