客户要求单据必须这样生成,比如一个入库单,单据号规则为RK+年月日+第几个单据。比如2010-10-11号第一个单据为RK2010101101,第二个单据为RK2010101102,依次类推。敢问大家,实现的思路是怎样的。单据号都是唯一的。

解决方案 »

  1.   

    前面取日期为字符串如 2010-10-11  为 RK20101011.
    后面由系统产生随机数补上。。 注意check Dup。
      

  2.   

     string date = DateTime.Now.ToString("yyyyMMdd");
                Random r = new Random();
                date = date + r.Next(0, 9);
                string OrderNo = "RK" + date.PadRight(10, '0');
                Response.Write(OrderNo);
      

  3.   

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.IO;
     namespace tttttttt
    {
        class Program
        {
            public static string transfer(int i)
            {
                
                string order = "";
                if (i >= 1000)
                {
                    order = i.ToString();
                    return order;
                }
                else if (i >= 100)
                {
                    order = "0" + i.ToString();
                    return order;
                }
                else if (i >= 10)
                {
                    order = "00" + i.ToString();
                    return order;
                }
                else
                {
                    order = "000" + i.ToString();
                    return order;
                }
            }        static void Main(string[] args)
            {
                FileStream fl = new FileStream(@"d:\shuju.txt", FileMode.Create, FileAccess.Write);
                StreamWriter wl = new StreamWriter(fl);
                string date = string.Empty ;
                for (int i = 0; i < 10000; i++)
                {
                    string order = transfer(i);
                    date =DateTime.Now.ToString("yyyyMMdd");
                    date += order;
                    wl.WriteLine(date);//需要的数据写到了D盘下的shuju.txt
                }
                wl.Close();
                fl.Close();
                Console.Read();        }
            
        }
    }
      

  4.   

    string no="RK"+DateTime.ToString("yyyyMMdd")+最大值.ToString().padLeft(2,'0')
      

  5.   

    declare @id varchar(12),@dt varchar(8)
    select @id='RK'+@convert(varchar,getdate(),112)+right(1001+isnull(right(max(id),3),0),3)
    from tb 
      

  6.   

    RK + 日期字符串 + 数字判断方法。建议用identity列,避免两台计算机同时操作。
      

  7.   

    估计还是没理解我的意思。我的意思是2010-10-11日这一天第一张单据时RK2010101101,第二张单据为RK2010101102,依次类推。到了2010-10-12从新开始RK2010101201,也是依次。年月日后的数字不能是随机的,只是依次叠加的,即第一张就是01,第二张就是02,其实说白了,这个问题就是年月日后面数字的生成,
      

  8.   

    数据库里增加一列,记录最后2位的编号,int型
    新增一条时,查询当天最大编号,+1作为新的编号