在[url=http://www.finereport.com/]Java报表[/url]的实际应用中,常常会遇到这样的情况,设计器预览时输入的参数值数据正常变化,但是在浏览器进行分页预览时,更改参数值报表查询出的数据却不变。
对于这种情况,可能的原因是[url=http://www.finereport.com/knowledge]报表工具[/url]的参数界面中参数控件的名字与参数名不一致导致,需要核对控件名。该错误常常发生在如[url=http://www.finereport.com/category/knowledge/design]报表设计[/url]过程中,某张模板已经做好,但由于需要修改了参数定义,未对参数界面作相应的修改的时候。
如下以实际的例子演示。
1.    新建报表
2.    定义数据集
新建数据库查询ds1并定义数据源参数class,SQL语句为:
SELECT * FROM STSCORE where ClassNo = '${class}'
3.    模板制作
如下制作报表
 
[img]http://www.finereport.com/forumimages/para_samedata1.jpg[/img]
4. 定义参数界面
    使用默认的参数界面,如下图:
 
[img]http://www.finereport.com/forumimages/para_samedata2.png[/img]

5. 修改参数定义
    由于需要,将数据源参数名改为classno,如SELECT * FROM STSCORE where ClassNo = '${classno}'
但未对参数界面进行修正,参数控件名仍为class,如下图
 
[img]http://www.finereport.com/forumimages/para_samedata3.png[/img]

6. 保存并预览
    保存模板,进行设计器预览,对classno赋值能正确获得结果。但点击设计器分页预览,在参数界面中设置参数值时,由于在参数界面中输入的值是赋给参数控件,而参数控件又根据控件名与参数一一对应起来,此时控件名为class,而参数已变为classno,因此参数不能正确获得值,查询结果便出错了。
文章转自:http://ajavareport.cn/archives/557