1. 概述
1.1 預期效果
當使用的資料來自檔案資料集、內建資料集時,無法透過 SQL 語句來實現下拉複選框的參數聯動,就需要透過設定公式來實現參數聯動。聯動效果如下圖所示:
1.2 實現思路
使用公式來實現下拉框的參數聯動,公式通常為資料集函數,如何使用可參考 :資料集函式
2. 範例
2.1 準備資料
建立普通報表,建立一個內建資料集Embedded1 ,如下圖所示:
2.2 新增範本參數
點選功能表列「範本>範本參數」,建立兩個範本參數「產品型別」和「產品」,如下圖所示:
2.3 新增元件
編輯參數面板,選擇全部新增,並且設定元件型別為下拉複選框元件,如下圖所示:
2.4 設定資料字典
1)選中產品型別元件,選擇「元件設定>屬性>資料字典」,型別設定為資料查詢,資料集為Embedded1,實際值和顯示值為產品型別。如下圖所示:
2)選中產品元件,選擇「元件設定>屬性>資料字典」,型別設定為公式,其中實際值處設定為 if(len($產品型別)=0,Embedded1.select(產品),eval("Embedded1.select(產品,inarray(產品型別,['"+joinarray($產品型別,"','")+"'])>0)"))
公式說明:
公式 | 說明 |
len($產品型別) | 得到產品型別參數值的長度 |
Embedded1.select(產品) | 獲取 Embedded1 資料集的產品列,函數使用可查看 資料集函式概述 |
joinarray($產品型別,"','") | 將產品型別陣列轉換成一個以 ',' 為分隔符號的字串,函數使用可查看 陣列函數概述 |
eval("Embedded1.select(產品,inarray(產品型別,['"+joinarray($產品型別,"','")+"'])>0)") | 將"Embedded1.select(產品,inarray(產品型別,['"+joinarray($產品型別,"','")+"'])>0)" 以公式結果輸出,其中作用為獲取 Embedded1 資料集的產品列,過濾條件產品型別為產品型別參數的值,函數使用可查看 其他函式概述 |
if(len($產品型別)=0,Embedded1.select(產品),eval("Embedded1.select(產品,inarray(產品型別,['"+joinarray($產品型別,"','")+"'])>0)")) | 做一個判斷,當產品型別參數無值是,傳回所有產品列,否則傳回輸入的產品型別對應的產品列 |
顯示值處空白即可,如下圖所示:
2.5 設計報表樣式
報表設計樣式如下圖所示,將 A2 儲存格擴展方式選擇「清單」。
2.6 設定過濾條件
1)雙擊 A2 儲存格,選擇過濾,設定可選列為產品型別,操作符為等於,參數為產品型別,點選增加,如下圖所示:
2)選擇過濾,設定可選列為產品,操作符為等於,參數為產品,點選增加,再次為 A2 儲存格新增一個過濾條件。如下圖所示:
2.7 效果預覽
2.7.1 PC 端
保存範本,點選「分頁預覽」,效果如 1.1 節所示。
2.7.2 行動端
App 和 HTML5 端效果相同,如下圖所示:
3. 範本下載
點選下載範本:公式實現下拉複選框參數聯動.cpt