辰哥课堂之i@Report任务设计之审核公式

4063
2

辰哥 管理员

发表于2019-4-1 18:17

楼主
主要介绍任务设计时审核公式的使用
一般而言,手机号是11位,但是填报数据的时候,如果不小心多填或者少填了一位数字,上级用户在核对表时就很难发现其中的错误,这时候审核公式的重要性就体现出来了。本章辰哥就和大家聊聊审核公式。

审核公式
一般说来,用户填写报表时,并不能完全保证输入数据的合理性和有效性,因此必须对用户的输入进行检查,这种检查就叫做审核。系统通过为报表添加审核公式实现审核,审核公式是用来检查报表输入数据的有效性和合理性的逻辑表达式,当审核公式求值结果为""时,表示当前审核不通过。

定义基本表审核公式
打开基本表后,点击 ,或者点击 ,选择“定义”-“审核公式”,就可以在打开的对话框内为当前报表定义审核公式,



审核类型分合理性审核逻辑性审核
逻辑性审核主要检查报表数据是否满足一定的逻辑性关系,如果出现逻辑性审核没有通过,则用户必须根据审核信息修改报表数据。


审核公式是用来检查报表输入数据的有效性和合理性的逻辑表达式;
添加审核公式】点击 ,系统弹出审核定义对话框,在审核定义对话框内选择审核类型,输入审核公式与提示信息后,点击


审核项是由审核类型、审核公式、提示信息组成的。其中,审核类型分合理性审核和逻辑性审核;审核公式是用来检查报表输入数据的有效性和合理性的逻辑表达式;提示信息为审核公式求值结果为"假"时的显示给用户的提示信息。

编辑审核公式】双击已添加的审核公式,或者选定已添加的审核公式后,点击 ,可在弹出的审核定义对话框内编辑当前审核公式。
删除审核公式】选定或者勾选需要删除的审核公式后,点击 即可。
导出审核公式】点击 ,可将当前审核公式对话框内的所有审核公式保存至本地磁盘。
导入审核公式】点击 ,可将本地保存的审核公式文件内的所有审核公式导入至当前审核公式对话框内。
清空审核公式】点击 ,可清空当前审核公式对话框内的所有公式。

在定义基本表表间审核公式时,要其他表的表元前面加上报表代号。

例如:
K08->D3>=B2,表示表K08的D3表元的值必须大于或等于当前表B2表元的值。

定义基本表审核公式时有种特殊情况,如某一任务中C列中的每个指标不小于G列中相应行的指标,即C列>=G列。这种情况下逐个输入审核公式是相当麻烦的,用成批定义审核公式的方法可以大大的简化报表审核公式的定义。

成批定义审核公式的方法与定义一般的审核公式相似,只是在输入审核公式时有分别。对于审核公式[C3:C21]>=[G3:G21],[C3:C21]表示C列中的3行到21行,同样[G3:G21] 表示G列中的3行到21行,系统会自动将其替换成C3>=G3,C4>=G4……如果其中一行没通过审核,系统会显示并定位在没通过审核的那一行。同时系统也支持多行多列地成块定义。

在定义基本表与变长表某一指标的合计值的审核关系时,要用到gethjh函数,如基本表B1的C3表元等于变长表B2的D4表元的合计,则审核公式为:c3=gethjh("B2->D4")。

说明:
审核公式的输入与运算公式的输入一样,既可以用键盘输入表元名,也可以用鼠标拾取表元,其拾取表元的方法与定义运算公式时拾取表元的方法是一样的。但审核公式必须是逻辑型的运算公式,即其运算后返回结果必须是逻辑型值。

定义变长表审核公式
变长表审核公式的定义方法与基本报表基本相同,不同的是变长表不仅可以定义普通的表内审核公式,也可定义各数据行行间的审核公式。


假设某个任务XXB为信息表,B0为基本表,B1,B2为变长表,定义的是变长表B1表的审核公式。B1,B2表都有代码表元字段,数据行中使用的代码分别为“110001”、“110002”,并且数据行都是第二行。

单个定义

表内审核
假设B1表中,代码为“110001”的E列的值要大于代码为“110002”的E列的值,可以定义为:TC(":110001@B1:E2","","")>TC(":110002@B1:E2","",""),可以简写成:{110001,E2}>{110002,E2},或进一步简写成:{110001,E2}>{110002 }。
假设B1表中代码为“110001”的I列的值与代码为“110002”的J列的值的差额的绝对值不大于5可以表示为:abs({110001,I2}-{110002,J2})<=5。

表间审核
如:B1表中,代码为110001的E列的值要大于B2表中代码为110002的E列的值,可以定义为:TC(":110001@B1:E2","","")>TC(":110002@B2:E2","",""),可以简写成:{110001,E2}>{110002,B2->E2}。

成批定义

表内审核
假设B1表中,代码为“110001”的E,F,G,I列的值要大于代码为“110002”的E,F,G,I列的值,可以定义为:{110001,E2:G2,I2}>{110002,E2:G2,I2},或者简写成:{110001,E2:G2,I2}>{110002}。

表间审核
表间审核与表内审核基本相同,只需在表元名前面带上表名即可。

说明:
1. 简写公式{110001,E2:G2,I2}中,代码后面可以接一个或多个变长表表元或者表元数组。
2. 简写公式可以当作参数出现在其他公式中。
3. 如果代码后面不接任何表元如{110001}>{110002}表示代码为110001的这一行的所有数值型表元(浮点或整数)大于代码为110002的这一行的所有数值型表元。

关于填写审核公式的注意事项
1. 批定义时要审核的表元必须是连续的表元块。
2. 表元数组维数要相等。如:[A1:A10]>[B1:B11]是不合法的审核公式,因为[A1:A10]有十个表元,维数是十,而[B1:B11]有十一个表元,维数是十一,故维数不相等。
3. 对于不是线性的表元数组,它的对应顺序是先行后列,如[A1:B2],它的对应顺序是:A1、A2、B1、B2。
4. 表元数组的倒序定义也是合法的,即:[A1:A10]和[A10:A1]是相等的。
5. 多行多列成块定义审核公式时各个块所包含的表元行列数据应相互匹配。如:[A1:D10]>[E1:H11]是不合法的审核公式,因为[A1: D10]是4列10行,而[E1:H11] 是4列11行。
6. 多行多列成块定义审核公式时块中可包含固定表元,审核时系统会自动绕过固定表元。
7. 合理性审核公式的定义方法与逻辑性审核公式的定义方法是一样的。

最近看过此主题的会员

v笑向前走

2个回答

只看楼主

韦韬然 数据老手Lv5

发表于2019-4-1 18:34

只看该作者

取消 关注该作者的回复

沙发

辰哥课堂刷屏了~v~

辰哥 管理员

发表于2019-4-9 11:43

只看该作者

取消 关注该作者的回复

板凳

韦韬然 发表于 2019-4-1 18:34
辰哥课堂刷屏了~v~

刷下存在感!

登录后可回答问题,请登录注册

快速回复 返回顶部 返回列表

小时

全天响应

分钟

快速处理问题

工程师强势助力

明星产品
解决方案
联系合作

400咨询:400-0011-866

技术支持QQ:400-0011-866(工作日9:00-18:00)

产品建议邮箱yixin@esensoft.com

关注我们

扫TA学习更多干货

一对一专家交流

版权所有© 2006-2024 北京亿信华辰软件有限责任公司 京ICP备07017321号 京公网安备11010802016281号