回 帖 发 新 帖 刷新版面

主题:[讨论]如何用存储过程生成这样的单据号wz200611070001

向各位请教:如何用存储过程生成这样的流水单据号(wz200611070001)网上介绍的那个我没有弄明白,请高手指点,谢谢!

回复列表 (共6个回复)

沙发

ShowMessage(inttostr((Trunc(dateTimePicker2.DateTime-dateTimePicker1.DateTime))));

板凳

不好意思 回错帖子了!抱歉!

3 楼

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 楼

有这样的情况哟,
你的这个流水帐号是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 楼


44444444444444444

6 楼

4楼讲的就是

我来回复

您尚未登录,请登录后再回复。点此登录或注册