两个数据集相关联如何提高运行效率
在报表中使用多个数据集的时候,可能需要将数据集之间进行一个关联。一般情况下我们会在单元格中这么写:
这样写确实没有问题,但是如果这样的关联比较多的话,会导致报表运行速度特别慢,影响效率。
对于这种情况,可以通过参数将两个数据集关联起来,并且可以提高报表的运行效率。下面就一起来看一下如何做:
第一步,建立两个数据集ds1和ds2
Ds1:SELECT 订单.订单ID,订单.订购日期,订单.货主名称 FROM 订单 where 订单.订单ID <10370
(注意:该数据集中”where 订单.订单ID <10307”可以去掉)
Ds2::SELECT 订单明细.订单ID,订单明细.数量,订单明细.单价 FROM 订单明细 where 订单ID in (?)
然后为ds2数据集增加一个参数:
第二步:
为报表增加一个动态参数arg1
其中值表达式为:query(“select 订单.订单ID from 订单 where 订单.订单ID <10370″)
其实query中的SQL就是数据集ds1中的SQL。
这样设置的意思是参数arg1的值为ds1数据集当中查询出来的“订单ID”,如此一来,数据集ds2当中的”where d订单明细.订单ID in (?)”就可以取到这个参数的值了。
同时,报表设计可改成如下样式:
这样可以避免在单元格中进行大量的匹配关联的运算,可以提高报表的运行效率。