Java報(bào)表軟件中參數(shù)為空選出全部
Posted on 2011-01-02 09:31 FineReport——報(bào)表技術(shù)領(lǐng)跑者 閱讀(595) 評(píng)論(0) 編輯 收藏 所屬分類: Java報(bào)表技術(shù)知識(shí)在Java報(bào)表軟件中,選擇特定的參數(shù)后,會(huì)返回我們要查詢的數(shù)據(jù),然而假如沒(méi)有輸入?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ù)庫(kù)查詢,SQL語(yǔ)句
SELECT * FROM StScore WHERE 1=1
${if(len(classno) == 0,""," and ClassNo = '" + classno + "'")}
${if(len(studentno)==0,""," and StudentNo = " + studentno )}
說(shuō)明:
? where 1=1表示條件永真,防止沒(méi)有之后的參數(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 打開(kāi)參數(shù)設(shè)計(jì)界面,按照下圖安排參數(shù)的位置
定義參數(shù)classno控件類型為下拉框,其他定義如下圖
定義參數(shù)studentno控件類型為下拉框,并以classno的值進(jìn)行關(guān)聯(lián)查詢,定義如下
說(shuō)明:動(dòng)態(tài)SQL語(yǔ)句SELECT * FROM STSCORE where ClassNo = '${classno}'表示直接從數(shù)據(jù)表STSCORE選取符合參數(shù)classno的數(shù)據(jù)
1.4 保存并預(yù)覽
點(diǎn)擊設(shè)計(jì)器上的分頁(yè)預(yù)覽,頁(yè)面如下圖,不輸入?yún)?shù)值,直接點(diǎn)擊查詢按鈕,返回全部數(shù)據(jù):
2.1 定義數(shù)據(jù)源
新建名為ds1的數(shù)據(jù)庫(kù)查詢,SQL語(yǔ)句:SELECT * FROM StScore
2.2 模板設(shè)計(jì)、綁定數(shù)據(jù)列,步驟與1.4中完全相同,此處不用贅述
2.3 定義報(bào)表參數(shù)
在菜單欄選擇報(bào)表|報(bào)表參數(shù),打開(kāi)報(bào)表參數(shù)面板,添加classno和studentno兩個(gè)參數(shù),默認(rèn)值選擇字符串形式,并留空,即表示默認(rèn)值為空值,如下圖
選中A2單元格,添加過(guò)濾條件
說(shuō)明:其中if(len($classno)==0,nofilter,$classno)表示若參數(shù)classno為空,則不過(guò)濾,否則返回參數(shù)值。
2.5 參數(shù)設(shè)計(jì)界面
同步驟1.3。
2.6 保存并預(yù)覽
文章轉(zhuǎn)自:http://blog.vsharing.com/fanfanzheng/A1303633.html