iReport中交叉報表列頭的排序

見示例: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!就這樣了!

相關文章
相關標籤/搜索