扩展行校验及自动计算

报表设计界面:

扩展行校验及自动计算 - 图1

报表展现界面:

扩展行校验及自动计算 - 图2

校验规则:

列1=列2+列3+列4+列5 列1=列6+列11+列16 列2=列7+列12+列17 列3=列8+列13+列18 列4=列9+列14+列19 列5=列10+列15+列20 列6=列7+列8+列9+列10 列11=列12+列13+列14+列15 列16=列17+列18+列19+列20 行01=行02+行03+行04 行01=行06+行10+行11+行12+行13+行14+行15+行16 行06=行07+行08+行09 行02>=行07 行03>=行08 行04>=行09

需求描述:

在现有报表模板的基础上 希望按照提供的校验规则,实现数据的校验和自动计算功能,完成数据的填报录入工作。

痛点:

数据扩展行中 针对扩展出来的不同数据行 有不同的校验和计算规则 ,现状是扩展数据行只能设置一个统一的计算计算或者校验规则 ,不能根据 扩展出的特定行 设置校验或者自动计算规则。

解决方案:

使用系统中jlcase()函数获取特定标识的数据行,然后根据获取到的数据行列来设置 特定的校验和自动计算规则。 详细了解jlcase()函数使用说明方法可参考:jlcase() 函数使用说明

实现效果设置方法

情景一

校验规则 : 列1=列2+列3+列4+列5 解 读:第1列=第2列+第3列+第4列+第5列

扩展行校验及自动计算 - 图3

解决方法 :设置校验规则 ${D9}==${E9}+${F9}+${G9}+${H9} 扩展行校验及自动计算 - 图4

情景二

校验规则:行01=行02+行03+行04

解读:第1行=第2行+第3行+第4行 扩展行校验及自动计算 - 图5 解决方法 : 先设置自动计算然后设置校验 自动计算:jlcase(J9[C9==01][],J9[+1][]+J9[+2][]+J9[+3][]) 扩展行校验及自动计算 - 图6 校验:jlcase(J9[C9==01][],if(J9[][]==J9[+1][]+J9[+2][]+J9[+3][],true,false)) 扩展行校验及自动计算 - 图7

情景三

校验规则:行06=行07+行08+行09 解读:第6行=第7行+第8行+第9行 解决方法 : 由于行为扩展行,扩展行中不同的行 有不同的计算规则,利用jlcase()函数支持多组运算的功能 ,实现方法如下: 自动计算:jlcase(J9[C9==01][],J9[+1][]+J9[+2][]+J9[+3][];J9[C9==06][],J9[+1][]+J9[+2][]+J9[+3][]) 扩展行校验及自动计算 - 图8 校验:jlcase(J9[C9==06][],if(J9[][]==J9[+1][]+J9[+2][]+J9[+3][],true,false))

情景四

校验规则:行02>=07 解读:第2行>=第7行 解决方法 : 校验:jlcase(J9[C9==02][],if(J9[][]>=J9[+5][],true,false))

扩展行校验及自动计算 - 图9