在使用引數進行過濾時,選擇某個引數值後就會根據選擇的值進行過濾,但是如何實現如下圖效果即不輸入引數值時能夠查詢處資料表中的全部值呢?下面我們就以java圖表報表FineReport為平臺進行介紹。
工具/原料
java圖表報表FineReport7.1.1
大小:148.2M 適用平臺:windows/linux
方法一:通過資料集引數
開啟模板
修改資料集
將資料集修改為:SELECT * FROM 訂單 where 1=1 ${if(len(area) == 0,"","and 貨主地區 = '" + area + "'")} ${if(len(province) == 0,"","and 貨主省份 = '" + province + "'")}。
注:where 1=1表示條件永真,防止沒有之後的引數條件時,where多出而導致出錯;len(area)==0表示引數area為空;貨主地區='"+area+"'表示取引數值。
${if(len(area) == 0,"","and 貨主地區 = '" + area + "'")} 表示若引數area為空就不進行過濾,若不為空則貨主地區等於引數值。
修改引數介面
將引數介面修改為如下樣式:
引數控制元件設定
設定引數area的控制元件型別為下拉框,資料字典選擇資料庫表,資料庫為FRDemo,資料表為訂單,實際值與顯示值的列名都選擇貨主地區。
設定引數province的控制元件型別也為下拉框,資料字典為資料庫表,資料庫為FRDemo,資料表為訂單,實際值與顯示值的列名都選擇貨主省份。
效果檢視
點選分頁預覽,不輸入引數值後,直接點選查詢,效果如上圖。
方法二:通過報表引數
開啟模板
修改資料集
將資料集修改為查詢訂單表的資料即:SELECT * FROM 訂單。
報表引數設定
點選模板>報表引數,新增兩個報表引數,分別為area和province。
過濾條件設定
點選A2單元格,選擇格子上方的過濾按鈕,給A2單元格增加如下圖所示的過濾條件:
注:nofilter表示不過濾,if(len($area)==0,nofilter,$area)表示引數area為空,就不過濾,若不為空則以引數值進行過濾;if(len($province)==0,nofilter,$province)意義相同。
效果檢視
點選分頁預覽,不輸入引數值後,直接點選查詢效果如上圖。