各位大哥大姐请帮帮小弟吧...问题是这样的:
    编号的前六位是固定的中间四位是年号后六位是用流水号,但是年号改变后六位的流水号自动从1开始增加,比如2007年的登记字号是4415812007000006,2008年后登记字号的后六位自动从4415812008000001。这个问题已经捆扰我好几天了请大家帮帮忙,谢谢了。  

解决方案 »

  1.   

    CREATE VIEW v_GetDate
    AS
    SELECT dt=CONVERT(CHAR(4),GETDATE(),120)--方法
    CREATE FUNCTION  f_GetNo()
    RETURNS char(15)
    AS
    BEGIN
    DECLARE @dt CHAR(4)
    SELECT @dt=dt FROM v_GetDate
    RETURN(
    SELECT '441581'+@dt+RIGHT(1000001+ISNULL(RIGHT(MAX(编号),6),0),6) 
    FROM 表 WITH(XLOCK,PAGLOCK)
    WHERE 编号 like '441581'+@dt+'%')
    END--获取编号
    SELECT dbo.f_Get()
      

  2.   

    我以前做过这样的程序,具体思路是这样的,可以在窗口上放两个edit,一个用于存放年,一个用于存放计数值,
    编一个函数,每一次生成一个登记字号的时候,先检测年份是否和上一次不一样,
    if 不一样 then
    begin
    ii:=1;//ii为计数值
    oldyear:=newyear;
    end else inc(ii);
    result:='441581'+newyear+format('%0.6d',[ii]);
      

  3.   

    没看清楼主要的是SQL,楼上的可行