FineReport: 參數為空選出全部值(按條件查詢,空條件時直接過濾,不進行查詢。。)


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了,可浪費了我整整一個早上的時間才做出來。。。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM