1. 概述编辑
1.1 应用场景
有时候需要校验某个字段下的填报数据是否重复,如有重复值,则提示校验出错信息且不允许提交入库。
1.2 实现思路
将填报单元格作为数组,在另外两个单元格中设置公式,其中一个公式得到数组原值,另一个公式得到数组去重后的值。
如果数组内有重复数据,那么这两个单元格的值是不一样的,最后在提交校验中对这两个单元格进行校验,如果单元格值相等,则允许提交,不相等则报错。
2. 示例编辑
2.1 准备数据
新建数据查询数据集 ds1,SQL 语句为:SELECT * FROM 销售总额
2.2 设计表格
1)设计填报表格,将销售员和销售总额字段分别拖入到 A2 和 B2 单元格,并添加文本控件,A5 和 B5 单元格添加 2 个公式,如下图所示:
A5 单元格公式:JOINARRAY([A2], ""),返回 A2 单元格扩展出来所有值的字符串,重复数据保留,不加间隔符号
B5 单元格公式:JOINARRAY(UNIQUEARRAY([A2]), ""),返回 A2 单元格扩展出来所有值的字符串,去掉重复数据,不加间隔符号
2)隐藏 A5 和 B5 单元格,前端填报时无需展示作为条件的数据,最终表格如下图所示:
2.3 设置提交
菜单栏点击模板>报表填报属性,新增内置SQL提交,设置如下图所示:
2.4 设置数据校验
设计器菜单栏点击模板>报表填报属性,数据校验设置项下新增一个内置校验,如下图所示:
校验公式:A5=B5
校验出错信息:"销售员字段有重复填报数据!"
注:A5 跟 B5 值不相等,那么即存在重复数据。
2.5 效果预览
1)PC 端
保存报表,点击填报预览,销售员字段下有重复填报数据时,校验失败,如下图所示:
2)移动端
同时支持 App 端和 H5 端预览,效果如下图所示:
3. 模板下载编辑
已完成模板参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Form\VerifyForm\校验字段下是否有重复填报数据.cpt
点击下载模板:校验字段下是否有重复填报数据.cpt
4. 公式拓展编辑
A5 和 B5 单元格插入的公式可以替换成下面 2 组:
序号 | 公式 | 定义 |
---|---|---|
1 | LEN(JOINARRAY([A2], "")) | 数组转换为字符串长度,不加间隔符 |
LEN(joinarray(UNIQUEARRAY([A2]), "")) | 数组去重复值后转换为字符串,不加间隔符 | |
2 | count(A2) | 数组内元素个数 |
count(UNIQUEARRAY(A2)) | 数组去掉重复值后元素个数 |