Web报表中用switchCase实现不同条件自动计算不同的表达式
在快逸填报表中,系统提供的自动计算功能方便了使用者在录入数据后自动计算某些单元格的值,这样即加快了填报数据的速度,同时也降低录入的错误率。
下面我们来介绍一个功能丰富的自动计算函数switchCase。
switchCase函数是快逸报表中内置定义的一个JavaScript函数,可以在报表中直接使用而无需用户再定义,它主要完成在不同的匹配值下返回不同表达式的计算结果,相当于各编程语言的switch case语句的功能。
首先,我们来介绍一下switchCase的语法规则:
switchCase( 变量或常量, 值1, 返回值1, [值2, 返回值2, ......]缺省返回值 )
从上面的语法规则中我们可以看到,switchCase函数和快逸报表中的if函数非常相似,所不同的是,switchCase函数是用在自动计算上的,而if函数是用在单元格判断上的。
接下来,我们以一个简单的例子说明switchCase的用法,如在公司中,各部门的工资发放规则可能不同,销售部门,当月工资的计算表达式是:日基本工资×考勤次数+当月奖金+销售额×0.05,而综合部门的工资计算表达式是:日基本工资×考勤次数+当月奖金+其它奖金,当然,其它部门有其它部门的计算规则,复杂报表设计" target="_blank" class="quieeLink1">设计界面如下图所示:
从图上可以看出,H6单元格为空白,需要在前面的各项数据检索出来以后自动计算。那么当月工资H6单元格的自动计算表达式如何写?看H6单元格的填报属性设置如下图所示:
其中”自动计算”属性完整的表达式是:
switchCase(${A6},”0001″,${(C6*G6)+D6+(E6*0.05)},”0002″,${(C6*G6)+D6+F6},${C6*G6+D6})
本表达式的意思是,当A6格扩展出来的值为0001时(0001代表销售部),当月工资计算公式是日基本工资×考勤次数+当月奖金+销售额×0.05,当A6格扩展出来的当前值是0002(0002代表综合部),当月工资计算公式是日基本工资×考勤次数+当月奖金+其它奖金,默认情况下返回日基本工资×考勤次+当月奖金。运行情况如图:
我们如果修改员工姓名为”张兴龙”的当月奖金及员工姓名为”孙悟空”的其它奖金后,自动计算运算的结果也随之改变,如图所示:
可以看到,由于销售部和综合部门的工资计算表达式不同,两个人的工资根据各自的工资计算表达式被自动计算出来了。
从上面的例子中,我们可以看出,switchCase函数在自动计算中起到的强大作用,一个看似复杂的填报计算表,用switchCase函数就可以轻而易举的解决。利用同样的方法,我们还可以自动计算譬如日期间隔,数值平均,字符串拼接等实现丰富多样的功能。