# 扩展行校验及自动计算 ## 报表设计界面: ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_39f8b7bdbf1df97ecdbcdda8578af481_r.png) ## 报表展现界面: ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_ef6157a8b55f6cbfb978321b1cd114f5_r.png) ## 校验规则: 列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() 函数使用说明]($document-book-help.html?docID=sjjc-1ch6qdg1c505k "jlcase() 函数使用说明")。 ## 实现效果设置方法 ### 情景一 **校验规则 :** 列1=列2+列3+列4+列5 **解 读:**第1列=第2列+第3列+第4列+第5列 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_bc5a007e084912251f550398b7d3cc1a_r.png) **解决方法 :**设置校验规则 ${D9}==${E9}+${F9}+${G9}+${H9} ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_41460346ee90f58be046dd573508ce87_r.png) ### 情景二 **校验规则:**行01=行02+行03+行04 **解读:**第1行=第2行+第3行+第4行 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_dc19e579fa5b53d9fd5546683b30aeea_r.png) **解决方法 :** 先设置自动计算然后设置校验 自动计算:jlcase(J9[C9==01][],J9[+1][]+J9[+2][]+J9[+3][]) ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_f826ee4d5a342d0231657cf4dc2c350b_r.png) 校验:jlcase(J9[C9==01][],if(J9[][]==J9[+1][]+J9[+2][]+J9[+3][],true,false)) ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_abfc3b369f305e9ebe7638ca8f1c45da_r.png) ### 情景三 **校验规则:**行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][]) ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_8c4df1a47fb711e62a0c415c95346787_r.png) 校验: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)) ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_e70074342775c2f3b2c108507ee7fbeb_r.png)
以上内容对您是否有帮助?