分数排名、上次采购价等问题都要用到的一个重要函数组合(简道云开发高阶技能)

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

前言:

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

 




分数排名、上次采购价等问题都要用到的一个重要函数组合



在介绍具体方法前,先看一下以下几种常见的场景需求:
1、分数排名问题:在含有成员得分分数的表单里,每次打开表单时,要求在一个单行文本控件里始终显示当前已提交过的人员里前三名的分数。
2、快速查看未提交成员名单问题:打卡表单里,要求在当前表单里的一个单行文本控件里始终显示未打卡成员名单,以便参与打卡的同事们及时掌握打卡人员情况。
3、上次采购价问题:采购产品入库时,同一个规格产品可能会在不同采购商那里采购,价格可能也会不同,当出库时需要调取上次采购入库执行时最后一次该产品入库的价格,并依此来计算成本。

分析以上问题可以发现,实现这些需求都会用到的一个功能是在“当前表单里可以调取表单过往已提交的所有数据”,再对这些数据做函数运算进而实现上述需求高级函数mapx更新之前的map函数是可以轻松实现这一功能的,但现在的mapx函数却没有这一功能,能实现的只是mapx(last)上一次提交的单个数据。那现在能不能通过一些函数组合间接实现类似当初map函数可以调取过往所有数据的功能呢?

先来回顾一下mapx函数的用法,包含7种聚合操作功能,如下所示:

 
其中的“last”聚合操作可以调取上一个提交数据,当结合CONCATENATE()函数,把当前表单数据和上一个提交数据链接起来,这样,每一次提交都能让上一次数据和当前数据链接,依次累加就可以实现调取过往所有数据的功能。



实施步骤:

1、先建一个表单,全为单行文本控件,如下所示:

 
2、对“姓名聚合”字段写函数如下图所示:
 
 
 
3、通过测试发现,“姓名聚合”字段就可以实现对“姓名”字段录入数据的依次累加。效果展示如下:
 
 
 
 
 
由于“姓名“字段的所有过往数据都可以在”姓名聚合“字段里展示出来,就可以针对”姓名聚合“字段做各种函数运算,以提取各种位置上的数据,解决诸如:分数排名、未提交人员名单、上次采购价等问题。




举例:提取前三位提交数据的人员名单

方法:再在上面表单中添加一个单行文本控件命名为:前三位提交数据人员名单,并写函数如下:




效果图如下:




测试表单外链:https://jiandaoyun.com/f/592ad0bdff902bc53c8232e7

方法扩展:
1、类似变形问题,如:后三名提交数据的人员名单,所有提交数据的人员中得分排前n名、后n名的人员名单或分数(结合LARGE函数来做)都可以通过上面的方法结合函数组合的方式来实现。

2、文章开头提到的上次采购价问题是进存销应用中常见且重要的一个功能,需在此方法的基础上做一些函数及表单的相应变形处理才可以解决,这里由于篇幅问题暂不细讲,留待以后在进存销的系列文章里单做详细分析。


总结:
这个方法之所以能实现数据累加功能,主要是因为下图中的运算函数。那这个函数组合为何能实现对过往数据的依次累加呢?分析发现,这里的mapx(last)函数可以提取“姓名聚合”字段上一个提交的数据,而它本身又是由CONCATNATE( )函数连接了当前表单里“姓名”字段的数据,所以每次提交都是聚合了“姓名聚合”字段的上一个数据和当前表单的姓名字段数据,由此实现了“姓名字段”数据的在“姓名聚合”字段里的依次累加效果,进而实现调取过往所有数据的功能。





特别注意:
1、由于这种方法实现的手段是对过往数据的“依次”累加,所以为避免多人同时填写表单时出现的并发现象,必须要做并发问题的处理。并发问题的解决方案已在另一篇文章里做过详细讲解,参考请点击:https://www.jiandaoyun.com/bbs#/topic/5a2533202086e93b9961c452

2、通常mapx(last)函数即可调取当前表单过往数据也可调取其他表单过往数据,但这里使用的mapx(last)函数组合,只能提取当前表单的过往数据,而无法实现对其他表单过往数据的累加,如果想调取其他表单某字段过往的所有数据,需要在那个表单里使用这一功能,再利用数据联动把其所有过往数据调取过来。

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、如何提取成员多选字段的文本值?【发布时间: 2019-04-19】
26、不借助聚合表直接在当前子表单中实现数字汇总的一种方法【发布时间: 2019-04-19】



 

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

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



    不自谦能力概述:

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



 

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



编辑于 2020-12-7 10:16  

分享扩散:

沙发
发表于 2020-11-20 10:09:08
哇哦,大佬也太高产吧
板凳
发表于 2020-11-21 08:58:04
简道云还能这样用,厉害了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

返回顶部 返回列表