有一个序号需自动生成!假如今天的日期是: 2004/11  的第十条与第二十七条记录则序号是: AKAJ 与 AKBA
其中第一个A代表2004年,从2004开始算,则2005 年是 BK代表是11月份。最麻烦的是最后一个,代表的是11月份的第十条记录与27条记录前面两个可以用代码直接根据当前日期生成!那后面两个字母是不是另建一个表专存此类信息呢?或许那位有更好的办法?谢谢!

解决方案 »

  1.   

    不好意思,2004年11月第 27条记录应是AKAZ
    AZ 之后就是BA,
    BZ 之后就是CA这样每个月最多能产生676条记录.例如11月份的 1,2,3,4,5 条记录则是:AKAA,AKAB,AKAC,AKAD,AKAE。
      

  2.   

    就是A代表0,B代表1,J代表10,Z代表27
      

  3.   

    to: brightheroes(闭关|那一剑的风情) 是的。有没什么好办法?我觉得这样的序号并不是十分科学!但老板坚持这样做!
      

  4.   

    那只好建一个类了
    记录数对应abcd等,有点27进制的意思
      

  5.   

    为,懂了也可以根据ASCII表来进行转换,应该这样还比较简单一点
    也不需要用数据库
      

  6.   

    ASCII自己也有顺序的你可以根据它的顺序你拿来用
      

  7.   

    to: luckweb(冰川) 序号的组成方法不能变的,他们以前的所有资料都是这样编码的!实现方法有更简单的吗?
    to: yichuan1982(往者不可谏,来者犹可追) 
    一个月的记录统一排序!这些都是解释:假如今天的日期是: 2004/11 则第十条与第二十七条记录则序号是: AKAJ 与 AKBA
      

  8.   

    declare @current varchar(2)
    set @current = 'AZ'
    declare @result varchar(2) --结果
    declare @high varchar(1) --高位
    declare @buttom varchar(1) --低位
    set @high = substring(@current,0,2)
    set @buttom = substring(@current,2,2)declare @int  int --是否进位
    set @int = 0if ascii(@buttom) = 90
    begin
      set @int = 1
      set @buttom = 'A'
    end
    else
    begin
      set @buttom = char(ascii(@buttom) + 1)  
    end
    set @high = char(ascii(@high) + @int)
    set @result =@high +  @buttom 
    select @result
      

  9.   

    建一个 enum
    enum Record
    {
       A=1, B=2, C=3, ... ,Z=26
    }Enum.ToObject(typeof(Record), 3).ToString();  // 返回指定数字的 Enum 成员名称// 利用 Enum.Parse 返回指定字母的成员
    Record r = (Record)Enum.Parse(typeof(Record), "AKAD".Substring(2,1));
    // 利用 Convert.ToUInt32 返回成员的值
    MessageBox.Show(Convert.ToUInt32(r).ToString());
      

  10.   

    用类通过运算也可以,不过最直接的是在数据库建个表,查找相应的对应关系,然后字符串相+一下就完事了。qqamoon(口水龙) 楼上的枚举也是个很好的选择