历史版本10 :校验填报页面的数据是否重复 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 应用场景

有时候需要校验某个字段下的填报数据是否重复,如有重复值,则提示校验出错信息且不允许提交入库。

Snag_3eb5bb5f.png

1.2 实现思路

将填报单元格作为数组,在另外两个单元格中设置公式,其中一个公式得到数组原值,另一个公式得到数组去重后的值。

如果数组内有重复数据,那么这两个单元格的值是不一样的,最后在提交校验中对这两个单元格进行校验,如果单元格值相等,则允许提交,不相等则报错。

2. 示例编辑

2.1 准备数据

新建数据查询数据集 ds1,SQL 语句为:SELECT * FROM 销售总额

Snag_3ec45bf0.png

2.2 设计表格

1)设计填报表格,将销售员和销售总额字段分别拖入到 A2 和 B2 单元格,并添加文本控件,A5 和 B5 单元格添加 2 个公式,如下图所示:

Snag_3ec99874.png

  • A5 单元格公式:JOINARRAY([A2], ""),返回 A2 单元格扩展出来所有值的字符串,重复数据保留,不加间隔符号

  • B5 单元格公式:JOINARRAY(UNIQUEARRAY([A2]), ""),返回 A2 单元格扩展出来所有值的字符串,去掉重复数据,不加间隔符号

2)隐藏 A5 和 B5 单元格,前端填报时无需展示作为条件的数据,最终表格如下图所示:

Snag_3edd2cc8.png

2.3 设置提交

菜单栏点击模板>报表填报属性,新增内置SQL提交,设置如下图所示:

1596529665250672.png

2.4 设置数据校验

设计器菜单栏点击模板>报表填报属性,数据校验设置项下新增一个内置校验,如下图所示:

1598865328178443.png

  • 校验公式:A5=B5

  • 校验出错信息:"销售员字段有重复填报数据!"

注:A5 跟 B5 值不相等,那么即存在重复数据。

2.5 效果预览

1)PC 端

保存报表,点击填报预览,销售员字段下有重复填报数据时,校验失败,如下图所示:

6795499E-5092-4AAB-A3C1-8E9EAB4EF01D.GIF

2)移动端

同时支持 App 端和 H5 端预览,效果如下图所示:

22B3EA34-380F-4D74-AE24-AF62A031863C.GIF

3. 模板下载编辑

已完成模板参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Form\VerifyForm\校验字段下是否有重复填报数据.cpt

点击下载模板:校验字段下是否有重复填报数据.cpt

4. 公式拓展编辑

A5 和 B5 单元格插入的公式可以替换成下面 2 组:

序号公式定义
1LEN(JOINARRAY([A2], ""))数组转换为字符串长度,不加间隔符
LEN(joinarray(UNIQUEARRAY([A2]), ""))数组去重复值后转换为字符串,不加间隔符
2count(A2)数组内元素个数
count(UNIQUEARRAY(A2))数组去掉重复值后元素个数