反饋已提交
網絡繁忙
使用函式實現動態欄 報表需要取出所有的資料,然後來實現動態欄報表,當資料量大且所選欄不是很多的情況下效能就慢了。
本文介紹另一種動態欄製作方法,該方法在資料量大時可以實現 層式報表分頁查詢,進而提高報表效能。如下圖所示:
透過定義資料集參數,直接選出需要展示的欄,將資料欄拖入到儲存格中即可。
建立普通報表
1)新增資料集 ds1,SQL 語句為:SELECT ${col} FROM 銷量。設定資料集參數 「col」,預設值為字串類型「*」,即查詢出所有資料。如下圖所示:
2)新增資料集 ds2,SQL 語句為:SELECT * FROM 銷量 limit 1。透過查詢一筆資料,來獲取表當中的所有欄位名稱。如下圖所示:
由於不確定使用者選擇的欄位個數,因此製作範本時需要拖入所有的 6 個欄位。
1)表頭行
在 A1-F1 儲存格插入公式,將 $col 參數轉換成陣列,A1-F1 儲存格分別傳回陣列裏的第 1-6 個的值。
公式內容如下表所示:
INDEXOFARRAY(array,index):傳回陣列 array 的第 index 個元素。
SPLIT(String1,String2):傳回由 String2 分割 String1 組成的字串陣列。
由於參數 $col 預設值為字串類型,因此需要先轉換成陣列才能傳回正確的值。
操作步驟如下圖所示:
2)表內容
在 A2-F2 儲存格插入「資料欄」,資料集選擇 ds1,「資料欄」分別輸入 #1、#2、#3、#4 、#5 、#6 ,「資料設定」為「列表」,「擴展方向」為「縱向」,如下圖所示:
注:「# 數字」代表資料對應的第幾欄,#1 表示第一欄的資料。
分別選中 A2-F2 儲存格,點選右側「條件屬性」,點選新增條件,設定「邊框屬性」為「外部邊框」。選擇公式條件類型為「公式」,公式內容為:len($$$)!=0,即儲存格有資料的話顯示邊框。如下圖所示:
給 A1-F1 增加「條件屬性」,選擇「背景屬性」,設定為「藍色」;選擇「邊框屬性」,設定為「外部邊框」。選擇條件類型為「公式」,公式內容為:len($$$)!=0,即儲存格有資料的話顯示背景和邊框。操作步驟同 2.2.2 節,設定介面如下圖所示:
點選參數面板,點選「全部新增」,參數面板出現可選擇的元件,選擇「下拉複選框元件」,如下圖所示:
選中「下拉複選框元件」,元件值類型為「字串」,預設值設定為空,資料字典類型為「公式」,實際值輸入公式:TABLEDATAFIELDS("ds2"),如下圖所示:
注:參數面板中下拉複選框元件的預設值必須為空,否則無法獲取所有欄。
參數為空時,點選「查詢按鈕」,預設查詢全部欄。
點選參數面板「查詢按鈕」,新增「點選事件」,設定參數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();}
1)PC 端
點選「分頁預覽」,當選擇對應的一些資料欄,點選查詢就展示對應選擇欄的資料,效果如下圖所示:
2)行動端
APP 端和 HTML5 端均支援,效果如下圖所示:
點選下載範本:資料集參數實現動態欄.cpt
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉
反馈已提交
网络繁忙