Jasper - 使用char和int值按字段排序

时间:2016-04-05 22:04:08

标签: sorting jasper-reports

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

在Outline视图中,我选择了Sort Fields。我使用我想要排序的字段的名称创建了一个新的sortField。它将Type显示为'field',Order则排序'asc'。这些是sortField属性中的唯一选项。

在资料中显示:

public static void RenameFiles(File subDir) {
    File[] files = subDir.listFiles();
    Path source = FileSystems.getDefault().getPath(subDir.toString());
    String sourceType = null;
    if (source.toString().endsWith("Flavonoid")) {
        sourceType = "/FL_";
    } else {
        sourceType = "/SR_";
    }
    for (File file : files) {
        Path oldFilePath = FileSystems.getDefault().getPath(file.toString());
        Path newFilePath = FileSystems.getDefault().getPath(subDir.toString() + sourceType + file.getName());
        File newFile = newFilePath.toFile();
        if(file.getName().startsWith("SR_") || file.getName().startsWith("FL_")) {
            continue;
        } else {
            System.out.println("Creating outfile: " + newFile.toString());
            try {
                Files.move(oldFilePath, newFilePath);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

当我运行报告时,我按顺序列出了字段,但只有第一个数字。它显示1,10,100,1002,1003,1004 ... 103,1030(没有101,102,1001)。它将2,3,4,5等放在列表的其他地方。

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

<sortField name = "myfield"/>

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

我无法控制SP所以有没有办法对这个混乱进行排序?

1 个答案:

答案 0 :(得分:0)

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

斯文