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