我想实现一个根据年月日自动编号,前面还要加上XQJH字样
比如:今天的第一份报表的编号XQJH20061117001
以此类推,应该怎样实现

解决方案 »

  1.   

    Random ro=new Random(unchecked((int)DateTime.Now.Ticks));   
    id="XQJH"+DateTime.Now.ToString("yyyyMMdd")+ro.Next(0,999).ToString("000");
      

  2.   

    方法:
       1.XQJH20061117001 第一个存在表里,写个通用方法每次调用根据业务,单据等等
    读出来,然后再加1,把加1后的重新写回表里  2.另外,因为你的和时间有关系,所以,多个判断,如果表里存的时间20061117和当前一样,就执行1操作,不一样的话,就根据当前日期生成个新的编号,存进表里
      3.编号的生成,字符串+
      

  3.   


    string strNowDate="XQJH"+DateTime.Now.ToString("yyyyMMdd");
    string strC=GetNo(strNowDate);
    private string GetNo(string sDate)
    {
     string strR="";
      ...去数据库里用存储过程根据当前传入的参数去like编号retrun strR;
    }如果全在今天添加的数据,编号会是:XQJH20061117001,XQJH20061117002,.....
    明天就会是:XQJH20061118001,XQJH20061118002...
    依次类推.
      

  4.   

    1、建立一个表JXC_Code,里面字段为SaveDate(日期型的),InPutCode(int型的)
       加一条数据进去,当前日期,100001
    2、在数据库中建立如下这个存储过程
    CREATE PROCEDURE [return_InputCode]
    AS
    BEGIN
        DECLARE @intID INT, @strID CHAR(16),  @intY INT, @intM INT,  @intD INT, @myDate datetime,  @xtDate  datetime
        SET @myDate=GETDATE()
        SET @intY=YEAR(@myDate)
        SET  @intM=MONTH(@myDate)
        SET   @intD=DAY(@myDate)
        SELECT @xtDate =SaveDate ,@intID=InPutCode FROM JXC_Code
        IF  ((@intY!=YEAR(@xtDate)) OR (@intM!=MONTH(@xtDate))  OR (@intD!=DAY(@xtDate)))
            BEGIN
             UPDATE JXC_Code SET SaveDate=@myDate,  InPutCode='100002'
             SET @intID='100001'
            END
       ELSE
            BEGIN
             UPDATE JXC_Code SET InPutCode=InPutCode+1
            END
       SET @intY=YEAR(@myDate)
       SET @intM=MONTH(@myDate)+100
       SET @intD=DAY(@myDate)+100
       SET  @strID=STR(@intY,4,1)+SUBSTRING(STR(@intM,3,1),2,2)+SUBSTRING(STR(@intD,3,1),2,2)+SUBSTRING(STR(@intID,6,1),2,5)
       SELECT @strID as code
    END
    GO
    3、程序
    SqlConnection cn = new SqlConnection(connectionString);
    cn.open();
    SqlCommand cmd=new SqlCommand(cn);
    cmd.CommandType=CommandType.StoredProcedure;
    cmd.CommandText="return_InputCode";
    SqlDataReader myReader=cmd.ExecuteReader();
    if (myReader.Read())
    {
    InPutCode="XQJH"+Convert.ToString(myReader["code"]);
    }
    myReader.Close();
    cn.close();