在使用皕傑報表設計報表時,往往需要按照某個字段的順序進行排序,比如按序号、時間的順序排序。那麼這個排序是如何設計出來的呢?
首先要知道,設計報表的過程實質上就是把數據集表中的數據按一定格式展現在報表裡的過程,因而報表的排序是與數據集中記錄順序有關的,所以在寫sql語句取數的時候就應根據需要按照某個字段的順序進行排序。sql中進行排序的關鍵字是order by,需要根據哪個字段排序order by後面就跟什麼字段。如:
select 雇員id, 姓氏||名字 as 姓名,雇用日期 from 雇員 order by 雇用日期
就是按照雇傭日期進行排序的,默認ASC升序。
數據集預覽:
在把數據集表裡數據放到報表裡展現的時候,我們還可以調整順序,這取決于數據集函數select中的排序順序,在單元格表達式裡可以根據我們的需要重新排序。
Select
函數說明:從當前數據組中取出一組數據,在擴展方式為縱向擴展或橫向擴展(含默認時自動計算出來的)時, 所有附屬單元格所用的同一數據集的數據在同一行(Row)
語法:datasetName.select(selectExp{,descExp{,filterExp{,sortExp}}})
參數說明:
selectExp 選出的字段或其表達式
descExp 選出數據的排序規則,true為逆序,false為正序
filterExp 過濾表達式
sortExp 排序依據表達式
舉例說明:
1.例1:ds1.select(訂單ID,false),将數據集ds1中的“訂單ID”字段以列表的形式顯示,并順序排序。
2.例2:ds1.select(訂單ID,true,訂單id>=12),将數據集ds1中的“訂單ID”字段以列表的形式顯示,并逆序排序,而且篩選出大于等于12号的訂單ID。
3.例3:ds1.select(訂單ID,false,訂單id>=12,數量),将數據集ds1中的“訂單ID”字段以列表的形式顯示,按“數量”字段順序排序,并篩選大于等于12号的訂單ID。
針對上述數據集,如果在單元格裡簡單用=ds0.select(雇員ID),則報表的順序就是數據在數據集中的順序,見下圖:
如果我們在select函數中加上排序的參數,=ds0.select(雇員ID,false,,雇員ID)則報表的順序則按雇員ID順序重新排序,見下圖:
那麼究竟是在sql中排序還是在單元格表達式中排序,則根據報表的性能要求靈活掌握,不管sql中是否排序,如果單元格表達式出來的排序不滿足需求,則一定加上排序方式和排序參數。
,