子表单内多类型数据拆分
1. 简介
1.1 案例简介
本文将介绍,如何将一个子表单内的多种数据,根据类型拆分到其他子表单中,将某类数据的精准分类,便于后续进行查看、打印等操作。
1.2 应用场景
- 资产盘点场景中,需要将固定资产/非固定资产单独拆分在子表单中,打印单独的资产明细;
- 库存管理 场景中,需要将不同类型的货物拆分在子表单中,储存时单独保存物品明细;
- 学生成绩管理中,可以将学生某一科目的成绩单独次拆分在子表单中,用于分析成绩变化趋势等。
1.3 设计思路
1)在需要拆分的子表单中,通过 IF 函数判断资产类型,当所选的类型需要单独拆分时,通过函数将该行数据汇总;如所选类型不需要拆分,则为空;
2)在主表中,对各行「汇总」数据全部连接在一起,连接成一个字符串;
3)在主表中计算「汇总」字段中不为空的个数,作为拆分子表单的行数;
4)通过字符分割的全部汇总内容,根据子表单序号取出对应行数的资产信息,再通过字符分割出类型、编码、名称等信息,如取其中的第一个即为物资类型,第二个即为物资编码等。
1.4 预期效果
以资产盘点时,拆分出「非固定资产」为例:
1)在物资明细中录入所有的物资信息,子表单「非固定资产明细」自动获取「非固定资产」类型的全部物资,效果如下:
2)将拆分出的子表单字段添加到 打印模板 中,即可打印出单独的非固定资产明细表:
2. 设置方法
在学习之前建议安装 子表单取出某类数据 应用模板,本文将按照模板中的示例数据进行讲解。
注:安装模板时,在「子表单基础表」中只能安装 100 条数据,需要清空原数据后通过本文 2.2 节重新导入完整的 200 条数据后,才可正常使用模板。
以汇总采购需求的场景为例:
2.1 表单搭建
1)新建「资产盘点」表单,字段设置如下:
字段名称 | 字段类型 | 字段设置 |
物资明细 | 子表单 | |
物资类型 | 子字段-下拉框 | 自定义设置选项:
|
物资编码 | 子字段-单行文本 | |
物资名称 | 子字段-单行文本 | |
数量 | 子字段-数字 | |
汇总 | 子字段-单行文本 | |
集合 | 单行文本 | |
子表单行数 | 数字 | |
非固定资产明细 | 子表单 | |
序号 | 子表单-数字 | |
物资类型 | 子字段-单行文本 | |
物资编码 | 子字段-单行文本 | |
物资名称 | 子字段-单行文本 | |
数量 | 子字段-数字 |
2)新建「子表单基础表」辅助表单,字段设置如下:
字段名称 | 字段类型 |
总行数 | 数字 |
子表单 | 子表单 |
序号 | 子字段-数字 |
数字 | 子字段-数字 |
2.2 「子表单基础表」录入数据
1)在「子表单基础表 >> 数据管理 >> 导入」处导入附件中的示例数据:200行子表单基础表序号全集.xlsx。
2)导入数据时需确认示例数据和表单字段的关联关系如下:
2.3 设置数据联动
1)进入「资产盘点」表单,选中「非固定资产明细」整个子表单,在「字段属性 >> 默认值」处,设置选项为「数据联动」,点击「数据联动设置」:
2)进入数据联动设置页面,设置内容如下:
- 联动表单:「子表单基础表」;
- 条件设置为:「总行数」等于「子表单行数」;
- 触发联动:
- 「非固定资产明细」字段显示「子表单」字段的值;
- 添加「序号」子字段,显示为「序号」子字段的值;
全部设置完成点击「确定」。
2.4 设置公式
1)选中「物资明细.汇总」字段,在「字段属性 >> 默认值」处,设置默认值为「公式编辑」,点击下方「编辑公式」:
2)在公式编辑页面,设置「物资明细.汇总」的公式为:IF(物资明细.物资类型=="非固定资产",CONCATENATE(物资明细.物资类型,"+",物资明细.物资编码,"+",物资明细.物资名称,"+",物资明细.数量,","),""),表示当子表单中「物资类型」选择「非固定资产」时,将该行子表单的物资类型、物资编码、物资名称、数量和字符串通过 CONCATENATE 函数连接起来;当「物资类型」未选择「非固定资产」时,则为空。
设置好记得点击「确定」保存。
3)按照同样的方法,设置其他字段的公式如下:
字段名称 | 公式 | 公式含义 |
集合 | CONCATENATE(物资明细.汇总) | 将每行子表单的「汇总」字段通过 CONCATENATE 函数连接起来 |
子表单行数 | COUNT(SPLIT(集合,","))-1 | 计算子表单中「物资类型」选择「非固定资产」的个数,用于作为子表单行数 |
非固定资产明细.物资类型 | SPLIT(TEXT(SPLIT(集合,",")[非固定资产明细.序号-1]),"+")[0] | 先通过“-”分割全部的子表单汇总内容,根据子表单序号取出对应行数的类型、编码、名称和数量,再通过”+“分割,取其中的第一个即为物资类型 |
非固定资产明细.物资编码 | SPLIT(TEXT(SPLIT(集合,",")[非固定资产明细.序号-1]),"+")[1] | 同上,取其中第二个即为物资编码 |
非固定资产明细.物资名称 | SPLIT(TEXT(SPLIT(集合,",")[非固定资产明细.序号-1]),"+")[2] | 同上,取其中第三个即为物资名称 |
非固定资产明细.数量 | SPLIT(TEXT(SPLIT(集合,",")[非固定资产明细.序号-1]),"+")[3] | 同上,取其中第四个即为数量 |
2.5 设置字段显隐规则
1)对于表单中的如下辅助字段,可以在「字段属性 >> 字段权限」处设置字段为不可见:
- 物资明细.汇总
- 集合
- 子表单行数
- 非固定资产明细.序号
2)在「表单属性 >> 不可见字段赋值」处,设置赋值规则为「始终重新计算」:
2.6 效果演示
效果演示参见本文【1.4 预期效果】。