(上图是第一页的页面下半部分内容)
(上图是第二页的页面上半部分内容)
第二页的下半部分与第一页下半部分相同,第三页的格式与第二页相同,以下
图例为最后一页的内容:
(上图是最后一页的页面上半部分内容)
(上图是最后一页的页面下半部分内容)
3.8 在iReport 中定义与使用参数
参数用来在报表运行时动态传递某些数据,如SQL 查询中的条件,报表中需要动态显示的数据等,定义参数的方法为:选择“View”主菜单,选择“Report Parameters”项,打开当前报表中的参数列表窗口,点击“New”来新增参数,在新增参数对话框中输入参数的名称、数据类型、缺省值以及参数的描述信息等,如下图所示:
需要注意的是,根据不同的参数类型,在设置参数的缺省值时要使值能与参数类型匹配,即字符型的参数在设置缺省值时要用””把值括起来,如果是数据值型的则不能加””。
参数在iReport 设计器中的使用也很简单,使用方法与使用数据库字段类似,只是需要将$F 改为$P,即,参数数据的表达格式为$P{参数名称},同时注意参数名称是大小写敏感的。
3.9 怎样定义与使用变量
何时使用变量呢?对于一些可以由报表系统自己产生而不必需要从外界传入的数据,如报表的打印时间等,我们可以通过定义一个变量来解决这类小问题。
定义过程如下:选择“View”菜单,选择“Report Variables”项,点击“New”按钮, 在变量名称处输入您要定义的变量名称,如:PrintDate,选择变量类型,设置变量的初始值,设置合适的变量计算类型。
保存变量后,打开字段设计窗口,修改里面的内容为如下所示:
主要修改了三个地方,一是字段的类型,必须要和变量所定义的类型相符,二是字段的取值,变量类型的格式为:$V(变量名),三是变量的输出格式,即在Pattern 中设置正确的格式,如取小时和分钟的话可以设置为:HH 时MM 分。
使用变量的报表结果如下所示:
4. JasperReport 在程序中的应用
4.1 在JSP 程序中的应用示例 4.1.1 JSP 服务器运行环境的配置
运行JasperReport 之前,需要在已有的JSP 服务器环境中再修改一些配置,最简单的办法就是直接把iReport 设计器中的lib 目录下的所有扩展名为.JAR 的
文件都复制到JSP 服务器的web-inf\\lib 目录中,如果原来的web-inf\\lib 目录中已经有某Jar 的老版本程序存在,还需要清理一下那些老版本的JAR 文件。
4.1.2 JSP 代码内容
<%@ page contentType=\<%@ page import=\
<%@ page import=\<%@ page import=\<%@ page import=\<%@ page import=\<%@ page import=\<%
//报表编译之后生成的.jasper 文件的存放位置 File reportFile = new File(application.getRealPath(\
//这个是用来联接我的SQL Server 的JDBC URL String url =\Class.forName(\
//传递报表中用到的参数值
Map parameters = new HashMap();
//\是报表中定义过的一个参数名称,其类型为String 型 parameters.put(\裴贺先\System.out.println(\//连接到数据库
Connection conn = DriverManager.getConnection(url,\System.out.println(\//在控制台显示一下报表文件的物理路径
System.out.println(reportFile.getPath()); byte[]
bytes=JasperRunManager.runReportToPdf(reportFile.getPath(),parameters,conn);
System.out.println(\response.setContentType(\response.setContentLength(bytes.length);
ServletOutputStream ouputStream = response.getOutputStream(); ouputStream.write(bytes, 0, bytes.length); ouputStream.flush(); ouputStream.close(); %>
4.1.3 运行示例JSP 程序出错的几种情况及解决方法
(1)在其他JSP 服务器程序与IIS 绑定的情况下运行出错时
上面的示例程序在我的RESIN-2.11 版JSP 服务器与Windows 2000 平台的IIS 5.0 绑定运行时,如果使用IIS 的80 端口访问会报找不到Apache 的一个log 程序,如果使用Resin服务器自己的端口访问时会报一个fill 错误,解决的办法就是不要使用服务(Service)方式启动绑定的JSP 服务器软件,直接开命令行窗口运行JSP 服务器软件。