搜索文章

推荐内容

快逸做的更好

产品优势

您的位置: 首页 > 报表技术分享 > 快逸报表实现不同数据集数据同一行显示

快逸报表实现不同数据集数据同一行显示

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

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

那么这种报表是如何制作的呢?下面就简单实现一下

实现思路:

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

二:实现步骤:

1:首先制作报表模板,并创建数据集

新建一空白报表并命名为两个数据集同一行显示.raq,为此报表模板新建两个数据集,分别为ds1ds2ds1如下图

ds2如下图:

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

其中:

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

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

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

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

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

3:美化

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

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