在Java報表軟件FineReport中,選擇特定的參數(如下圖中的姓名、身份證號等)后,會返回我們要查詢的數據,然而假如沒有輸入參數值,我們卻仍需要返回數據時該怎樣處理呢?應該過濾掉這個條件,不按這個條件查詢。
1.定義數據源
新建名為ds1的數據庫查詢,SQL語句:
SELECT * FROM SHAREIDEADBA."RINCERETBCHILDREN" where 1=1 ${if(len(txtname) == 0,"","and childname = '" + txtname + "'")} ${if(len(txtcard) == 0,"","and idcard like '%" + txtcard + "%'")}
解釋:
SHAREIDEADBA."RINCERETBCHILDREN"為表名
where 1=1表示條件永真,防止沒有之后的參數條件時,where多出而導致出錯;
txtname txtcard分別代表姓名輸入框、身份證號模糊查詢輸入框的控件名屬性值,如下圖所示
len(txtname) == 0表示參數為空;
${if(len(txtcard) == 0,"","and idcard like '%" + txtcard + "%'")}表示當參數txtcard為空時,就返回空字符串,否則返回查詢條件
idcard like '%" + txtcard + "%'") 。。
2.設計模板(省略了...)
3.結果:
一、不輸入查詢條件時,查看所有信息
二、按姓名查詢
三、按姓名和身份證號查詢
ok了,可浪費了我整整一個早上的時間才做出來。。。。