本节将以组内序号和组间序号报表为例,讲述&运算符和seq()函数的使用方法。
我们先来看一下例子:
数据集为ds1:
SELECT 供应商.城市,供应商.公司名称,供应商.联系人姓名,供应商.联系人职务 FROM 供应商
A2单元格的主格为C2
B2单元格表达式为:=ds1.group(城市;城市:1),主格为“`0”。
C2单元格表达式为:=ds1.select(公司名称)
D2单元格表达式为:=ds1.联系人姓名
E2单元格表达式为:=ds1.联系人职务
预览如下:
在本例中报表按“城市”分成几组,如果我们想为每一组城市分别排序,我们该如果做呢?我们看一下润乾报表的实现方法。
我们将A2单元格的表达式写为:=&C2,并将左主格试为C2单元格,这样每个城市下的C2单元格扩展多少个,前面A2单元格的序号就会自动加几个了。具体用法请参见:&运算符 说明,预览效果如图所示:
描述:
从前面的介绍可知,单元格是可以扩展的,一个格子可以扩展出多个,那么如何知道某个扩展出来的格子在所有扩展出来的格子中排第几呢?此时我们就引入了&运算符,他可以获得当前格所属的某主格在所有扩展出来的格子中排第几,这种运算我们也称为层次坐标的逆运算。
表达式规则:
&Cellx
返回值:
整数,当前格所属的Cellx主格在所有扩展出来的格子中的排序
说明:
Cellx必须是当前格的主格,这样&Cellx才能够正确运算,其返回值相当于是当前格所属的Cellx主格的位置
上面这张报表是在例子12.10.1(组内序号例子)的基础上修改来的,上一个例子中我们是根据每一组城市分别进行排序的,如果我们想给所有的公司名称做一个总的排序,该如果做呢?
在A2单元格输入表达式:=seq(C2),并将A2单元格的左主格设为C2单元格。此时报表会根据所有的公司名称做一个排序。具体用法请参见: seq函数说明。
函数说明:
取得指定扩展单元格的同源号,即扩展格扩展后,将此单元格的同源格按行(列)号从小到大排序后,此单元格所在的序号。
语法:
seq({cellExp})
参数说明:
cellExp 单元格表达式,必须返回扩展格
返回值:
整数
举例:
假设A1是扩展格,B1的主格为A1,在B1单元格中写入=seq(A1),则扩展后B1的值将依次从1变到A1扩展出来的单元格的数目。