1. 概述
1.1 版本
報表伺服器版本 | 功能變更 |
---|---|
11.0 | -- |
1.2 預期效果
前面章節介紹了 SQL 語句實現下拉框參數聯動,當參數元件為下拉複選框時,如何實現同樣的聯動效果呢?如下圖所示,省份選項會跟隨地區所選值而相應變動,城市選項會跟隨地區、省份所選值相應變動。
1.3 實現思路
可以透過 SQL() 函式實現資料之間的聯動,新增資料集作為各個參數框的資料字典,在後面參數框資料集中引用前面的參數作過濾。
2. 操作步驟
2.1 準備資料
建立普通報表,建立資料集 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 語句,如下圖所示:
2.2 設計表格
設計表格樣式,將對應的欄位拖入到對應儲存格中,如下圖所示:
2.3 新增參數元件
編輯參數面板,點選右側元件設定上方的全部新增,生成參數元件,分別點選 area、province、city 參數框,選擇下拉複選框元件,如下圖所示:
2.4 新增參數框選項資料集
2.4.1 地區選項
建立資料集地區選項,SQL 語句為:select distinct 貨主地區 from 訂單,因為地區是第一個參數,可以任意選擇,所以不需要聯動過濾,此處distinct 關鍵字是為了去重,如下圖所示:
2.4.2 省份選項
建立資料集省份選項,SQL 語句為:SELECT distinct 貨主省份 FROM 訂單 where 貨主地區 in ('${area}'),因為省份需要根據地區值的不同顯示相應的省份,所以需要設定area作為過濾參數,如下圖所示:
2.4.3 城市選項
建立資料集城市選項,SQL 語句為:SELECT distinct 貨主城市 FROM 訂單 where 貨主地區 in ('${area}') and 貨主省份 in ('${province}'),因為城市需要根據地區值、省份值的不同顯示相應的城市,所以需要設定 area、province 作為過濾參數,如下圖所示:
2.5 設定參數元件的資料字典
1)選中地區下拉複選框元件,元件名稱為 area,設定資料字典為資料查詢,資料集為地區選項,實際值和顯示值都為貨主地區,設定回傳值類型為字串,分隔符為','(即輸入法為英文半角狀態時的單引號,中間加一個逗號,此處分隔符的設定是為了將所選的多個參數值分隔開,例:當地區選擇 華北、華中 時,回傳值為 華北','華中 )
注:地區、省份元件的元件名必須跟省份、城市資料集中的參數名保持一致才可以聯動。
2)選中省份下拉複選框元件,元件名稱為 province ,設定資料字典為資料查詢,資料集為省份選項,實際值和顯示值都為貨主省份,設定回傳值類型為字串,分隔符為','(即輸入法為英文半角狀態時的單引號,中間加一個逗號,此處分隔符的設定是為了將所選的多個參數值分隔開,例:當地區選擇 華北、華中 時,回傳值為 華北','華中 )。
3)選中城市下拉複選框元件,元件名稱為 city ,設定資料字典為資料查詢,資料集為城市選項,實際值和顯示值都為貨主城市,設定回傳值類型為字串,分隔符為','(即輸入法為英文半角狀態時的單引號,中間加一個逗號,此處分隔符的設定是為了將所選的多個參數值分隔開,例:當地區選擇 華北、華中 時,回傳值為 華北','華中 )
2.6 效果預覽
2.6.1 PC端
儲存範本,點選「分頁預覽」,效果如下圖所示:
2.6.2 行動端
App 與 HTML 5 效果相同,如下圖所示: