不借助聚合表直接在当前子表单中实现数字汇总的一种方法(简道云开发高阶技能)

楼主
简道云官方指定金牌服务商

前言:

  • 本文是2018-04-19发布在原简道云老社区的第18篇文章,发布在帆软社区的第26篇文章,以后还有更多(技术类、管理类、理论类),为了不迷失不迷路,【请收藏这个链接集合】,以后所有博客都会汇集于此,敬请期待!

 




不借助聚合表直接在当前子表单中实现数字汇总的一种方法



简道云中可以实现数字汇总的有汇总表和聚合表,但汇总表不能被调用,聚合表可以被调用但有以下限制:
1、聚合表汇总的前提是表单被提交或者暂存,不进行这些操作,数据进不了数据库就没法参与聚合汇总。
2、如果直接在表单数据管理中编辑修改子表单数据,修改后数据不能直接参与聚合汇总,还需要重新进入聚合表点击聚合表保存按钮才能使聚合表起效。

再加上聚合表的数量本身又是版本级别的限制,能省即省,如果有方法可以在子表单中实现数字的汇总效果且不用借助聚合表,即节省了聚合表又不用再面对聚合表的那几个限制。

如下图所示,这是一个项目收款记录表,每次甲方打款,乙方都要用子表单记录收款信息,需要在子表中实时显示已收金额收款金额应收剩余金额

 
 
如果想要达到实时显示的目的,其实就不能使用聚合表,因为上面已经介绍过了,想要聚合表参与计算有多种限制和前提,所以现在只能想别的方法来实现了。


在正式介绍本方法之前,先来回顾一下之前相关的等下这里会用到的两篇图文博客。
1、盲人妻子的困惑——子表单自动编号的问题:点击查看博客链接,这篇中的拓展方法3——通过补位并截取的方式实现子表自动编号。
2、子表中合并同类项:点击查看博客链接,这篇中的提取当前子表行数之上的值的集合。

所以为了更好的理解本文中用到的方法,可以先仔细查看下上面这两篇博客。


总的实现思路:
1、提取当前子表单之上子表值的集合。
2、对1中提取到的集合做函数处理,使之能参与数字汇总。

