主题:[讨论]如何用存储过程生成这样的单据号wz200611070001
wj2310
[专家分:0] 发布于 2007-05-22 14:11:00
向各位请教:如何用存储过程生成这样的流水单据号(wz200611070001)网上介绍的那个我没有弄明白,请高手指点,谢谢!
回复列表 (共6个回复)
沙发
linjipeng0 [专家分:220] 发布于 2007-09-18 08:56:00
ShowMessage(inttostr((Trunc(dateTimePicker2.DateTime-dateTimePicker1.DateTime))));
板凳
linjipeng0 [专家分:220] 发布于 2007-09-18 08:56:00
不好意思 回错帖子了!抱歉!
3 楼
linjipeng0 [专家分:220] 发布于 2007-09-18 09:34:00
if exists(select * from sysobjects where id=object_id(N'[dbo].[Auto_DJ]')
and objectproperty(id,N'IsProcedure')=1)
drop proc Auto_DJ
GO
create proc Auto_DJ
@pp varchar(14) output
As
declare @dd varchar(10),
@mm varchar(10),
@yy varchar(10),
@ymd varchar(10),
@dj varchar(4)
begin
select @dj=right(max(单据编号),4) from 产品表
if @dj=0
begin
@dj='0001'
end
else
begin
@dj=convert(varchar(4),convert(int,@dj)+1)
end
set @ymd=convert(varchar(10),getdate(),120)
set @yy=substring(@ymd,1,4)
set @mm=substring(@ymd,6,2)
if substring(@mm,2,1)='-'
begin
set @mm='0'+substring(@mm,1,1)
end
set @dd=right(@ymd,2)
if substring(@dd,1,1)='-'
begin
set @dd='0'+right(@dd,1)
end
set @pp='wz'+@yy+@mm+@dd+@dj
end
GO
4 楼
上帝的关爱 [专家分:0] 发布于 2007-09-19 17:48:00
有这样的情况哟,
你的这个流水帐号是wz是代表的“物资”的意思吗?
后面的是时间,最后的0001就是流水号了
如果这样的话,在数据库中就有一个流水号的表,字段有类型,和流水号
我们设计的存储过程,就是获取数据库中流水号表当中的
对应‘物资‘中的流水号,返回的是“时间+这个流水帐号+1“
获取了流水号后当然最后就是跟新流水号这个表,我想这步不应该写在存储过程中
为妙!!
代码:
create proc Auto_ID @tpye_id integer,
//@tpye_id 为返回什么东东的流水号,这里是‘wz’,'wz'在数据库中有固定的ID这里就是integer类型
@id varchar(14) output
As
declare @dd varchar(10),
@mm varchar(10),
@yy varchar(10),
@dj varchar(4)
begin
select @dj=right(流水号,4) from 流水号表 where 流水号类型=@tpye_id
@dj=convert(varchar(4),convert(int,@dj)+1)
set @ymd=convert(varchar(10),getdate(),120)
set @yy=substring(@ymd,1,4)
set @mm=substring(@ymd,6,2)
if substring(@mm,2,1)='-'
begin
set @mm='0'+substring(@mm,1,1)
end
set @dd=right(@ymd,2)
if substring(@dd,1,1)='-'
begin
set @dd='0'+right(@dd,1)
end
set @pp=@yy+@mm+@dd+@dj
end
感觉和楼上的差不多,可能是我联想到我以前做过的项目了。。。。
5 楼
wwh111 [专家分:0] 发布于 2007-11-19 19:46:00
44444444444444444
6 楼
wealthy [专家分:1840] 发布于 2007-11-24 09:49:00
4楼讲的就是
我来回复