首页 新闻 会员 周边

winform 事件里用for 循环执行新增和查询流水码,当用多台电脑执行时会出现重复流水码,请问这个要如何解决

0
[待解决问题]

winform 事件里用for 循环执行新增和查询流水码,当用多台电脑执行时会出现重复流水码,请问这个要如何解决

飞翔的秋秋的主页 飞翔的秋秋 | 菜鸟二级 | 园豆:238
提问于:2019-07-06 21:13
< >
分享
所有回答(5)
0

可能是你的流水码生成规则不适用于并发环境

老码识途呀 | 园豆:418 (菜鸟二级) | 2019-07-06 23:10

有没有什么方法能处理这个问题,因为一天打六七十万个条码,要三四个小时,用户觉得有点慢,如果用多台电脑打可能会快点,但流水码就会重复了!

支持(0) 反对(0) 飞翔的秋秋 | 园豆:238 (菜鸟二级) | 2019-07-08 08:17
0

guid .

pencile | 园豆:845 (小虾三级) | 2019-07-07 00:11

用guid可以满足你的要求。

全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符。GUID主要用于在拥有多个节点、多台计算机的网络或系统中。在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID。GUID 的总数达到了2^128(3.4×10^38)个,所以随机生成两个相同GUID的可能性非常小,但并不为0。所以,用于生成GUID的算法通常都加入了非随机的参数(如时间),以保证这种重复的情况不会发生。

参考: https://baike.baidu.com/item/GUID/3352285

支持(0) 反对(0) pencile | 园豆:845 (小虾三级) | 2019-07-08 09:07
0

一种是流水码生成规则上想办法,比如加时间戳和随机数混合,一种是在数据库验证,生成保存的地方验证是否已经存在

编程浪子007 | 园豆:202 (菜鸟二级) | 2019-07-07 04:02

我在存储过程有判断,有就加一在转16进制,在存储,没有就从1开始,但是多台电脑一起执行的话他就会重复!

支持(0) 反对(0) 飞翔的秋秋 | 园豆:238 (菜鸟二级) | 2019-07-08 08:14
0

不同的电脑打印可以通过规划不同的码段不就行了,比如a电脑码段 为 A00,b电脑码段为B00,这样不管怎么打都不会重复了
或者区分流水号的范围,比如a电脑为0~10000,b电脑为10001~20000,这样也不会重复了

jqw2009 | 园豆:2439 (老鸟四级) | 2019-07-08 08:48
0

不懂你们的业务,可否把要打印的东西分段,每个电脑自只负责自己的一段,至于怎么分段,看情况吧,如果情况复杂,你可能需要一台电脑专门做任务分配器

会长 | 园豆:12401 (专家六级) | 2019-07-08 09:51
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册