UPDATE - 更新
UPDATE()函数用于更新表单中的普通组件值、表单中子表单的数据,子表单下有多条数据,可以根据设置的条件,只更新符合条件的子表单数据。
格式
UPDATE()函数的格式为:
UPDATE(目标表,主条件,子条件,目标列1,目标值1,目标列2,目标值2...)
- 目标表:要更新数据的目标表单
- 主条件:定位目标表下需要更新的表单数据。主条件是由逻辑函数构成:
- 比如
EQ(存货表.商品名,"铅笔")
,则表示目标表是「存货表」,要更新的数据是:商品名为「铅笔」的这批数据; - 如果有多个条件,可以用AND函数组合。比如
AND(EQ(存货表.商品名,"铅笔"),GT(存货表.存货量,10))
表示要更新的数据是:商品名为「铅笔」,并且「存货量」大于10的那批数据
。
- 子条件:要更新的表单数据已经确定,但要更新的是这条数据下某个子表单下的数据。用子条件定位子表单哪些数据要更新。子条件是由逻辑函数构造,如果不需要更新子表单下的值,则填"",不能不填。
- 目标列:
- 如果子条件为
""
,表示不更新子表单下的值,那么目标列必须为目标表下的普通组件。 - 如果子条件不为
""
,表示更新的是子表单下的值。那么目标列必须为要更新的目标表下需要更新的子表单下的组件的值; - 不能既更新普通组件,又要更新子表单下的值。如果有这种场景,请分成两个
UPDATE
函数,一个用来更新普通组件,一个用来更新子表单下的数据。
- 目标值:指目标列要更新成的值,目标值可以由当前录入表某个组件值,要更新目标表某个组件值,固定值通过其他函数组合而成。
使用场景
录入表普通组件数据更新目标表的普通组件数据
使用的表单
- 存货表: 商品名(单行文本)、存货量(数值组件)
- 出货表:商品名(下拉单选)、当前存货量(数值组件)、出货量(数值组件)
需求
- 存货表中保存着一批商品的存货量。通过出货表将货物出掉。
- 出货表中的商品名来自于存货表中存货商品。
- 出货表中,当选中某件商品时,显示这件商品当前的存货量。
- 出货表出货时,出货量不能大于存货量。
- 出货表出货后,存货表中对应商品的库存量要相应扣除。
公式配置详情&公式解析
- 需求描述:
- 存货表中保存着一批商品的存货量。通过出货表将货物出掉。
- 出货表中的商品名来自于存货表中存货商品。
- 出货表中,当选中某件商品时,显示这件商品当前的存货量。
- 出货表出货时,出货量不能大于存货量。
- 出货表出货后,存货表中对应商品的库存量要相应扣除。
- 公式配置:在出货表的业务关联规则中,配置公式如下图:
- 公式解析:
- 目标表:存货表。
- 主条件:
EQ(存货表.商品名,商品名)
。更新的数据是存货表中商品名为出货表的商品名的数据。 - 子条件:由于更新的是「存货表」中的普通组件:商品名,不涉及子表单,因此子条件填写为
""
。 - 目标列:存货表.存货量
- 目标值:存货表.存货量-出货量。根据条件匹配到存货商品后,在原来存货量的基础上扣除这次的出货量。
录入表子表单组件数据更新目标表的普通组件数据
使用的表单
- 出货表:商品类别(下拉单选)、出货子表单(子表单组件)。出货子表单下有:商品名(下拉单选)、当前库存(数值组件)、出货量(数值组件)。
- 存货表:商品类别(下拉单选)、商品名(单行文本)、存货量(数值组件)
需求
出货表下有出货明细的,一次可以出货多个商品。对于出货的多个商品,把存货对应的商品库存量扣除。
公式配置详情&公式解析
- 需求描述:出货表下有出货明细的,一次可以出货多个商品。对于出货的多个商品,把存货对应的商品库存量扣除。
- 公式配置:在出货表的业务关联规则中,配置公式如下图:
- 公式解析:
- 目标表:存货表。
- 主条件:
AND(EQ(存货表.商品名,子表单.商品),EQ(存货表.商品类别,商品类别))
。定位数据用到两个条件,即商品名相等(EQ(存货表.商品名,子表单.商品))
和商品类别相等(EQ(存货表.商品类别,商品类别))
。两个条件要同时成立,则用AND将两个条件放一起。 - 子条件:由于更新的是「存货表」中的普通组件存货量,没有更新子表单,因此子条件填写为
""
。 - 目标列:存货表.存货量
- 目标值:存货表.存货量-子表单.出货量。根据条件匹配到存货商品后,在原来存货量的基础上扣除这次的出货量。
录入表普通组件数据更新目标表的子表单组件数据
使用的表单
- 存货表:商品类别(下拉单选)、存货子表单(子表单组件)。存货子表单下有商品名(单行文本),存货量(数值组件)
出货表:商品类别(下拉单选)、商品名(单行文本)、出货量(数值组件)
需求
存货表中记录着多个商品的存货量。当出货表中每提交一条数据,在存货表的子表单下能找到对应商品数据时,就将对应商品的库存量扣除出货量。
公式配置详情&公式解析
- 需求描述:存货表中记录着多个商品的存货量。当出货表中每提交一条数据,在存货表的子表单下能找到对应商品数据时,就将对应商品的库存量扣除出货量。
- 公式配置:在出表的业务关联规则中,配置公式如下图:
- 公式解析:
- 目标表:存货表。
- 主条件:
EQ(存货表.商品类别,商品类别)
。查找存货表中,商品类别等于出货表商品类别的数据。在定位哪条表单数据需要更新时,不能使用目标表的子表单组件。 - 子条件:
EQ(存货表.子表单.商品名,商品名)
。子条件用于定位子表单下哪条数据需要更新,因此必须包含更新子表单下的组件。 - 目标列:存货表.子表单.存货量
- 目标值:存货表.子表单.存货量-出货量
注意事项
- UPDATE函数更新目标表为主表字段支持更新100条,更新目标表某条数据的子表单明细,免费版最多支持更新50条明细,轻享版、专业版最多支持更新500条(默认是50条,需在表单编辑页面将子表单条数设置成500条)。
- UPDATE函数一次只能操作表单下一个子表单组件里的数据。如果有操作多个子表单组件数据的需求,请配置多个UPDATE函数。
- 主条件和子条件是由逻辑函数构造的。除了AND和OR之外,其他逻辑函数第一个参数必须是目标表中的组件,两个参数的位置不能调换。
- 高级公式组件支持范围如下
- 能作为判断条件的组件:「单行文本」、「多行文本」、「单选」、「下拉单选」、「日期」、「成员」
- 能进行赋值的组件:「单行文本」、「多行文本」、「数值」、「单选」、「下拉单选」、「复选」、「下拉复选」、「级联选择」、「日期」、「日期区间」、「图片上传」、「附件」、「成员」、「地址」、「关联表单」
- 进行公式配置时,报错「执行失败,请检查业务规则配置」?
该问题可能是匹配条件配置字段超出字段限制,目前查询条件大小限制为1kb以下,约为512字符,超出限制会报执行失败的错误,推荐您使用流水号、实例ID、手机号等具有唯一性的字段去做匹配,可以避免该问题的出现。
本文档对您是否有帮助?