| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2040 人关注过本帖
标题:请教vfp+sql多用户并发,如何生成不重复订单号!规则是年月日+四位递增数字
只看楼主 加入收藏
yafengliang
Rank: 2
等 级:论坛游民
帖 子:111
专家分:35
注 册:2016-2-21
结帖率:54.55%
收藏
已结贴  问题点数:12 回复次数:5 
请教vfp+sql多用户并发,如何生成不重复订单号!规则是年月日+四位递增数字
如题所说
搜索更多相关主题的帖子: 订单 规则 年月日 递增 数字 
2017-07-26 08:56
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3146
专家分:8408
注 册:2015-3-25
收藏
得分:12 
1、'20170725' + '0001'
2、最大是9999,也就是9999张单据
网上讨论过,在同1条语句中查询与插入,是不会出现重复。
如,SQL2000中,下面语法是可以的
insert into 表a(字段1,字段2,字段3,单号)
select @字段1,@字段2,@字段3,单号=(select max(单号)+1 from 表a)
这个列子的单号只是,简单的 int,如果这个不重复了,那你的也就可以按这个思路,去实现
2017-07-26 12:46
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3146
专家分:8408
注 册:2015-3-25
收藏
得分:0 
--drop table #tb1
--create table #tb1(单号 varchar(12),日期 datetime)

declare @单号 varchar(12),@日期 datetime
set @日期=getdate()

insert into #tb1(单号,日期)
select convert(varchar(8),getdate(),112)+right('0000'+rtrim((substring(isnull(max(单号),'000000000000'),9,4)+1)),4),
@日期 from #tb1 where convert(varchar(8),日期,112)=convert(varchar(8),@日期,112)

select * from #tb1
图片附件: 游客没有浏览图片的权限,请 登录注册
2017-07-26 17:36
yafengliang
Rank: 2
等 级:论坛游民
帖 子:111
专家分:35
注 册:2016-2-21
收藏
得分:0 
回复 3楼 mywisdom88
谢谢!这个是不重复了,我现在是建一个表保存最大单号,一产生单号马上回写进这个表,其他用户创建订单时,先去找当天的最大单号。但有一个情况,如果一个用户没有保存就退出,这时将出现断号;如果锁表(或者产生单号代码放在‘保存’按钮的话),其他用户就要等待。因为一个用户在操作时需要一定的时间。

[此贴子已经被作者于2017-7-27 16:41编辑过]

2017-07-27 16:36
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3146
专家分:8408
注 册:2015-3-25
收藏
得分:0 
提前分配单号的,会出现你这个情况。
3楼的方法是不提前分配单号,只有在写数据的时候,才分配单号,写成功时,返回单号给当前操作界面
好处是:号码一般是连续,不重复,
坏处是:当前操作界面在新增记录时,看不到单号,要等到保存成功时,才能看到单号是什么

[此贴子已经被作者于2017-7-27 17:31编辑过]

2017-07-27 17:27
ccidnet
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2019-2-11
收藏
得分:0 
回复 楼主 yafengliang
2019-02-21 22:41
快速回复:请教vfp+sql多用户并发,如何生成不重复订单号!规则是年月日+四位递增 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015514 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved