一、概述
本文將介紹各型別排序使用程式中遇到的問題和解決方案。
二、排序時數值型別欄位存在空值時報錯
1
問題描述。
若對【數值型別欄位】設定了排序,而欄位中存在空值,那麼在預覽或點擊標題排序時就會出現報錯。
例如在【訂單 ID】欄設定了點擊某一欄標題改變排序,其擴展後排序公式為:【if($a=1,$$$,-$$$)】,表示根據當前欄的值進行排序。如下圖1所示。
此時預覽報表,點擊【訂單 ID】標題,出現報錯如下圖2所示。
2
解決方案。
在排序公式中對空值指派後參與排序。
將公式寫為:【if($a=1,if(len($$$)=0,min(ds1.select(訂單ID))-1,$$$),if(len($$$)=0,-(min(ds1.select(訂單ID))-1),-$$$))】即當欄位為空時,給其指派為【訂單 ID最小值-1】,參與排序。公式說明如下表所示。
修改公式後,點擊預覽報表,效果如下圖所示。
注:資料集函式使用方法參考A04-00 參數介紹。
公式 | 說明 |
---|---|
len($$$)=0 | 當前儲存格值為空。 |
min(ds1.select(訂單ID))-1 | 獲取資料集 ds1 中【訂單ID】(排序欄位)的(最小值-1)。 |
-(min(ds1.select(訂單ID))-1) | 獲取資料集 ds1 中【訂單ID】(排序欄位)的 -(最小值-1)。 |
3
範本下載。
已完成範本可參見:【%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doctw\SpecialSubject\OrderReport\數值型別欄位排序有空值.cpt】。
點擊下載範本:數值型別欄位排序有空值.cpt。
三、非純數字橫向擴展欄亂序排列
1
問題描述。
製作一張月報表時,期望將【月份】資料欄拖曳入儲存格使用橫向擴展得出,但如果遇到【1月】、【2月】這種非純數位的擴展表頭時,使用原值排序就會導緻錯亂。如下圖所示。
2
解決方案。
使用公式【INT(REPLACE($$$,'月',''))】將【月】更換為空字串,再將字串轉換為【INT】型別,如下圖1所示。
設定完成後,儲存格的字串值就被轉換成了整數型態資料,再排序的話就會按照設定的升冪或降冪排序了,如下圖2所示。
3
範本下載。
已完成範本可參見:【%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doctw\SpecialSubject\OrderReport\非純數字擴展欄亂序排列的解決方案.cpt】。
點擊下載範本:非純數字擴展欄亂序排列的解決方案.cpt。