1. 概述
下拉複選框參數為空選擇全部 線上視頻學習 請查看 參數為空選擇全部
1.1 版本
報表伺服器版本 | 功能變更 |
---|---|
11.0 | -- |
1.2 問題描述
在使用參數進行過濾時,選擇某個參數值後就會根據選擇的值進行過濾,但是如何實現如下圖效果即貨主地區下拉複選框中不選擇參數值時能夠查詢出資料表中的全部值呢?效果如下圖所示:
1.3 解決思路
下拉複選框可以透過報表參數或資料參數來實現複選,若需要實現參數為空選擇全部,可取消勾選「點選查詢前不顯示報表內容」即可。
2. 範例一:透過範本參數實現
2.1 建立資料集
新增資料集 ds1,SQL 語句為:SELECT * FROM 訂單。
2.2 報表設計
在第一列新增表頭,將資料集 ds1 的欄位依次拖入儲存格中,如下圖所示:
2.3 新增參數元件
1)新增一個標籤元件,元件值設定為貨主地區,如下圖所示:
2)新增一個「下拉複選框元件」,元件名為 area ,資料字典選擇資料庫表,資料庫為 FRDemoTW ,資料表為訂單,實際值與顯示值的列名都選擇貨主地區,回傳值類型為陣列,如下圖所示:
3)新增查詢元件,如下圖所示:4)點選參數面板空白處,在右側的屬性中,設定不勾選點選查詢前不顯示報表內容,如下圖所示:
2.4 設定過濾條件
雙擊 A2 儲存格,選擇過濾按鈕,給 A2 儲存格增加過濾條件,可選列為貨主地區,運算子為包含於,公式:if(len($area)==0,nofilter,$area) ,如下圖所示:
注:nofilter 表示不過濾,if(len($area)==0,nofilter,$area) 表示參數 area 為空,就不過濾,若不為空則以參數值進行過濾;if(len($province)==0,nofilter,$province) 意義相同。
3. 範例二:透過資料集參數實現
3.1 建立資料集
建立資料集 ds1 的 SQL 語句修改為:SELECT * FROM 訂單 where 1=1 ${if(len(area) == 0,"","and 貨主地區 in ('" + area + "')")},
公式中 ${if(len(area) == 0,"","and 貨主地區 in ('" + area + "')")} 表示若參數 area 為空就不進行過濾,若不為空則貨主地區等於參數值。如下圖所示:
注:where 1=1 表示條件永真,防止沒有之後的參數條件時,where 多出而導致出錯;len(area)==0 表示參數 area 為空;"and 貨主地區='"+area+"'" 中間的 area 表示取參數值,'+' 為字串連接符號。
3.2 報表設計
報表設計如本文 2.2 節所示。
3.3 新增參數元件
編輯參數面板,選擇「全部新增」,將「標籤元件」的元件值修改為貨主地區:,「下拉複選框元件」的資料字典選擇資料庫表,資料庫為 FRDemoTW ,資料表為訂單,實際值與顯示值的列名都選擇貨主地區,回傳值類型為字串,分隔符為 ',' ,如下圖所示:
點選參數面板空白處,在右側的屬性中,設定不勾選點選查詢前不顯示報表內容,如下圖所示:
4. 效果預覽
5. 已完成範本
1)範例一
已完成範本,可參考:%FR_HOME%\webroot\WEB-INF\reportlets\doctw\Parameter\下拉複選框實作參數為空選擇全部-報表參數.cpt
點選下載範本:下拉複選框實現參數為空選擇全部-範本參數.cpt
2)範例二
已完成範本,可參考:%FR_HOME%\webroot\WEB-INF\reportlets\doctw\Parameter\下拉複選框實作參數為空選擇全部-資料集參數.cpt
點選下載範本:下拉複選框實現參數為空選擇全部-資料集參數.cpt