一、简介

  1. INSERT公式主要用于把当前录入表的数据插入到目标表中。当前录入表的数据既可以来自于普通组件,也可以来自于明细组件。如果是明细组件,则会把明细数据分成多条插入到目标表中。但是最多只能使用一个明细组件。

  2. INSERT格式:INSERT(目标表,目标列1,目标值1,目标列2,目标值2….)

    1. 目标表:要插入数据的表单;

    2. 目标列:目标表中某个组件。INSERT只支持往目标表中的普通组件插入数据,不支持往目标表中的明细中插入数据。

    3. 目标值:目标列的值。这个值可以是当前录入表某个组件,也可以结合其他公式计算得出。假如目标值中涉及到当前录入表下的明细下的组件,则最多只能涉及一个明细。

  3. 接下来,分别介绍目标值来自于普通组件和明细组件的配置情况。

二、目标值来自于普通组件(单行文本等)

  1. 场景
    “商品表” : 商品名,存货量,商品类别,商品类别描述
    “商品类别表”:商品类别,商品类别描述。

  2. 需求:
    当在“商品表”中添加一条数据时,要把“商品表”中的商品类别和类别描述插入一条数据到“商品类别表”中。(需求纯属虚构,合理性请忽略)

  3. 配置过程即效果请看下方视频

INSERT - 图1
INSERT - 图2

三、目标值来自于一个明细组件

  1. 假设目标值中包含明细组件。那么明细下有几条数据,就会拆开往目标表中插入几条数据。

  2. 场景:
    当前录入表是“进货表”,有”进货单号”,”进货日期”,”进货明细”(明细下有商品名,进货量);
    插入数据的目标表是“存货表”,有“进货单号”,“进货日期”,“商品名”,“进货量”四个组件。

  3. 需求:在进货表中提交数据进货,明细下有N条数据,那么数据提交后,“存货表”要插入N条数据。

  4. 在”进货表”的“业务关联规则”中,配置INSERT函数如下。
    目标表选“存货表”。
    目标列选“存货表.商品名”,目标值为来自于”当前提交数据表”下的“进货明细”下的商品名。
    其他目标列配置相同。
    进货明细下有几个商品,最后“存货表”中就会插入几条数据。对于明细外的进货单号,进货日期,插入的每条数据都是相同的。

INSERT - 图3

  1. 完整的配置过程和效果如下图

INSERT - 图4

四、目标值来自于多个明细组件

假如目标值来自于多个明细,明细A有M条数据,明细B有N条数据。那最后拆开往目标表中插入多少条数据呢?是M*N条吗?如果是这样,那么数据就会重复,出现统计错误。
所以,对于目标值中有多个明细,我们直接不支持。

五、其他注意点

  1. INSERT公式是不管目标表中是否有同样的数据存在,都插入。但有时我们希望如果数据存在,则只做更新;目标数据不存在再插入,对于这种功能,可以用高级公式-UPSERT实现。