在我们设计一张报表的时候,很少有里面的数据是固定不变的,常常需要根据一些条件来过滤出我们想要的数据。这就需要通过参数的形式控制报表中的数据。
在设计器中重新制作一张报表,我们为报表创建一个参数数组,利用参数数组筛选数据,其意思是显示所有输入的id号的信息。
第一步:新建报表,命名为“id.brt”
第二步:新建数据集,
ds:select * from 产品
第三步:将摘要视图中的数据集字段托放到单元格中,如下图所示:
A3单元格中表达式为:=ds.select(产品ID),设置为纵向扩展;
B3单元格中表达式为:=ds.产品名称;
C3单元格中表达式为:=ds.单位数量;
D3单元格中表达式为:=ds.单价;
E3单元格中表达式为:=ds.库存量;
第四步:创建参数
1、在摘要视图上点击新建参数图标,在出现的对话框中如下图设置:
皕杰报表参数支持多种数据类型,有整数、实数、字符串、日期、时间、日期时间、布尔、整数组、实数组、字符串组、默认,这里选择整数组。
皕杰报表参数属性缺省值支持表达式计算,不支持含有数据集函数的表达式计算。
2、单击“确定”,参数创建完成。
第五步:修改数据集
1、在摘要视图中,在ds数据集节点上右键,单击【编辑】菜单,在弹出的对话框编辑器中,选择【2,编辑查询SQL】,将查询语句修改为:
select * from 产品 where 产品ID in (?)
“select * from 产品 where 产品ID in (?)”这里接收的是数据集参数传递的值,由于我们将参数设置成数组(整数组),这里将接受一个数组,且输入的id号是无序的,所以这里用in (?)
2、选择【3,数据集参数】,单击右侧的【新建】按钮,新建一个数据集参数,单击“参数选择”下的小三角,如下图所示:
在弹出的下拉列表中选择“id”,单击“确定”,完成对数据集的编辑。
第五步:保存预览:单击工具条上的预览按钮,会弹出“请输入参数及变量值”对话框,录入相关信息,如图所示:
单击【确定】按钮,筛选出产品id为:1,5,6,8,9,10,15的产品信息,如图:
在第1节和第2节,我们介绍了参数的概念和参数的一些应用场景,接下来我们讲解一下在web中如何将参数的值传递给报表引擎。
采用Get或Post方式的url请求ReportEmitter,在请求串后添加params参数;params的格式如下:
Params=参数1名称=参数1数值;参数2名称=参数2数值;参数3名称=参数3数值… …
例如:http://IP地址:服务器端口/web路径/ReportEmitter?rpt=Demo/参数报表/时间参数.brt¶ms=year=1997;area=华南区
首先:引入taglib,在jsp的开始部分,添加如下引用:
<%@ taglib prefix="bios" uri="http://www.bijetsoft.com/BiosReportTags" %>
其次定义一个params变量,并给这个变量赋值,格式如下:
Params=参数1名称=参数1数值;参数2名称=参数2数值;参数3名称=参数3数值… …
最后,在taglib中如下引用参数:
<bios:report rpt="<%=rpt%>" params="<%=params%>" vars="<%=vars%>" height="450" />