首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

提交一申请表单,怎么产生惟一的单号【新手提问,】

2013-07-11 
提交一申请表单,如何产生惟一的单号【新手提问,】最好单号以:年月日+三位数字插入数据库!例如:20130630+001

提交一申请表单,如何产生惟一的单号【新手提问,】
最好单号以:年月日+三位数字  插入数据库!
例如:20130630+001 =20130630001
后面的再申请的单号都自增 2013063000X(X=1---999)
代码如何实习,或者指点下,说下大概思路等等...
【自学,C# ASP.net MSSQL 吃力啊】 ASP.NET C#
[解决办法]
将id定义为成员变量

DateTime.Now.ToString("yyyyMMdd") + id.ToString();
id++;
[解决办法]

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

“自增”根本不保证流水号连续,请记住这个基本知识。

如果是要实现流水号机制,这对于初学者是个比较有难度的问题。难的不在于技术,而在于初学者根本不知道去思考“问题在哪里”。
[解决办法]
引用:
Quote: 引用:

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

“自增”根本不保证流水号连续,请记住这个基本知识。

如果是要实现流水号机制,这对于初学者是个比较有难度的问题。难的不在于技术,而在于初学者根本不知道去思考“问题在哪里”。

还是希望sp能说明一下如何设计这些东西。
[解决办法]
以前我们公司是这样实现的。
写一个存储过程,再建一张表,表名是流水号表,存储过程根据这样流水号表生成类似的流水号出来。。
每次这个流水号都是执行存储过程获取。
如果位数超出999,就多撑出一位
[解决办法]
楼主新建一张表,这个表里存放每个表的表名和当前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的表。

热点排行