iReport中交叉报表列头的排序

2017-01-05 11:09:09来源:oschina作者:文文1人点击

见示例:


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所示:



图2


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



图3


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



图4


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



图5.1



图5.2


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



图6


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

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台