1. 帮助中心 >
  2. 博客 >
  3. 函数用法
返回

简道云函数用法:如何生成固定格式的流水号?

2015-12-05 标签:函数 公式 流水号 RECNO() 


表单设计中经常涉及流水号的制作问题,简道云提供了一个递增的函数RECNO()来满足该需求。需要说明的是,RECNO()函数的触发机制是:每一次打开表单,都会累计1。就算是打开表单后什么都没填关闭了,这个数字也是永久性加1的,因此会造成跳号的问题。


所以很多朋友提出了连号的需求,在这里也介绍一种用MAPX()函数实现连续编号的方法,但此法会不可避免地出现一些并发问题:如果数据库中录入了100条数据,下一个序号应该是101,而这时A和B两个人同时打开表单(也许是有先后,或者假设A打开了表单,还没提交,然后B打开了表单),这时候库中仍然只有100条数据,那么这两人的表单上显示的都是101,还是一个101一个102呢?又或者A先打开,而B先提交,那么到底谁录入的是101?假如按照打开表单的顺序,A是101,B是102,B提交了,A关闭了浏览器,那么101这个号就空置了,下一次填表再用吗? 当有大量人员进行填表操作时,将造成极大的不便。


综合权衡之下,我们推荐用打开表单即跳号的方式。其实绝大多数要求连号的用户,是心中的完美主义让自己这么做的。因为表单数据是可以人为删除的,如果因为工作需要删除了某一条数据,也就是发生跳号了。而还有的用户人为,连号有助于数据统计。在简道云里,数据统计不用那种笨方法~如果想知道目前有多少条数据,直接在表单数据管理或者数据表中查看数据条数就可以了哟~


下面就分别介绍下这两种编号的实现方法。



1.RECNO()函数编号

极力推荐此法~

==格式为:字母-年-月-日-0001==

用到的函数:RECNO() RIGHT() CONCATENATE() TEXT()

这个流水号分成3段,第一段是字母,第二段是日期,第三段是递增序列。前两段不多说了,通过前几个案例的学习,相信大家已经完全掌握。重点讲解第三段。RECNO()产生的序号是1,2,3,4,5,…,9,10,11,…,99,100,101…,这样的数字,没有实现前面加零的功能。因此我们自己设计:RIGHT('0000'+RECNO(),4),公式很简单。就是在RECNO()产生的数字前面加4个0,然后取这个生成的字符串的后4位即可。 写入函数: 

注意,这里在流水号中添加诸如20160101这样的日期串,用到一个固定搭配TEXT(日期对象,'yyyyMMdd')。小写的yyyy表示年份,大写的MM表示月份,小写的dd表示天。PS:小写的mm表示分钟。

所以整体函数如下:



打开表单:


 


查看该表单:https://jiandaoyun.com/f/5624b9425960e98d2b2d5871


2.MAPX()函数连号法


弊端详见文章第二段说明。


(1)新建单行文本字段,命名为“重置条件-按日重置”,设置不可见,表单属性-隐藏控件赋值-始终重新计算,对其写公式,获取当前日期并将转化为“20160101”的文本格式



(2)新建单行文本字段,命名为“编号”,设置不可编辑,勾选不允许重复值,对其写公式,根据当前日期查找该天的上一个编号并在其基础上加1,和“AAA”及“重置条件-按日重置”合并成新的编号。

        MAPX帮助:http://doc.jiandaoyun.com/215968



(3)测试如下:




查看表单:https://www.jiandaoyun.com/f/56fcc5b93813edef0530c6d5


相关推荐