在皕杰报表的函数中,数据集函数和单元格函数都有sum求和函数,但其用法是不同的。我们先看两个函数的说明:
一、数据集函数sum
函数说明:从数据集中,从满足条件的记录中,算出给定字段或表达式的总和
语法:datasetName.sum(selectExp{,filterExp{,isRootGroupExp}})
参数说明:
selectExp 需求和的字段或表达式
filterExp 条件表达式
isRootGroupExp 是否root数据集表达式,默认为false
举例说明:
1.例1:ds1.sum(数量),将数据集ds1中的“数量”字段的所有值求和。
2.例2:ds1.sum(数量,数量>12),将数据集ds1汇总的“数量”字段大于12的值求和。
3.例3:ds1.sum(数量*单价),将数据集ds1中的“数量”和“单价”字段相乘并求和。
二、单元格函数sum
注:该函数支持excel公式导出、支持填报报表单元格自动计算
函数说明:对可扩展单元格或集合表达式进行求和
语法:sum(expression,filterExp)
参数说明:
expression 需要被求和的单元格或表达式,一般为可扩展单元格或集合表达式
filterExp 过滤条件表达式,使用@item关键字代表集合中的条目
举例说明:
1.例1:sum(F1{}),计算F1中所有记录的和,F1为扩展单元格。
2.例2:sum(A1:F1),计算A1单元格到F1单元格中所有记录的和。
3.例3:sum(A1{},@item>0),对A1单元格扩展出来的集合中的记录进行求和,并且判断A1集合中的每一个值进行判断是否大于0,如果大于0就计算,否则就不计算。A1单元格为扩展单元格。
从两个函数的说明我们可以看出,在皕杰报表中,数据集函数sum是对数据集中满足条件的字段进行求和,其表达式中sum的前面要有数据集的名称”ds.”,sum中要有求和的字段以及条件。而单元格函数是对扩展单元格或几个连续单元格中数值进行求和,直接用sum,求和的对象是单元格集合,单个单元格要用“{}”,多个连续单元格首位中间用“:”。
有人说我就用单元格求和函数sum,sum的对象采用数据集函数取数,比如sum(ds.select(运货费)),从原理上讲,这也未尝不可,但是其运算效率就不能保证了。最好还是有针对地使用函数,能用数据集函数sum处理的就不要用单元格函数sum。
再说一点函数套用的问题,比如要在sum(ds.select(运货费))这个表达式中加一个转换成整数的函数toint,加在什么位置呢?当然是加到数据前面了,就是sum(ds.select(toint(运货费)))。