如何利用分析报表
FineReport
实现多数据集层式报表
1.
问题描述
若报表使用的数据量是上百万条的话,
觉得报表展现的速度慢,
可以使用层式报表来提
高报表展现速度。
但由层式报表章节可以得知,
层式报表必须是单数据集,
若是多数据集的
模板且数据量又很大,想要提高报表的查询速度要如何实现呢?
2.
实现思路
在定义数据集时通过使用数据库本身的行序号或者使用数据库函数生成行序号(即行
号)并且在
where
条件中通过页码参数使得行号在一定范围内显示,点击自定义的上一页
下一页按钮时重新传入页码参数取出相应的数据。
注:
SQL
Server2000
无法生成行号,因此需要定义存储过程实现分页查询,以下具体介
绍
Access
实现分页的步骤,
SQL
Server2005
以及
Oracle
数据库实现分页的步骤有一点区别,
以下会详细介绍。
3.
Access
分页示例
3.1
新建模板
新建模板
mutipage.cpt
,为了加快展示速度,我们可以使用分页查询,获取每个产品的
详细信息并计算产品对应的订单中的应付金额,
因此添加数据集时查询
SQL
语句为
select
产
品
.
产品
ID,
产品名称
,
供应商
ID
,
类别
ID,
单位数量
,
产品
.
单价
,
产品
.
库存量
,
产品
.
订购
量
,sum(
应付金额
)
as
应付款项
from
产品
,
订单
,
订单明细
where
产品
.
产品
ID=
订单明细
.
产品
ID
and
订单明细
.
订单
ID=
订单
.
订单
ID
and
产品
.
产品
ID
between
10*(${page}-1)+1
and
10*${page}
group
by
产品
.
产品
ID,
产品名称
,
供应商
ID
,
类别
ID,
单位数量
,
产品
.
单价
,
产
品
.
库存量
,
产品
.
订购量
order
by
产品
.
产品
ID
,设置参数
page
的默认值为
1
,首次看到的
是第一页,只查询出第
1~20
条记录;若
page
参数为
2
时,查询出第
21~40
条记录,即第二
页内容。
注:
这边定义报表每页显示
10
条数据,
即
ds1
的查询
SQL
一次只取
10
条数据,
从而加
快报表展示速度。
3.2
自定义上一页、下一页按钮
使用分页查询后,报表需要根据
page
参数查询出行号在一定范围内的数据,当点击下
一页时,
page
需要加
1
并传入报表查询出后
10
条记录;
点击上一页时,
page
需要减
1
并传
入报表查询出前
10
条记录。而报表内置的上一页下一页按钮无法做这些操作,因此需要自