點擊某一欄標題改變排序

1. 概述

1.1 問題描述

在製作報表時,經常遇到需要透過點選標題實現升冪和降冪交換顯示。文檔 資料集中的排序 中,可透過定義資料集參數,利用動態參數實現點選標題動態排序。

但有些情況下無法用到資料集排序,例如製作報表時有一欄是透過其他資料欄計算得出的,如下圖中「利潤」是由(單價-進價)*數量得來的,那麼這時要如何實現直接點選標題動態排序呢?

1.2 解決思路

透過新增「動態參數」類型的 超級連結 和在儲存格 擴展後排序 中新增公式來實現,即點選資料欄標題時,將該資料欄所在儲存格作為參數傳遞過去,在擴展後排序公式中接收該參數,根據參數的不同,實現不同的排序。

注1:數值類型和字元類型的設定有所不同,詳情在範例中查看。

注2:本文講解僅一欄資料變換排序,多欄動態排序請參考文檔 多欄動態排序

2. 範例:數值類型

2.1 資料準備

建立普通報表,建立資料庫查詢 ds1,SQL 查詢語句為:SELECT * FROM 訂單明細 limit 20。如下圖所示:

2.2 設計報表

將資料集中的資料拖入表格,設定 A2 儲存格的「資料設定」為「列表」,F2 儲存格中插入公式:(C2 - E2) * D2,設計報表樣式如下圖所示:

2.3 新增動態參數

選中「利潤」標題所在 F1 儲存格,新增一個「超級連結>動態參數」 a,參數值為公式:if($a=1,-1,1),如下圖所示:

2.4 設定擴展後排序

在「最父格」A2 儲存格設定,選中 A2 儲存格,選擇「儲存格屬性>擴展」,設定「擴展後排序」為升冪,輸入公式:if($a=1,F2,-F2),F2 表示按照 F2 儲存格的值進行排序。如下圖所示:

注:數值類型欄位排序時若欄位為空,需要在排序公式中給空值指派。詳情可參見 排序時數值類型欄位存在空值時報錯

注:由於只有數值類型資料才有負數,字元類型資料沒有負數,故這種排序方法只適用於「數值類型欄位」排序。

2.5 效果預覽

2.5.1 PC 端

儲存報表,點選「分頁預覽」,效果與 1.1 節效果圖一致。

2.5.2 行動端

App 端和 HTML5 端均支援,效果如下圖所示:

3. 範例:字元類型

3.1 資料準備

建立普通報表,建立資料庫查詢 ds1,SQL 查詢語句為:SELECT * FROM 銷量 where 地區='華北'。如下圖所示:

3.2 設計報表

將資料集中的資料拖入表格,設定 A2 儲存格的「資料設定」為「列表」,報表樣式如下圖所示:

3.3 新增動態參數

選中「銷售員」標題所在 B1 儲存格,新增一個「超級連結>動態參數」 參數設定如下表:

參數名
參數值類型參數值
a公式if(a=1,-1,1)
asc字串B2

步驟如下圖所示:

3.4 設定擴展後排序

選中 A2 儲存格,選擇「儲存格屬性>擴展」,設定「擴展後排序」為升冪,輸入公式:INARRAY(EVAL($asc),SORTARRAY(EVAL($asc+"[!0]")))*$a

公式說明如下表:

公式
說明

EVAL($asc) 

傳回運算式 $asc ,即 B2 儲存格計算後的結果。

$asc+"[!0]"傳回連接後的字元,即傳回 B2[!0],即 B2 儲存格擴展出來的所有值
SORTARRAY(array)

傳回排過序的 array 陣列

注:當陣列元素存在類型不一致或者無法比較時,傳回原陣列。

INARRAY(co,array)傳回 co 在陣列 array 中的位置,如果 co 不在 array 中,則傳回 0

步驟如下圖所示:

3.5 效果預覽

3.5.1 PC 端

儲存報表,點選「分頁預覽」,效果如下圖所示:

3.5.2 行動端

App 端和 HTML5 端均支援,效果如下圖所示:

4. 範本下載

已完成範本可參見:

%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\SpecialSubject\OrderReport\點選標題改變排序-數值類型.cpt

%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\SpecialSubject\OrderReport\點選標題改變排序-字元類型.cpt

點選下載範本:

點擊標題改變序列-數值型別.cpt

點擊標題改變序列-字元型別.cpt

附件列表


主題: 報表專題
已經是第一篇
已經是最後一篇
  • 有幫助
  • 沒幫助
  • 只是瀏覽
中文(繁體)

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

9s后關閉

獲取幫助
線上支援
獲取專業技術支援,快速幫助您解決問題
工作日9:00-12:00,13:30-17:30在线
頁面反饋
針對當前網頁的建議、問題反饋
售前咨詢
業務咨詢
電話:0933-790886或 0989-092892
郵箱:taiwan@fanruan.com
頁面反饋
*問題分類
不能為空
問題描述
0/1000
不能為空

反馈已提交

网络繁忙

反饋已提交

網絡繁忙