见示例:mysql
一、 报表中一般咱们的sql语句是这样写的:selects.student_name_,s.grade_,s.subject_name_ from student s,编译,运行以后,咱们会看到如图1的结果,(注意:列头的排序结果是数学、英语、语文)sql
图1数据库
可是若想让列头的排列顺序是:语文、数学、英语,这要怎么办呢?可能有的人要说了,在sql语句中加个order by语句就ok了,嗯,的确哦,在数据库中是能够的,或许碰巧在您的报表中也会就能获得您想要的结果,但那仅仅是“碰巧”哦,这里我要向你们介绍的是另外一种实现您的报表列头排序的方法!函数
二、 在您的sql语句中动一下“手脚”,把须要在报表中的列中显示的内容以别名显示,例如写成这样的:.net
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所示:code
图2排序
三、 由于报表中显示了多余的字段,因此呢,咱们就要想办法把多出来的字符串去掉!如图3点击Crosstab1到交叉报表的页面,单击显示列标题的文本框,在窗体的右侧就会显示该文本框的属性字符串
图3get
四、 如图4所示:在属性窗口中找到TextField Expression属性,点击最右边的“…”按钮数学
图4
五、 如图5.1所示,在黑色光标处写函数substring,结果如图5.2所示,而后单击【肯定】
图5.1
图5.2
六、 编译,预览的效果如图6所示
图6
至此,就实现了咱们想要的功能了!还有一个小问题,不知您看出来没有啦,就是:我添加了A、B、C后,报表就按照指定的顺序出来了,其实呢,iReport是按照首个字符的ASCII码来排序的呢,ok!就这样了!