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)) | 數組去掉重複值後元素個數 |