1、并发产生的原因
并发的概念: 当同一时间出现多人打开一个页面,录入数据时,那么此时就出现并发现象了。而表单里如果使用了MAPX
函数来自动生成数据时,就会出现多人生成相同数据,那么提交的数据就会出现重复的!如果这个重复的字段又设置了唯一性,那么除了第一个人提交成功之外,其他人提交都将失败,这个就是并发导致的问题。
自动连续编号的并发问题: 在实现自动生成编号时,为了使得编号连续,我们使用了MAPX
来实现的,此函数并不能解决并发的问题,如果出现并发,第一个用户提交成功之后,那么后提交的用户,因为编号的唯一性,将导致提交失败。而如果想继续提交,必须刷新页面重新生成编号才能提交,但是页面数据得重新录入一次!这样就加大了用户的操作,因此需要解决这个问题。
2、自动连续编号的实现
- 添加一个单行文本控件,标题修改为“流水单”,属性里【效验】设置:勾选
不允许重复值
选项,属性【默认值】选择公式编辑
,公式设置为: CONCATENATE("BBY-",TEXT(TODAY(),"yyyyMMdd"),"-",RIGHT("000000"+序号,6))
- 添加一个单行文本控件,标题修改为“月份”,属性里【操作权限】设置:取消勾选
可见、可编辑
选项,属性【默认值】选择公式编辑
,公式设置为: TEXT(TODAY(),"yyyyMM")
- 添加一个数字控件,标题修改为“序号”,属性里【操作权限】设置:取消勾选
可见、可编辑
选项,属性【默认值】选择公式编辑
,公式设置为: MAPX("max",月份,月份,序号)+1
以上的自动连续编号功能就已经实现了,但是这个实现由于使用了MAPX
函数,因此就存在并发的问题。那么下面我们就来解决并发问题。
3、并发的解决方案
- 在页面里增加一个单选按钮组控件,保留第一个选项,选项内容为:刷新。
- 修改序号的公式,使得每次点击【刷新】按钮时,都能重新生成编号。公式为:
IF(刷新流水单号=="刷新",MAPX("max",月份,月份,序号)+1,MAPX("max",月份,月份,序号)+1)
效果展示:
如此,当出现重复值不能提交时,就可以点击刷新按钮,生成一个新的编号,这样就可以继续提交了,而不需要刷新页面,重新录入页面数据。
想要了解更多内容,欢迎前往百数官网免费体验:https://www.baishuyun.com/