巧用参数注入

编辑
文档创建者:文档助手1 (67727 )     浏览次数:8369次     编辑次数:4次     最近更新:Holly 于 2016-12-09     

目录:

1. 问题描述编辑

对于多数据集关联报表,当数据很大时报表的展现速度就会很慢,或通过写sql语句又很复杂。为此FineReport提供一种,既可加快报表的展现速度,又不用编写复杂的sql语句的方案。即使用动态参数注入功能。

2. 原理编辑

动态参数注入,是通过注入的值对数据库中的数据进行操作的,只是取对应的数据,所以会提高报表的性能。

3. 示例编辑

新建模板
展现多个关联数据表的数据
SQL语句,ds1:SELECT * FROM 订单
SQL语句,ds2:SELECT * FROM 订单明细
报表样式
222
传统做法:先定义多个数据集,然后在报表中设置过滤条件,或使用连接将多个数据表定义成一个sql,但这两种方案会产生的一系列问题(具体下面有介绍)。而使用动态参数注入的功能可解决大数量报表展现的速度,下面对比看下这三种做法。
3.1 设置过滤
此方法是定义两个数据集查询出所有数据,然后在报表中设置过滤条件。
分页预览刚刚制作的报表,从日志中可看出,是将第二个数据集中的数据全部取出了,如下所示:
222
注:对于数据量大的报表,若将数据全部取出会降低报表的性能,因此会降低报表的展现速度。
3.2 定义sql
若是采用将两个数据集定义成一个数据集,则SQL语句为:select a.订单ID,订购日期,到货日期,发货日期,产品ID,单价,数量,进价,折扣 from 订单 a,订单明细 b where a.订单ID=b.订单ID
注:当数据集很多时, 这样定义sql很麻烦,看了也觉得很复杂。
3.3 使用动态参数注入
修改sql语句
将上述模板中,数据集ds2的sql语句,修改成:SELECT * FROM 订单明细 where 订单ID =${orderid},并将参数orderid设置个默认值为订单ID中的一个值,如:10248。
参数注入设置
双击原进行过滤的E2单元格,在弹出数据列对话框中,点击动态参数注入按钮,弹出动态参数注入对话框,然后点击插入:名字和值分别为数据集ds2的参数:orderid和数据集ds1对应数据列所在的单元格:A2,且同时删除过滤条件,如下图:
222
点击设计器预览,日志中可看出每执行一行就只是取出的对应订单ID的那条数据,如下图所示:
222

注:动态参数注入功能适用于大数据量报表,能够明显的体现出速度优势,而上文中的模板只是介绍其方法的。

附件列表


主题: 性能优化
如果您认为本文档还有待完善,请编辑

文档内容仅供参考,如果你需要获取更多帮助,请咨询帆软技术支持
关于技术问题,您还可以通过帆软论坛获取帮助,论坛上有非常多的大神,有些水平比帆软工程师还要高哦。
若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201

此页面有帮助吗?