反饋已提交

網絡繁忙

橫向擴展欄多欄排序

一、概述

  1. 使用場景:報表預覽時點擊欄標題,可對該欄進行升降排序,而欄標題是根據欄位橫向擴展得來的。

  2. 實現思路:獲取點擊欄的所有值,然後在目標欄位的儲存格屬性中設定擴展後排序,目標欄根據點擊欄的所有值進行排序。

二、範例

1
資料準備。
  1. 建立普通報表,建立資料庫查詢 ds1,輸入 SQL 語句:SELECT * FROM 銷量。如下圖所示。


image.png

 

2
設計報表。
  1. 設計表格樣式如下圖所示。

  2. 儲存格屬性設定如下表所示。

注:欄位設定為【彙總】時擴展屬性會自動變為【不擴展】,可以透過儲存格左上角的灰色箭頭查看儲存格的擴展方向。

 

image (1).png

 

儲存格

資料集

資料欄

屬性

A2

ds1

銷售員

從上到下擴展,置中,其餘預設。

B1

ds1 

産品

從左到右擴展,置中,其餘預設。

B2

ds1

銷量

不擴展,資料設定:彙總-求和,置中,其餘預設。

 

3
新增動態參數。
  1. 給 B1 儲存格新增一個動態參數型別的超連結,重命名為【排序】。

  2. 並新增兩個參數 【order 】和 【index】,【order 】的參數值為公式:if($order = 1, -1, 1),index 的參數值為公式:【&B1】,如下圖所示。

注:【index】參數值為 【&B1】,即點擊時設定 【index】的值為所點擊的儲存格的序號。

 

image (2).png

 

4
設定擴展後排序。
  1. 選中 A2 儲存格,點擊右邊屬性面板【儲存格屬性】→【擴展】,設定【擴展後排序】為【升冪】,輸入公式:if(isnull(index), A2, if(order = 1, EVAL("B2[;B1:" + index + "]"), EVAL("-1*B2[;B1:" +index + "]"))) 。步驟如下圖所示。公式說明如下表。

  2. 該公式的含義為:【order】為 1 時,按照 EVAL("B2[;B1:" + $index + "]") 獲取到的點擊欄的值進行升冪排列。

    【order】為 -1 時,將獲取到的點擊欄的值處理為負數,然後按照負數進行升冪排列。

公式

說明

isnull($index)

判斷 【index 】是否為空字串。【index】 在初始化時為空,點擊欄標題後被指派為 【&B1】,即所點擊的儲存格的序號。 注:參數為空時,以 A2 儲存格排序,可提高第一次點擊標題排序時的效能。

"B2[;B1:" + $index + "]"

傳回 B1 儲存格擴展出來的第 【$index】 個值對應的 B2 儲存格值,詳情可參考:層次座標

EVAL()

傳回字串表式。

 

image (3).png

 

5
效果預覽。
  1. 儲存範本,點擊【分頁預覽】,排序效果如下圖所示。


23.gif

 

三、範本下載。

  1. 已完成範本可參見:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doctw\SpecialSubject\OrderReport\橫向擴充欄多欄排序.cpt。

  2. 或者點擊下載範本。

橫向擴充欄多欄排序.cpt


附件列表


主題: 報表專題
  • 有幫助
  • 沒幫助
  • 只是瀏覽
  • 圖片不清晰
  • 用語看不懂
  • 功能說明看不懂
  • 操作說明太簡單
  • 內容有錯誤
中文(繁體)

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

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

不再提示

10s後關閉

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

反馈已提交

网络繁忙