有一数据库子段(bill_no)
单据编号 Bill_no VarChar(8) Not null
描述:
自动生成8位流水号,第一纪录00000001字符窜类型,如何使递增,00000001,0000000200001111?

解决方案 »

  1.   

    每次新增记录前查一下最大的Bill_no + 1
    select isnull(max(Bill_no), 0) + 1 as bill_no from bill_no
    用它生成新的流水号
    int iMax = 8;
    string strNewID = iMax.ToString().PadLeft(8, '0');
      

  2.   

    自己手工处理在并发的时候非常不好,经常会重复。我一般采用下面两种方法:
    1、让数据这个字段是int 的自增, 显示流水号的时候,我程序处理一下,让 1 编成 000000000000012、使用 Guid 或者 时间戳。 这两个字段都会重复,只是没有那种自增的情况了。
      

  3.   

    1)as bill_no_Max from bill_no
    不要与表同名2)string strNewID = iMax.ToString("00000000");
    更准确如果你使用的是无遗漏式的自增,建议使用 Count(Bill_no) as bill_no_Max
      

  4.   

    卡皮也是一种好方法,但数据库设计的时候是varchar,我不想改数据结构了,多谢
    谢谢 (阿利 向MVP进军)
      

  5.   

    可以在数据库理只存1,2×××122222,122223 
    在select语句中用把数据加100000000转化成varchar再去掉最高位不就可以了吗select substring(convert((100000000+字段名),varchar(10)),2,8)
    from 表名