反饋已提交
網絡繁忙
在製作報表時,經常遇到需要透過點選標題實現升冪和降冪交換顯示。文檔 資料集中的排序 中,可透過定義資料集參數,利用動態參數實現點選標題動態排序。
但有些情況下無法用到資料集排序,例如製作報表時有一欄是透過其他資料欄計算得出的,如下圖中「利潤」是由(單價-進價)*數量得來的,那麼這時要如何實現直接點選標題動態排序呢?
透過新增「動態參數」類型的 超級連結 和在儲存格 擴展後排序 中新增公式來實現,即點選資料欄標題時,將該資料欄所在儲存格作為參數傳遞過去,在擴展後排序公式中接收該參數,根據參數的不同,實現不同的排序。
注1:數值類型和字元類型的設定有所不同,詳情在範例中查看。
注2:本文講解僅一欄資料變換排序,多欄動態排序請參考文檔 多欄動態排序。
建立普通報表,建立資料庫查詢 ds1,SQL 查詢語句為:SELECT * FROM 訂單明細 limit 20。如下圖所示:
將資料集中的資料拖入表格,設定 A2 儲存格的「資料設定」為「列表」,F2 儲存格中插入公式:(C2 - E2) * D2,設計報表樣式如下圖所示:
選中「利潤」標題所在 F1 儲存格,新增一個「超級連結>動態參數」 a,參數值為公式:if($a=1,-1,1),如下圖所示:
在「最父格」A2 儲存格設定,選中 A2 儲存格,選擇「儲存格屬性>擴展」,設定「擴展後排序」為升冪,輸入公式:if($a=1,F2,-F2),F2 表示按照 F2 儲存格的值進行排序。如下圖所示:
注:數值類型欄位排序時若欄位為空,需要在排序公式中給空值指派。詳情可參見 排序時數值類型欄位存在空值時報錯。
注:由於只有數值類型資料才有負數,字元類型資料沒有負數,故這種排序方法只適用於「數值類型欄位」排序。
儲存報表,點選「分頁預覽」,效果與 1.1 節效果圖一致。
App 端和 HTML5 端均支援,效果如下圖所示:
建立普通報表,建立資料庫查詢 ds1,SQL 查詢語句為:SELECT * FROM 銷量 where 地區='華北'。如下圖所示:
將資料集中的資料拖入表格,設定 A2 儲存格的「資料設定」為「列表」,報表樣式如下圖所示:
選中「銷售員」標題所在 B1 儲存格,新增一個「超級連結>動態參數」 參數設定如下表:
步驟如下圖所示:
選中 A2 儲存格,選擇「儲存格屬性>擴展」,設定「擴展後排序」為升冪,輸入公式:INARRAY(EVAL($asc),SORTARRAY(EVAL($asc+"[!0]")))*$a。
公式說明如下表:
EVAL($asc)
傳回運算式 $asc ,即 B2 儲存格計算後的結果。
傳回排過序的 array 陣列
注:當陣列元素存在類型不一致或者無法比較時,傳回原陣列。
儲存報表,點選「分頁預覽」,效果如下圖所示:
已完成範本可參見:
%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\SpecialSubject\OrderReport\點選標題改變排序-數值類型.cpt
%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\SpecialSubject\OrderReport\點選標題改變排序-字元類型.cpt
點選下載範本:
點擊標題改變序列-數值型別.cpt
點擊標題改變序列-字元型別.cpt
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉
反馈已提交
网络繁忙