反饋已提交
網絡繁忙
前面章節介紹了 SQL 語句實現下拉框參數聯動,當參數元件為下拉複選框時,如何實現同樣的聯動效果呢?如下圖所示,省份選項會跟隨地區所選值而相應變動,城市選項會跟隨地區、省份所選值相應變動。
可以透過 SQL() 函式實現資料之間的聯動,新增資料集作為各個參數框的資料字典,在後面參數框資料集中引用前面的參數作過濾。
建立普通報表,建立資料集 ds1 ,SQL 語句為:
SELECT * FROM 訂單 where 1=1
${if(len(area) == 0,"","and 貨主地區 in ('" + area + "')")}
${if(len(province) == 0,"","and 貨主省份 in ('" + province + "')")}
${if(len(city) == 0,"","and 貨主城市 in ('" + city + "')")}
,由於參數元件為複選框,因此資料集中參數需用 in 語句,如下圖所示:
設計表格樣式,將對應的欄位拖入到對應儲存格中,如下圖所示:
編輯參數面板,點選右側元件設定上方的全部新增,生成參數元件,分別點選 area、province、city 參數框,選擇下拉複選框元件,如下圖所示:
建立資料集地區選項,SQL 語句為:select distinct 貨主地區 from 訂單,因為地區是第一個參數,可以任意選擇,所以不需要聯動過濾,此處distinct 關鍵字是為了去重,如下圖所示:
建立資料集省份選項,SQL 語句為:SELECT distinct 貨主省份 FROM 訂單 where 貨主地區 in ('${area}'),因為省份需要根據地區值的不同顯示相應的省份,所以需要設定area作為過濾參數,如下圖所示:
建立資料集城市選項,SQL 語句為:SELECT distinct 貨主城市 FROM 訂單 where 貨主地區 in ('${area}') and 貨主省份 in ('${province}'),因為城市需要根據地區值、省份值的不同顯示相應的城市,所以需要設定 area、province 作為過濾參數,如下圖所示:
1)選中地區下拉複選框元件,元件名稱為 area,設定資料字典為資料查詢,資料集為地區選項,實際值和顯示值都為貨主地區,設定回傳值類型為字串,分隔符為','(即輸入法為英文半角狀態時的單引號,中間加一個逗號,此處分隔符的設定是為了將所選的多個參數值分隔開,例:當地區選擇 華北、華中 時,回傳值為 華北','華中 )
注:地區、省份元件的元件名必須跟省份、城市資料集中的參數名保持一致才可以聯動。
2)選中省份下拉複選框元件,元件名稱為 province ,設定資料字典為資料查詢,資料集為省份選項,實際值和顯示值都為貨主省份,設定回傳值類型為字串,分隔符為','(即輸入法為英文半角狀態時的單引號,中間加一個逗號,此處分隔符的設定是為了將所選的多個參數值分隔開,例:當地區選擇 華北、華中 時,回傳值為 華北','華中 )。
3)選中城市下拉複選框元件,元件名稱為 city ,設定資料字典為資料查詢,資料集為城市選項,實際值和顯示值都為貨主城市,設定回傳值類型為字串,分隔符為','(即輸入法為英文半角狀態時的單引號,中間加一個逗號,此處分隔符的設定是為了將所選的多個參數值分隔開,例:當地區選擇 華北、華中 時,回傳值為 華北','華中 )
儲存範本,點選「分頁預覽」,效果如下圖所示:
App 與 HTML 5 效果相同,如下圖所示:
已完成範本可參見:%FR_HOME%\webroot\WEB-INF\reportlets\doctw\Parameter\下拉複選框參數關聯.cpt
點選下載範本:下拉複選框參數聯動.cpt
文 檔回 饋
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