具体实施步骤如下:
步骤1、在上图所在表单中添加单行文本控件,命名为“收款金额补位并截取右9位”,函数为:
项目收款记账明细.收款金额补位并截取右9位=
RIGHT(CONCATENATE("#########",项目收款记账明细.收款金额,","),9)
(备注:用#补位,且在补位右边添加英文逗号“,”,这个逗号是为了后面的分割使用)

步骤2、主表中添加单行文本控件,命名为“集合”,写函数:
集合=CONCATENATE(项目收款记账明细.收款金额补位并截取右9位)

步骤3、在子表单中添加数字控件,命名为“当前已收款总金额”,写函数:
项目收款记账明细.当前已收款总金额=
SUM(VALUE(SPLIT(CONCATENATE(SPLIT(LEFT(集合,项目收款记账明细.序号*9),"#")),",")[0]),VALUE(SPLIT(CONCATENATE(SPLIT(LEFT(集合,项目收款记账明细.序号*9),"#")),",")[1]),VALUE(SPLIT(CONCATENATE(SPLIT(LEFT(集合,项目收款记账明细.序号*9),"#")),",")[2]),VALUE(SPLIT(CONCATENATE(SPLIT(LEFT(集合,项目收款记账明细.序号*9),"#")),",")[3]),VALUE(SPLIT(CONCATENATE(SPLIT(LEFT(集合,项目收款记账明细.序号*9),"#")),",")[4]))
(注:为了演示方便,这里暂定添加5行子表单,实际使用中如果添加的子表单行数比较多,可以扩充这个函数,直至[199],满足200行子表单添加需求。)

下面详细分析这个函数组合
①如下图红框内LEFT(集合,项目收款记账明细.序号*9)的作用是随着子表行数的增加的(序号代表子表行数),依次截取主表控件集合的左边的值,由于1中收款金额补位并截取的位数是9位,所以这里在截取时,需要将子表的序号乘以9.
(注:其中子表序号的实现方式这里就不详细说了,不熟悉的请点击查看详细介绍子表序号的博客)




②如下图红框内SPLIT(LEFT(集合,项目收款记账明细.序号*9),"#")的作用是把①中截取到的值通过#符号进行分割,分割成多个数组,数组之间有英文逗号隔开“,”







③如下图红框内CONCATENATE(SPLIT(LEFT(集合,项目收款记账明细.序号*9),"#"))的作用是把②中分割后由英文逗号“,”隔开的数组变为一个文本,CONCATENATE函数可以把数组间的逗号消除。
F:\youdao\qqD329A58C5ECA36B55C004794294861B3\e51076f89a8b4709b3cec3c500f0ce7e\oj8cypkk3xll.png

 
 
 
④如下图红框内

VALUE(SPLIT(CONCATENATE(SPLIT(LEFT(集合,项目收款记账明细.序号*9),"#")),",")[0])的作用是利用步骤1中的英文逗号“,”对③中的文本做分割,然后再通过[0],[1],[2],[3]......,来提取每一组对应的值,又由于提取出来的是文本,所以再用VALUE()函数转换成数字,最后再用SUM函数做加和。这样就使得子表单数字在当前表单内不借助聚合表就能实现汇总的功能。

 
 
 
步骤4、由于3中已经实现了“当前已收款总金额”的汇总,所以“应收剩余金额”就比较好算了,用合同总金额进去3中的当前已收款总金额即可。


表单测试外链:https://tex1054z67.jiandaoyun.com/f/5f92db7616386a0006512556



方法总结:
1、现在之所以能通过此法实现目标功能,是因为前面有各种其他很多功能做基础或前提,任何一个的缺失都可能导致现在的这个功能实现不了。所需功能、功能所在博客以及各功能间的先后推导顺序或逻辑关系如下图。可见,当前实现的功能都可能在日后成为解决别的更复杂问题的基础功能。

 

 

(图中所列,是老社区博客编号)


2、我曾判断,如果不借助聚合表,能做到的只能是调取非数字的表头数据,而不能实现子表数字的汇总。现在利用此方法也实现了不借助聚合表对子表数字的汇总,而且能避免利用聚合表可能出现的各种不便和限制。看来有些功能不是简道云不能做,而只是可能我们还没想到实现的方法,很多现在看似解决不来的问题或许在以后的某个时刻就有了解决方法。

3、如果感觉此方法设置起来比较麻烦,可以设置一次,以后再次使用,直接复制应用或表单即可。




点击查看作者更多博文:
1、盲人妻子的困惑——子表单自动连续编号的问题【发布时间: 2017-07-10】
2、让人又爱又恨的子表单【发布时间: 2020-10-08】
3、4种不同方法解决并发问题——函数触发机制分析【发布时间: 2017-12-05】
4、如何不借助聚合表调用子表单数据——解析一【发布时间: 2018-02-12】
5、如何确保子表添加字段值不出现重复【发布时间: 2018-03-11】
6、快速查看子表重复情况的方法一【发布时间: 2018-03-12】
7、致简道云的一封信!【发布时间: 2018-10-29】
8、快速查看子表重复情况的方法二【发布时间: 2018-03-13】
9、过滤敏感词或符号【发布时间: 2020-10-27】
10、快速准确调取上次采购价的方法【发布时间: 2018-03-18】
11、合并同类项【发布时间: 2018-03-19】
12、子表中合并同类项【发布时间: 2018-04-15】
13、如何让子表单信息分行显示在多行文本中?【发布时间: 2018-04-19】
14、如何做到快速添加子表字段值且永不会重复?【发布时间: 2018-06-23】
15、流程审批模型【发布时间: 2018-06-23】
16、流程审批节点状态数汇总模型【发布时间: 2018-10-02】
17、流程审批节点用时汇总模型【发布时间: 2018-10-03】
18、关于调库问题的分析【发布时间: 2018-09-28】
19、帮你打通子表单数字编号的任督二脉【发布时间: 2019-02-04】
20、子表单跨数据自动连续数字编号【发布时间: 2019-02-05】
21、子表单数字编号——分列连续数字编号【发布时间: 2019-02-06】
22、子表单数字编号——等差数列编号【发布时间: 2019-02-07】
23、子表单数字编号——“倒序”数字编号【发布时间: 2019-02-08】
24、头脑中的大象【发布时间: 2019-02-08】
25、如何提取成员多选字段的文本值?【发布时间: 2020-06-22】


 

  • 作者简介:【点击查看作者社区主页】

    • 牛中伟
    • 简道云官方连续6年指定定制服务商
    • 利用简道云帮客户实施项目近300个
    • 在原简道云老社区更新发布博客44篇
    • 新老社区博客总阅读量超50万,留言1000余条
    • 其中关于子表单的一篇博客收到用户打赏金额累计超7000元
    • 关注帆软社区我的这个账号,有新博客更新,第一时间收到提醒
    • 感谢大家一路以来的认可和支持,我会再接再厉,分享更多有价值的内容
    • 如有任何简道云方面的问题,欢迎留言区留言或单独私信给我,期待与你的交流



    不自谦能力概述:

    • 精通子表单各类复杂用法
    • 谙熟函数特性、及各种函数组合用法
    • 独创利用简道云处理多级BOM的方法
    • 深刻理解进销存系统及进销存思维模型
    • 有一定的文本书写能力,总结复盘能力
    • 较强的抽象思维能力、逻辑思维能力、统筹能力
    • 对陌生行业陌生业务有快速的信息搜集整合和学习消化能力
    • 拥有一整套成熟有效的整理系统需求文档的思想、方法和工具
    • 很多用户感觉一直解决不了的问题在我们这里可能早已不是问题
    • 了解如何制定完善的报表分析计划,并借此洞察项目业务背景和业务痛点。
    • 理解系统与企业管理的关系,对如何在企业顺利推进管理系统落地有丰富经验和独到见解。
    • 有一整套经上百大小项目锤炼过的适合简道云这类低代码工具帮助客户实施项目的流程和方法,确保系统更好实施,更快部署,更高完整度交付,确保系统更符合客户预期,甚至超预期,给客户真正带来价值!

 

 

懂简道云的冬泳高手,关注我的帆软社区账号,交个朋友!

 



编辑于 2020-11-24 20:15  
编辑于 2020-12-7 10:16  

分享扩散:

沙发
发表于 2020-11-21 08:59:18
谢谢分享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

返回顶部 返回列表