关联子表重复值校验
1. 简介
1.1 案例简介
本文将以订单管理为例,介绍关联子表重复值校验的设置方法,以确保在同一订单中,不会出现重复的产品。即,对于每条订单数据而言,其关联的所有订单明细数据中不会出现重复的产品。
1.2 设计思路
由 1.1 可得,此处实际上是对每个订单相关联的多条明细数据进行重复值校验。根据明细数据的录入阶段,其重复值校验也需分为如下 2 个阶段:
1)阶段一:同时填报主表和关联表数据
- 数据录入:新增主表数据(订单)时,在关联子表中同时新增多条关联表数据(订单明细);
- 校验方法:开启关联子表的「新增单条数据时不允许重复值」功能即可。
2)阶段二:单独填报关联表数据
- 数据录入:在主表数据(订单)已生成的情况下,单独地新增或编辑关联表数据(订单明细);
- 校验方法:添加辅助字段并设置字段值为 “订单名称+产品编码”,来唯一标识订单的每条明细数据,并设置该字段值「不允许重复」即可。
注:同时填报主表和关联表数据时,关联表字段的「不允许重复值」校验不生效。
1.3 预期效果
以订单管理场景为例,重复值校验效果如下:
1)录入订单数据时,若订单明细内出现相同的产品,则不允许提交。
2)在关联子表中单独新增订单明细时,若新增明细中的产品编码和已有明细中的产品编码重复,则不允许新增。
2. 表单搭建
注:在学习之前建议安装 关联子表 应用模板,本文将按照模板中的示例数据进行讲解。
本文案例需要使用如下 3 张表单:
- 订单表:用于录入订单的基础信息,且已通过关联子表字段绑定了「订单明细表」。
- 订单明细表:用于录入订单的明细信息,并通过关联数据字段来调用「产品信息表」的产品数据。
- 产品信息表:用于录入产品的基础信息。
3. 设置步骤
3.1 设置订单明细表
在「订单明细表」中设置辅助字段,来唯一标识订单的每条明细数据,并进行重复值校验。
1)进入「订单明细表」的设计页面,选中用来关联「订单表」的关联数据字段「关联订单」,点击「字段属性 >> 设置填充规则」,将能够订单的唯一标识信息填充到当前表单中,此处以「订单名称」为例:
注:此处不支持选择订单中的流水号字段来作为唯一标识,因为同时填报时,订单中的流水号信息不会被填充到关联表(即订单明细)中,继而影响校验,因此建议使用其他字段来标识订单。
2)选中「关联产品」字段,点击「字段属性 >> 设置填充规则」,将产品的唯一标识信息「产品编码」填充到当前表单中。如下图所示:
3)添加一个单行文本字段并进行如下设置:
- 重命名为「重复值校验辅助字段」;
- 设置公式为:CONCATENATE(订单名称,产品编号);
- 勾选「不允许重复值」并设置提示内容为:当前填报产品已下单,可直接修改下单数量;
- 字段权限设置为:不可见。
4)在「表单属性」处将不可见字段的赋值规则改为「始终重新计算」。
3.2 设置关联子表字段
进入「订单表」的设计页面,选中关联子表字段「订单明细」,在「字段属性 >> 数据操作」处进行如下设置,确保同时填报订单和订单明细时,不会出现产品编码重复的明细数据:
- 勾选「产品编码」作为显示字段;
- 勾选「新增单条数据时不允许重复值」;
- 选择不允许重复的字段为「产品编码」。
3.3 效果演示
效果演示参见本文【1.3 预期效果】。