在Java報表的實際應(yīng)用中,常常會遇到這樣的情況,設(shè)計器預(yù)覽時輸入的參數(shù)值數(shù)據(jù)正常變化,但是在瀏覽器進行分頁預(yù)覽時,更改參數(shù)值報表查詢出的數(shù)據(jù)卻不變。
對于這種情況,可能的原因是報表軟件的參數(shù)界面中參數(shù)控件的名字與參數(shù)名不一致導(dǎo)致,需要核對控件名。該錯誤常常發(fā)生在如報表設(shè)計過程中,某張模板已經(jīng)做好,但由于需要修改了參數(shù)定義,未對參數(shù)界面作相應(yīng)的修改的時候。
如下以實際的例子演示。
1. 新建報表
2. 定義數(shù)據(jù)集
新建數(shù)據(jù)庫查詢ds1并定義數(shù)據(jù)源參數(shù)class,SQL語句為:
SELECT * FROM STSCORE where ClassNo = '${class}'
3. 模板制作
如下制作報表
4. 定義參數(shù)界面
使用默認(rèn)的參數(shù)界面,如下圖:

5. 修改參數(shù)定義
由于需要,將數(shù)據(jù)源參數(shù)名改為classno,如SELECT * FROM STSCORE where ClassNo = '${classno}'
但未對參數(shù)界面進行修正,參數(shù)控件名仍為class,如下圖

6. 保存并預(yù)覽
保存模板,進行設(shè)計器預(yù)覽,對classno賦值能正確獲得結(jié)果。但點擊設(shè)計器分頁預(yù)覽,在參數(shù)界面中設(shè)置參數(shù)值時,由于在參數(shù)界面中輸入的值是賦給參數(shù)控件,而參數(shù)控件又根據(jù)控件名與參數(shù)一一對應(yīng)起來,此時控件名為class,而參數(shù)已變?yōu)?span lang="EN-US">classno,因此參數(shù)不能正確獲得值,查詢結(jié)果便出錯了。
文章轉(zhuǎn)自:http://ajavareport.cn/archives/557