在Java報(bào)表工具中,選擇特定的參數(shù)后,會(huì)返回我們要查詢的數(shù)據(jù),然而假如沒有輸入?yún)?shù)值,我們卻仍需要返回?cái)?shù)據(jù)時(shí)該怎樣處理呢?以下就用FineReport報(bào)表工具的一個(gè)例子實(shí)現(xiàn)這種參數(shù)為空時(shí)返回所有數(shù)據(jù)的效果,介紹數(shù)據(jù)源參數(shù)與報(bào)表參數(shù)的實(shí)現(xiàn)方法。
1.數(shù)據(jù)源參數(shù)實(shí)現(xiàn)參數(shù)為空選出全部
1.1 定義數(shù)據(jù)源
新建名為ds1的數(shù)據(jù)庫查詢,SQL語句
SELECT * FROM StScore WHERE 1=1
${if(len(classno) == 0,""," and ClassNo = '" + classno + "'")}
${if(len(studentno)==0,""," and StudentNo = " + studentno )}
說明:
? where 1=1表示條件永真,防止沒有之后的參數(shù)條件時(shí),where多出而導(dǎo)致出錯(cuò);
? len(classno) == 0表示參數(shù)為空;
? ${if(len(classno) == 0,""," and CLASSNO = '" + classno + "'")}表示當(dāng)參數(shù)classno為空時(shí),就返回空字符串,否則返回查詢條件and CLASSNO = ' classno' 。
1.2 模板設(shè)計(jì)
報(bào)表制作模板定義如下
綁定數(shù)據(jù)列
1.3 參數(shù)設(shè)計(jì)界面
1.3.1 打開參數(shù)設(shè)計(jì)界面,按照下圖安排參數(shù)的位置
定義參數(shù)classno控件類型為下拉框,其他定義如下圖
定義參數(shù)studentno控件類型為下拉框,并以classno的值進(jìn)行關(guān)聯(lián)查詢,定義如下
說明:動(dòng)態(tài)SQL語句SELECT * FROM STSCORE where ClassNo = '${classno}'表示直接從數(shù)據(jù)表STSCORE選取符合參數(shù)classno的數(shù)據(jù)
1.4 保存并預(yù)覽
點(diǎn)擊設(shè)計(jì)器上的分頁預(yù)覽,頁面如下圖,不輸入?yún)?shù)值,直接點(diǎn)擊查詢按鈕,返回全部數(shù)據(jù):
2.1 定義數(shù)據(jù)源
新建名為ds1的數(shù)據(jù)庫查詢,SQL語句:SELECT * FROM StScore
2.2 模板設(shè)計(jì)、綁定數(shù)據(jù)列,步驟與1.4中完全相同,此處不用贅述
2.3 定義報(bào)表參數(shù)
在菜單欄選擇報(bào)表|報(bào)表參數(shù),打開報(bào)表參數(shù)面板,添加classno和studentno兩個(gè)參數(shù),默認(rèn)值選擇字符串形式,并留空,即表示默認(rèn)值為空值,如下圖
選中A2單元格,添加過濾條件
說明:其中if(len($classno)==0,nofilter,$classno)表示若參數(shù)classno為空,則不過濾,否則返回參數(shù)值。
2.5 參數(shù)設(shè)計(jì)界面
同步驟1.3。
2.6 保存并預(yù)覽
文章轉(zhuǎn)自:http://blog.vsharing.com/fanfanzheng/A1303633.html
了解Java報(bào)表工具就從這里開始