反饋已提交

網絡繁忙

資料集參數實現動態欄

1. 概述

1.1 版本

報表伺服器版本
功能變更
11.0-

1.2 預期效果

使用函式實現動態欄 報表需要取出所有的資料,然後來實現動態報表,當資料量大且所選不是很多的情況下效能就慢了。

本文介紹另一種動態製作方法,該方法在資料量大時可以實現 層式報表分頁查詢,進而提高報表效能。如下圖所示:

1.3 實現思路

透過定義資料集參數,直接選出需要展示的,將資料拖入到儲存格中即可。

2. 範例

2.1 準備資料

建立普通報表

1)新增資料集 ds1,SQL 語句為:SELECT ${col} FROM 銷量。設定資料集參數 「col」,預設值為字串類型「*」,即查詢出所有資料。如下圖所示:

2)新增資料集 ds2,SQL 語句為:SELECT * FROM 銷量 limit 1。透過查詢一筆資料,來獲取表當中的所有欄位名稱。如下圖所示:

2.2 設計報表

2.2.1 表樣設計

由於不確定使用者選擇的欄位個數,因此製作範本時需要拖入所有的 6 個欄位。

1)表頭行

在 A1-F1 儲存格插入公式,將 $col 參數轉換成陣列,A1-F1 儲存格分別傳回陣列裏的第 1-6 個的值。

公式內容如下表所示:

儲存格
公式公式說明
A1INDEXOFARRAY(split($col,","),1)

INDEXOFARRAY(array,index):傳回陣列 array 的第 index 個元素。

SPLIT(String1,String2):傳回由 String2 分割 String1 組成的字串陣列。

由於參數 $col 預設值為字串類型,因此需要先轉換成陣列才能傳回正確的值。

B1INDEXOFARRAY(split($col,","),2)
C1INDEXOFARRAY(split($col,","),3)
D1INDEXOFARRAY(split($col,","),4)
E1INDEXOFARRAY(split($col,","),5)
F1INDEXOFARRAY(split($col,","),6)

操作步驟如下圖所示:

2)表內容

在 A2-F2 儲存格插入「資料」,資料集選擇 ds1,「資料」分別輸入 #1#2#3#4 、#5 、#6 ,「資料設定」為「列表」,「擴展方向」為「縱向」,如下圖所示:

注:「# 數字」代表資料對應的第幾,#1 表示第一欄的資料。

2.2.2 設定報表邊框

分別選中 A2-F2 儲存格,點選右側「條件屬性」,點選新增條件,設定「邊框屬性」為「外部邊框」。選擇公式條件類型為「公式」,公式內容為:len($$$)!=0,即儲存格有資料的話顯示邊框。如下圖所示:

2.2.3 設定表頭背景

給 A1-F1 增加「條件屬性」,選擇「背景屬性」,設定為「藍色」;選擇「邊框屬性」,設定為「外部邊框」。選擇條件類型為「公式」,公式內容為:len($$$)!=0,即儲存格有資料的話顯示背景和邊框。操作步驟同 2.2.2 節,設定介面如下圖所示:

2.3 設定參數

點選參數面板,點選「全部新增」,參數面板出現可選擇的元件,選擇「下拉複選框元件」,如下圖所示:

選中「下拉複選框元件」,元件值類型為「字串」,預設值設定為空,資料字典類型為「公式」,實際值輸入公式:TABLEDATAFIELDS("ds2"),如下圖所示:

注:參數面板中下拉複選框元件的預設值必須為空,否則無法獲取所有

2.4 設定點選事件

參數為空時,點選「查詢按鈕」,預設查詢全部

點選參數面板「查詢按鈕」,新增「點選事件」,設定參數a,值為公式TABLEDATAFIELDS("ds2"),獲取所有欄位名稱。新增 JavaScript 程式碼。如下圖所示:

JavaScript 程式碼如下:

var Widget = this.options.form.getWidgetByName("col"); 
var value =Widget.getValue(); //獲取元件實際值 
if(value==''||value==null){
/*獲取參數面板中的正文元件,判斷後賦*/
Widget.setValue(a);
_g().parameterCommit();
}

2.5 效果查看

1)PC 端

點選「分頁預覽」,當選擇對應的一些資料,點選查詢就展示對應選擇的資料,效果如下圖所示:

2)行動端

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

3. 已完成範本

點選下載範本:資料集參數實現動態欄.cpt

附件列表


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

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

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

不再提示

10s後關閉

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

反馈已提交

网络繁忙