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

图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!就这样了!

转载于:https://my.oschina.net/u/2331760/blog/817967

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值