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