線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1312
推到 Plurk!
推到 Facebook!

并发取单据号的问题?

答題得分者是:P.D.
zgjob
一般會員


發表:5
回覆:4
積分:1
註冊:2008-05-22

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-06-04 08:45:21 IP:218.89.xxx.xxx 訂閱
单据号格式为A0000001 ;插入收发记录表,多人同时取最大单据号,如何避免单据号不重复??只要求不重复.
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-06-04 15:35:03 IP:61.67.xxx.xxx 未訂閱
本站有多相關的討論, 你可以用關鍵字"編號", "編碼"..等等查詢
ron_xin
一般會員


發表:3
回覆:3
積分:1
註冊:2006-08-21

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-06-11 21:43:42 IP:121.35.xxx.xxx 訂閱
[code sql]
--=============================================
--过程用于为新插入的记录生成关键字
--参数说明: @TabName 要插入的表名
-- @FieName 要生成关键字的字段名
-- @PreCode 默认的前缀
--eg:exec NewTableDataNO 'orderm','single_no','DD'
--=============================================
CREATE PROCEDURE [NewTableDataNO]
@TableName varchar(50),
@FieldName varchar(50),
@PreCode varchar(2)
AS

Declare @TmpPreCode varchar(100),@Sql varchar(1000), @NewNo varchar(50), @I varchar(50)
if not exists(select * from tempdb.dbo.sysobjects where Name = '##TmpNewNo')
Create table ##TmpNewNo(RandF float, NewNo varchar(50))

Set @TmpPreCode = @PreCode
--找当天的最大编号
select @TmpPreCode = @TmpPreCode CONVERT(char(6), Getdate(), 12), @I = cast(RAND() as varchar(50))
set @sql = 'insert ##TmpNewNo(RandF, NewNo)
select ' @I ', isnull(max(' @FieldName '), '''')'
' from ' @TableName
' Where left(' @FieldName ', len(''' @TmpPreCode ''')) = ''' @TmpPreCode ''''
exec(@Sql)
select @NewNo = NewNo from ##TmpNewNo where RandF = @I
delete from ##TmpNewNo where RandF = @I

--生成新的编号
if @NewNo = '' set @I = '000' else Set @I = right(@NewNo, 3)

set @I = cast(cast(@I as int) 1 as varchar(3))
set @I = case len(@I) when 0 then '001' when 1 then '00' @I when 2 then '0' @I else @I end

select @TmpPreCode @I

[/code]
系統時間:2024-05-06 23:36:24
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!