IReport主从报表中出现的问题

来源:互联网 发布:中药材 淘宝开店 要求 编辑:程序博客网 时间:2024/05/28 18:42

IReport主从报表中出现的问题

  最近在使用IReport与JasperReport做Web报表时遇到如下问题:
  在IReport中,主从报表完成制作后,在IReport中能够正常编译、运行及显示,但加入Java Web应该中时出现下列错误:
Could not load object from location : subunitlab.jasper,即主报表找不到子报表的模板(jasper)文件.
  主要原因:
  主报表找不到子报表的Jasper文件(深入分析)
  解决办法:
  在主报表中设置变量SUBREPORT_DIR(若不存在则新建),代表子报表模板文件的真识路径,设置子报表的属性Subreport Expression 的值为:$P{SUBREPORT_DIR}+"subreportname.jasper",通过程序动态设置SUBREPORT_DIR,使得主报表能够获得子报表模板文件的真识路径.
  步骤如下:
  1.设置主报表变量: SUBREPORT_DIR
  VeiwParameters选中SUBREPORT_DIR变量名Modify设置Default value Expression的值为:””;
    2.修改子报表属性
  在主报表中右击子报表,选择Subreport(other)选项,设置Subreport Expression的值为:$P{SUBREPORT_DIR}+"subreportname.jasper"
    3.在Action中动态获得子报表的真识路径,设置成SUBREPORT_DIR变量的值:param.setParameters("SUBREPORT_DIR",request.getRealPath("/Reports/")+"/");
另:对于多个子报表,做法类似,只需设置子报表属性即可(前提:所有子报表存放在同一路径下),若存放在不同的路径下, 需在主报表中建立多个表示子报表路径的变量,一一对应到各个子报表上,并通过程序一一设定其真识路径.

刘利军 2007.01.22于昆明理工大学

原创粉丝点击