低代码学习教程:生成固定格式流水号

表单设计中经常涉及流水号的制作问题,下面就分别介绍下两种编号的实现方法,大家可以根据需要自行选择。

注意:
百数已支持【流水号】控件,如有特殊要求可参考文档:流水号

方法1:RECNO()

流水号的格式为:字母-年月日-6位流水号,如BBY-20200620-000001。

用到的函数:

  • RECNO():累加器,从1开始表单每打开一次,累计加1。

  • CONCATENATE(A,B,C):把ABC连接起来。

  • RIGHT(“000000”+A,6):将A补足为6位数,如37补足为000037,654321依然不变位654321。补位的0的个数与需要几位数保持一致,如需要补足为4位数,则公式修改为RIGHT(“0000”+A,4)。

  • TEXT(TODAY(),”yyyyMMdd”):用文本格式表示今天的日期,如20200620。

这个流水号分成3段,第一段是字母,第二段是日期,第三段是递增序列。


RECNO()产生的序号是1,2,3,4,5,…,9,10,11,…,99,100,101…,这样的数字,为了统一位数为6位流水号,利用RIGHT函数补足,RIGHT(“000000”+RECNO(),6)。就是在RECNO()产生的数字前面加6个0,然后取这个生成的字符串的后6位即可。00000023变成000023;000000123变成000123,000000456789变成456789。 如果需要4位数,公式写成RIGHT(“0000”+RECNO(),4)。


所以整体函数如下:

  1. CONCATENATE("BBY-",TEXT(TODAY(),"yyyyMMdd"),"-",RIGHT("000000"+RECNO(),6))


效果如下:

方法2:MAPX()

用到的函数:

  • CONCATENATE(A,B,C):把ABC连接起来。

  • RIGHT(“0000”+A,4):将A补足为4位数,如37补足为0037,5432依然不变位5432。补位的0的个数与需要几位数保持一致,如需要补足为6位数,则公式修改为RIGHT(“000000”+A,6)。

  • TEXT(TODAY(),”yyyyMMdd”):用文本格式表示今天的日期,如20200620。

  • MAPX(“LAST”,A,B,C):在B中检索A的值,并返回对应的最后一个C值。

  • VALUE():将字符串转变为数字格式。

(1)新建单行文本字段,命名为“重置条件-按日重置”,设置不可见,表单属性-不可见字段赋值-始终重新计算,对其写公式:

  1. TEXT(TODAY(),"yyyyMMdd")

(2)新建单行文本字段,命名为“流水号”,设置不可编辑,勾选不允许重复值,对其写公式。

思路:取出当天的最后一个编号的后四位,转换成数字,再加上1,得到新的号码,然后再补足4位数,并和前面的英文、日期连接起来 。

  • ① 取出上一个编号:MAPX(“last”,重置条件-按日重置,重置条件-按日重置,编号)。

  • ② 取出上一个编号的最右四位数:RIGHT(MAPX(“last”,重置条件-按日重置,重置条件-按日重置,编号),4)。

  • ③ 取出上一个编号的最右四位数,转换成数字并加1,得到新的号码:VALUE(RIGHT(MAPX(“last”,重置条件-按日重置,重置条件-按日重置,编号),4))+1。

  • ④ 将新的号码补足为4位数:RIGHT(“0000”+(VALUE(RIGHT(MAPX(“last”,重置条件-按日重置,重置条件-按日重置,编号),4))+1),4)。

  • ⑤ 把英文,日期和新的号码连接起来,即最终的公式为:

  1. CONCATENATE("BBY-",重置条件-按日重置,"-",RIGHT("0000"+(VALUE(RIGHT(MAPX("last",重置条件-按日重置,重置条件-按日重置,流水号),4))+1),4))

效果如下:

(3)并发问题

编号勾选为不允许重复,因为多人同时打开表单时,得到的编号是一样的,如果有一个人提交了,那其他人的数据就无法提交。虽然这样可以避免提交同样的编号,依然对于无法提交的人来说不方便,只能重新打开表单获得新的编号后,再次填写。

这里介绍一种避免并发问题的方法:【自动连续编号的实现】。

详情可以前往官网体验:https://www.baishuyun.com/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值