很关键,它设置了水晶报表专用的crystalreportviewers10路径(第五步中自动建的crystalreportviewers10目录),如果设置错误,将来点击水晶报表自带的 导出和打印按钮是就会报页面错误,并且水晶报表自己的各种翻页,导出等图标也无法正常显示.
七:把编辑好的水晶报表(后缀命为rpt)放在一个目录下(我自己建了一个report目录,专门存放报表文件)
八:可以写程序了: 1.编写ReportInit类.作用:用于传递参数BH.这个类很关键,负责把java的参数值传递到水晶报表文件. 2.在页面流中增加showRpt操作:其实就是实例化一个ReportInit类. 3.编写viewer.jsp文件用来动态显示水晶报表.
后面有我的源代码,请大家批评指正.
存在的问题: 1:水晶报表导出成pdf文件时有问题:汉字显示为乱码,不知何故?此问题困扰我几个月了,没法解决 2:无法把打印/导出页面汉化:在crystalreportviewers10\js目录下有一系列strings命名的js文件,我猜测是用来国际化页面的,可是我修改 strings_zh,js,strings_en.js,没有什么效果. 3:在浏览器中显示水晶报表后,关闭显示页面,该水晶报表依然和数据库连接,(可由select * from v$session 查看oracle的连接数).如果在 viewer.jsp中加入断开连接的语句: viewer.dispose(); rptSource.dispose(); 则只能显示一页报表.并且打印和导出不能工作.
以上问题困扰我很久,虽然并不影响使用,但心中还是不是很爽.希望高手指点.
源程序:
/* * Create Date: 2004-8-14 11:06 * Create By: 李春雷 * purpose:设置水晶报表的查询参数(目前支持7个参数的查询,有用的参数为编号) */
package com.infoearth.report; import com.crystaldecisions.report.web.viewer.*; import com.crystaldecisions.sdk.occa.report.data.*; import com.crystaldecisions.reports.reportengineinterface.JPEReportSourceFactory; import com.crystaldecisions.sdk.occa.report.reportsource.IReportSourceFactory2; import com.crystaldecisions.sdk.occa.report.reportsource.IReportSource;
public class ReportInit { private IReportSource rptSource; private Fields fields; public ReportInit(){ rptSource = null; fields = null; } public IReportSource getRptsource(){ return rptSource; } public Fields getFields(){ return fields; } public boolean setReport(String fname,String rptID){ //获得查询条件 String FileName = fname + ".rpt"; String BH = rptID;
上一篇:MySQL在JSP环境下的操作应用
下一篇:如何成为一个优秀的jsp程序员
|