Web报表中用switchCase实现不同条件自动计算不同的表达式
在润乾填报表中,系统提供的自动计算功能方便了使用者在录入数据后自动计算某些单元格的值,这样即加快了填报数据的速度,同时也降低录入的错误率。
下面我们来介绍一个功能丰富的自动计算函数switchCase。
switchCase函数是润乾报表中内置定义的一个JavaScript函数,可以在报表中直接使用无需用户再定义,它主要完成在不同的匹配值下返回不同表达式的计算结果,相当于各编程语言的switch case语句的功能。
switchCase函数的语法规则:
switchCase( 变量或常量, 值1, 返回值1, [值2, 返回值2, ......]缺省返回值 )
从上面的语法规则中我们可以看到,switchCase函数和润乾报表中的if函数非常相似,不同之处在于switchCase函数是用在自动计算上的,而if函数是用在单元格判断上的。
接下来,我们以一个简单的例子说明switchCase函数的用法。如在公司中,各部门的工资发放规则可能不同,销售部门当月工资的计算表达式是:日基本工资×考勤次数+当月奖金+销售额×0.05,而综合部门的工资计算表达式是:日基本工资×考勤次数+当月奖金+其它奖金。当然,其它部门有其它部门的计算规则,设计界面如下图所示:
从图上可以看出,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函数应用到自动计算譬如日期间隔、数值平均、字符串拼接等应用中,实现丰富多样的功能。