知识库

推荐内容

快逸做的更好

产品优势

您的位置: 首页 > 知识库 > 设计基础 > 多数据集数据的横向无关联分片

多数据集数据的横向无关联分片

在实际的Web报表开发中,客户经常碰到需要把不同数据集的数据在同一张报表的左右两边同时显示,因为快逸报表的主格和扩展格的关系,所以普通的写法会造成右面的数据集从属于了左面数据集扩展出的格子,如下图所示:

1.png

正确的数据展示效果图如下图:

2.png

下面介绍如何设计这种报表。

一 实现思路:

最主要的就是摆脱掉主格影响,因为快逸报表每个数据集的select函数结果是一个数组,并且快逸报表支持ds.select(id)[n]的写法,n的意思是获得这个数组中的第n个数,因此我们可以先求得两个数据集中的数据条数,取数据条数多的数,再按照这个数值纵向扩展单元格,表达式为:=to(1,if(ds1.count()>ds2.count(),ds1.count(),ds2.count())),然后每个数据集都根据这个扩展的数n得到数据集数组中第n个值。

二:实现步骤:

1:首先设计报表模板,并创建数据集

新建一空白报表,为此报表模板新建两个数据集,分别为ds1,ds2,ds1如下图。

3.png

ds2如下图:

4.png

2:报表模板中填写表达式,如下图:

5.png

2:报表模板中填写表达式,如下图:其中:

A3表达式为:=to(1,if(ds1.count()>ds2.count(),ds1.count(),ds2.count())),用于纵向扩展,从1到n(n代表ds1和ds2中数据条数较大的数据。

B3表达式:=ds1.Select(id)[A3],求ds1.select(id)数据中的第A3个数据。(A3是1到n的某个数)

C3表达式:=ds1.select1(name,id==B3),求ds1中的id为B3的name值

D3表达式:=ds2.select(code)[A3],求ds2.select(code)数据中的第A3个数据。(A3是1到n的某个数)

E3表达式:=ds2.select1(number,code==D3),求ds2中的code为D3的number值

3:美化

A3是为了实现效果添加的表达式,为了美化,把A列隐藏行。

总结:用户的需求总是多种多样的,但只要理解了报表中一些表达式的工作原理,那么就可以利用这些小技巧完成复杂的报表。

发布日期:2010/03/25
本文分类: 设计基础