1. 概述
1.1 版本
報表伺服器版本 | 功能變更 |
---|---|
11.0 | - |
1.2 預期效果
資料庫中有 3 個級別的資料,分別是地區,城市,以及客戶名稱,如果想實現同時選擇查詢出華東地區下所有公司以及北京的某個公司的資料,這個該怎麼實現呢?效果如下:
2. 報表設計
2.1 資料準備
建立 3 個資料查詢 ds1,ds2,ds3
ds1:SELECT * FROM 客戶
ds2:SELECT * FROM 客戶 where 地區 = '${layer1}'
ds3:SELECT * FROM 客戶 where 城市 = '${layer2}',實際值為客戶 ID。
2.2 表格設計
報表主體設計如下圖:
3. 構建下拉樹
3.1 建立範本參數
切換到參數介面,點選菜單欄中的「範本>範本參數」,點選新增按鈕,建立範本參數 tree 。
3.2 構建樹
1)點選右側上方的元件按鈕,可以將參數新增到參數介面。
2)選擇標籤元件,可設定元件名稱。
3)選中參數元件,可將元件的類型選擇為下拉樹。
4)選中下拉樹元件,在元件屬性面板中點選「資料字典」,開始構建樹。
構建方式選擇「普通分層構建」
層次 1:選擇 ds1,實際值和顯示值都為地區。
層次 2:選擇 ds2,實際值和顯示值都為城市。
層次 3:選擇 ds3,實際值為客戶 ID,顯示值為客戶名稱。
注:此處使用的是欄序號選取實際值和顯示值,亦可使用欄名選取實際值和顯示值。
3.3 屬性設定
在下拉樹元件。
裏面勾選多選,即使用多選下拉樹,如果不勾選,則為單選下拉樹,其他屬性預設,屬性的具體介紹請查看如果勾選結果傳回完整層次路徑,那麼下拉樹傳回的值為完整的層次路徑,在使用時需要透過 treelayer 函式進行獲取最底層的值,如果不勾選,則可以直接使用,這裏先勾選上。
4. 過濾設定
參數介面和報表主體都設計好了之後,由於我們使用的是範本參數,需要透過參數將參數介面和報表主體聯絡起來,
雙擊 A2 儲存格,在過濾屬性中設定,客戶 ID 包含於 treelayer($tree),如下圖:
注:公式 treelayer($tree) 的意思是傳回參數 tree 中的值的最後一層資料。具體介紹請參考:treelayer 函式
如果在參數面板設定下拉樹屬性時沒有勾選【
,那麼其過濾設定如下圖:注:如果在參數面板設定下拉樹屬性時沒有勾選【結果傳回完整層次路徑】,無需使用 treelayer 函式,可直接用下拉數參數,回傳值即為 tree 的值。
5. 效果預覽
儲存範本,點選「分頁預覽」,PC 端效果如 1.2 節所示。
App 及 HTML5 效果如下圖所示:
6. 範本下載
已完成的報表參見:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doctw\Primary\widgetReport\多選下拉樹實現不同級別之間的查詢.cpt
點選下載範本:多選下拉樹實現不同級別之間的查詢.cpt