iReport中交叉报表列头的排序

近来做报表的时候,有个交叉报表让列头按照指定顺序排序,自己纠结了好久也没找出解决办法,于是乎,本人就开始在网上“大肆”搜索……,还好还好,虽然没找到完整的解决办法,但是通过“前人”们总结的点点滴滴,还是得到了点儿启发,顺理成章的呢,我就又“造”出了下面的这一篇……

 

本人之前写过一篇有关用iReport制作检查报表的例子,此处也就继续那个例子开始往下说了哈!

 

1、  报表中通常我们的sql语句是这样写的:selects.student_name_,s.grade_,s.subject_name_ from student s,编译,运行之后,我们会看到如图1的结果,(注意:列头的排序结果是数学、英语、语文)

1

但是若想让列头的排列顺序是:语文、数学、英语,这要怎么办呢?可能有的人要说了,在sql语句中加个order by语句就ok了,嗯,的确哦,在数据库中是可以的,或许碰巧在您的报表中也会就能得到您想要的结果,但那仅仅是“碰巧”哦,这里我要向大家介绍的是另一种实现您的报表列头排序的方法!

2、  在您的sql语句中动一下“手脚”,写成这样的:

select s.student_name_,s.grade_,

case to_char(s.subject_name_)

when to_char('语文') then to_char('A语文')

when to_char('数学') then to_char('B数学')

when to_char('英语') then to_char('C英语')

end as subject

from student s orderby s.subject_name_  desc,运行的结果如图2所示:

iReport中交叉报表列头的排序_第1张图片

 

2

3、  因为报表中显示了多余的字段,所以呢,我们就要想办法把多出来的字符串去掉!如图3点击Crosstab1到交叉报表的页面,单击显示列标题的文本框,在窗体的右侧就会显示该文本框的属性

iReport中交叉报表列头的排序_第2张图片

3

4、  如图4所示:在属性窗口中找到TextField Expression属性,点击最右边的“…”按钮

iReport中交叉报表列头的排序_第3张图片

4

5、  如图5.1所示,在黑色光标处写函数substring,结果如图5.2所示,然后单击【确定】

iReport中交叉报表列头的排序_第4张图片

5.1

5.2

6、  编译,预览的效果如图6所示

iReport中交叉报表列头的排序_第5张图片

6

 

至此,就实现了我们想要的功能了!还有一个小问题,不知您看出来没有啦,就是:我添加了ABC后,报表就按照指定的顺序出来了,其实呢,iReport是按照首个字符的ASCII码来排序的呢,ok!就这样了!

你可能感兴趣的:(排序,IREPORT,IREPORT,交叉报表,列头排序,列头)