报表设计实例——考场座位排布报表制作

考场座位排布报表制作

需求场景:

考场考试,座位排布,都是按照一定的顺序排的,一般四种排法:

第一种:横向顺序排布:

1,2,3,4,5

6,7,8,9,10

第二种:先横向顺序在逆序:
1,2,3,4,5 

10,9,8,7,6 

第三种:纵向按顺序排布: 

1 6 

2 7 

3 8 

4 9 

5 10 

第四种:纵向先顺序过去在逆序回来: 

1 10 

2 9 

3 8 

4 7 

5 6 

如果需要将这些考试排布展现在一个web报表中,如何实现呢? 在我们的报表函数中,有一个函数valueat,可以返回一个数组中的指定的元素,我们就利用这个函数来实现。 

现在,我们在快逸v5中,制作第一种排布顺序的报表 

先建立一个数据源连接,登记数据表,在建立一个数据集,在此不一一讲述步奏 

在资源中心,新建资源:

 
  

新建一个复杂报表,报表引用我们建立的数据集, 

报表设计如下图:

单元格A3表达式:ds4.count(),计算数据集的记录行数, 

C3 表示横向扩展六格,及横向一排6个座位, 

B4表达式:=to(0,A3/6) 纵向扩展,扩展A3/6的结果+1格,表示需要多少排座位; 

D4表达式:=valueat(ds4.Select(座位号,false),A4*5+C3) ds4.Select(座位号,false)表达式表示将数据集的所有的座位号数据取出,组成一个数组,放进了valueat函数里面,valueat函数取数原则从0开始,0表示第一个元素;A4*5+C3 表示A4扩展当前值*5,加上C3扩展后的当前值,表示需要取的数据是那个位置的元素。 

D5:=ds4.select1(姓名,座位号==D4) 姓名与座位号一一对应取值 

D6:=ds4.select1(证件号,座位号==D4) 证件号与座位号一一对应取值 

接下来,我们选中从C3到E7这个区域的单元格:
 

设置这些单元格的左主格为A4 ,上主格为C3


再将第三行,第一列(A列)设置隐藏行列,


这样,整个考场排布报表,我们就制作完成了, 
将报表保存好,我们看看预览效果,如图: 
     

这是第一种排布方式报表的制作,第一种跟第三种排布方式的制作一样,只需要将C3,A4两个单元格的表达式兑换过来,就可以了。 
二四两种,报表的制作,依然是valueat函数处理,但是它们的逻辑有区别,我们下次在将二四两种排布方式的报表制作。