请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

Erik.Xue 讲师达人认证 悬赏达人认证 活字格认证 Wyn认证
超级版主   /  发表于:2020-5-14 10:21  /   查看:3412  /  回复:0
本帖最后由 Erik.Xue 于 2020-5-14 10:58 编辑

各位看官老爷,早上好~现在是蓝翔汽修王子阿杜的解说时间,请听我为大家带来的案例方法的讲解。

话说,故事的发展是这样的。我们有一个活字格的用户大佬呢,问到一个这么一个场景。就是说,如果多个用户在同时添加表数据时,其中有一个字段是由另外两个字段拼接而成的,并且在设置自动编号时,勾选了编号冲突重新生成一个编号,在存储数据时就存储的是页面上的值,而不是数据库里的最新值。那么导致的结果就是拼接的字段在多个用户提交后是相同的。但是用户的需求是拼接字段是根据其他字段生成的,而其中字段2是自动编号的。
具体案例中的数据表如下:
image.png861264648.png

image.png911084899.png
举个栗子:
用户1填写字段1:A,字段2:10,那么拼接字段就为A10;
用户2填写字段1:A,字段2:11,那么拼接字段就为A11。
但是,在页面数据还未提交时,两个用户如果同时打开添加数据页面,那么页面读取到的数据就是:
用户1,字段1:A,字段2:10,拼接字段A10;
用户2,字段1:A,字段2:10,拼接字段A10。
如果此时两人先后提交数据后,数据库里的数据就是这样的:
用户1,字段1:A,字段2:10,拼接字段A10;
用户2,字段1:A,字段2:11,拼接字段A10。

如果觉得我描述不清的老哥们可以移步真实用户贴:https://gcdn.grapecity.com.cn/showtopic-75777.html

现在明白问题的起因了吧?就是因为用户1还没有提交到数据库时,用户2拿到的还是同样的数据,但是当用户1提交后,用户2这边还是用旧数据进行了拼接。

那么,这就导致了问题的发生,也就是今天我写这篇教程贴的原因。

首先,感谢论坛里的小伙伴——Dorcy大佬的问题来源。

接下来,大家肯定会说,这种问题应该怎么解决呢?

其实解决办法肯定是有,请听我慢慢道来~

解决办法:

方法一:使用数据表操作命令中的事务
学过数据库的小伙伴们大家都知道事务这一概念,简单点说就是做一件事情有好几个步骤,要么完成所有步骤,事情做成功,要么其中有一个步骤出了问题,事情都算失败。在这里就不过多阐述了,如果不了解的小伙伴请看一下教程哈:
https://help.grapecity.com.cn/pages/viewpage.action?pageId=46172006

其实问题的本质就是第一个人提交数据后,第二个人要获取数据库中最新的数据,这样才能保证每次我提交的拼接数据都是最新的。
步骤一:
新建一个按钮,负责数据表操作。首先开启事务:
image.png649747619.png

步骤二:
开启事务后,我们要先将数据添加到数据库,然后再更新表中的拼接字段的值。
image.png991721801.png

image.png647904662.png

注意,这里要注意的是,我们要告诉活字格更新哪一个拼接字段,那么就要根据ID找到提交数据的那一行,那么就可以更新拼接字段。

这里使用到了OData,因为OData是直接从数据表中取值的。
image.png524124450.png

从用户2视角来看,页面上并没有更新拼接字段,但其实数据库中自动编号的字段已经更新了,所以用户2提交数据时,拼接就是正确的。

通过这样的设置,就完成了想要的效果,动图如下:

GIF 2020-5-14 9-44-16.gif

方法二:使用服务端命令

第二种方法呢,就有点绕了,不熟悉服务端命令的小伙伴请先去学习一下服务端命令,这可是我们活字格6.0新版本的重头戏!!想要玩转活字格,必学哦~教程传送门:https://help.grapecity.com.cn/pages/viewpage.action?pageId=46197175

步骤一:
首先,先要创建一个服务端命令,编辑你要操作的参数:
image.png78944701.png


步骤二:
接下来要编辑服务端命令:
image.png424181823.png

设置参数命令,这个就是新增记录的ID。
image.png831716918.png

接下来就要根据刚才的新增ID查询自动编号的值:
image.png13957823.png

最后,更新数据表即可:
image.png747756652.png

步骤三:
设置好服务端命令之后,就要传参数给服务端,服务端拿到参数后执行命令就可以完成整个过程啦~
image.png708873290.png

这就也就完成了利用服务端命令完成整个数据的存入,来看看效果:
2222222222.gif

怎么样,是不是感受到了服务端命令的强大呢~

快来试试吧~





并发.fgcc

60.79 KB, 下载次数: 85

评分

参与人数 1满意度 +5 收起 理由
追风 + 5

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部