【发布时间】: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())