3.3.2数据校验
数据校验用于校验填报用户填报的内容是否符合一定的规则,简单的校验在每个控件独立的校验中可以完成,填报属性的数据校验选项卡可以通过函数配置更为复杂的校验。
点击数据校验右上角的“+”可以添加一条新的校验规则。

图3.3.2.1 添加校验规则
点击校验公式空白的位置可以打开公式配置界面,公式配置界面包括公式配置区、可选函数区、函数说明区和可选参数字段列表区。

图3.3.2.2 公式配置
公式配置:可通过双击添加函数和变量完成整个公式配置,函数和变量都可以通过双击添加,不建议手动输入,因为函数和变量生成都有一定规则,手动输入缺失内容可能会导致公式无法正常生效。
可选函数:目前支持的所有函数均在列表中展示,可通过修改函数类型查看不同类型下的可用函数,目前包括比较函数、日期函数和数据源函数三种类型。
函数说明:描述当前选中函数的用法以及返回值。
变量:展示当前可用的参数和字段,参数要作为过滤器添加到报表中此处才会展示出来,字段列表读取的是回写规则中配置的回写表添加的字段,如果有多个回写规则,则区分回写规则分别展示每个回写规则下的字段。
配置完公式后点击确定可以关闭回写规则配置界面,然后在文本框中输入校验不通过时展示给用户的提示信息,也可配置回写字段,获取页面展示字段,使提示语更灵活。
操作区可设置此校验公式不适用哪个规则,默认是全部不勾选,即所有规则都需要参与校验。

图3.3.2.3 校验出错信息

图3.3.2.4 校验出错信息灵活配置位置

图3.3.2.5 校验出错信息配置填报回写字段

图3.3.2.6 校验出错信息配置不适用规则
下面几个例子可以说明校验规则的用法。
示例一:指定2个字段比较大小
使用“小于等于”函数,配置开始数值1小于等于数值2:
$^F_数值1$ <= $^F_数值2$

图3.3.2.7 比较数值大小校验规则配置
效果如下:

图3.3.2.8 校验效果
示例二:日期型字段比较大小
使用“dateBefore”函数,配置dateBefore($^F_开始日期$, $^F_结束日期$)

图3.3.2.9 比较日期大小校验规则配置
效果如下:

图3.3.2.10 校验效果
示例三:指定两个字段判断逻辑,如没车不能填车牌号
等价例子姓名是张三的人不能填备注,使用“等于”、“不等于”、“并”和“非”实现,配置姓名等于“张三”且备注不为空取反:
!($^F_c_name$ == "张三" && $^F_c_bz$ != "")

图3.3.2.11 校验规则配置
效果如下:

图3.3.2.12 校验效果
【不适用规则使用说明】
用一个例子说明此功能的用法,新建一个填报报表。

针对此报表,配置两个回写规则。

设置校验规则,不适用于规则为默认的情况,即所有规则都需要参与校验。

在视图界面,输入区域为空,点击提交,校验不通过,弹出错误提示。

更改不适用规则,选择“填报”,即对“填报”这个规则不做此数据校验。

再次回到视图界面,提交一样的数据,可以成功提交。

示例三:指定参数校验,如参数月份小于当前月份
使用monthOfDatetime函数取月份值,stringToDate函数将字段转为日期型,TODAY函数获取当前日期,配置参数先转为日期格式,再取参数的月份,当前日期取月份,两个月份做比较。
monthOfDatetime(stringToDate($^P_开始日期_1127$,"yyyy-MM-dd")) <= monthOfDatetime(TODAY)

图3.3.2.10 校验规则配置
效果如下:

图3.3.2.11 校验效果
示例四:判断当前填报内容在数据库中是否已存在,如已存在,不允许提交
使用member函数和distinctGroup函数,数据源函数distinctGroup用于获取数据源中不重复的字段c_name值,member函数用于判断填报的c_name值在distinctGroup取到的数组中是否存在,因存在返回true,故需要取反实现校验。
!member($^F_c_name$, distinctGroup($^DSF_v0521.c_name$))
distinctGroup函数的字段需要从左侧数据源列表拖入,即使填报报表没有配置字段,也需要把要判断的库和表添加到数据源列表。

图3.3.2.12 校验规则配置
效果如下:

图3.3.2.13 校验效果