最好单号以:年月日+三位数字  插入数据库!
例如:20130630+001 =20130630001
后面的再申请的单号都自增 2013063000X(X=1---999)
代码如何实习,或者指点下,说下大概思路等等...
【自学,C# ASP.net MSSQL 吃力啊】ASP.NETC#

解决方案 »

  1.   

    将id定义为成员变量DateTime.Now.ToString("yyyyMMdd") + id.ToString();
    id++;
      

  2.   

    ms sqlserver和mysql都支持自增字段,如果你定义自增字段,那么你插入一条新记录都会自动生成一个不重复的id,
      

  3.   

    楼主新建一张表,这个表里存放每个表的表名和当前ID(就是楼主需要的这个单号)
    下面是代码
     public static string getSeqYM(string tableName)
        {
            string seq_id = "";
            string as_tablename = tableName;
            as_tablename = as_tablename.ToUpper();
            string ls_sql;
            long li_dqz;
            ls_sql = "select table_name,current_value from pub_sequence where table_name='" + as_tablename + "'";
            DataTable dt = dbbase.getDataSet(ls_sql).Tables[0];
            string buss_YM = DateTime.Now.ToString("yyyyMM");
            if (dt.Rows.Count == 0)
            {
                seq_id = buss_YM + "001";
                dbbase.ExecuteSql("insert into pub_sequence values('" + as_tablename + "'," + seq_id + ")");
            }
            else
            {
                string id_str = dt.Rows[0]["CURRENT_VALUE"].ToString();
                if (id_str.Length > 6 && id_str.Substring(0, 6) == buss_YM)
                {
                    li_dqz = Convert.ToInt64(id_str);
                    li_dqz += 1;
                    seq_id = li_dqz.ToString();
                    dbbase.ExecuteSql("update pub_sequence set current_value=" + seq_id + " where  table_name= '" + as_tablename + "'");
                }
                else
                {
                    seq_id = buss_YM + "001";
                    dbbase.ExecuteSql("update pub_sequence set current_value=" + seq_id.ToString() + " where  table_name= '" + as_tablename + "'");
                }
            }        return seq_id;
        } 
    其中参数里的那个table就是你需要生成单号的那个表,pub_sequence表就是用来存放你的表名和当前ID的表。