我现在要实现的是:一个char(10)的字段,前六位代表的是年月,如200302,后四位则是一个编号,我要写段代码,让每次有新记录进去的时候,这个编号等加1,该怎么做?

解决方案 »

  1.   

    最好用一个数据表来实现,每次取max()+1或者存到一个INI文件里
      

  2.   

    var str1,str2:string
        str:string;  begin
      str1:=formatdatetime('yyyydd',date);//将当前日期转换为200302的形式
      inc(i);//i:全程变量,初始化为 1
      case i of
      i<10: result:=str1+'000'+inttostr(i);
      10<i<100 :result:=str1+'00'+inttostr(i);
      100<i<1000:result:=str1+'0'+inttostr(i);
      1000<i<9999:result:=str1+inttostr(i);
    end;
      

  3.   

    str:=formatdatetime('yyyymmdd',date);'select a=isnull(max(单号),0) from table like '''+str+'%''';//省略写了billno:=query.fieldbyname('a').asinteger;if billno=0 then 
      maxbillno:=str+'0001'
    else
      maxbillno:=inttostr(billno+1);
      

  4.   

    你是要存到数据库的吧,这个我做个!
    先得到当前时间,在用substring配合cast得到当前的六位数的年份+月份
    然后再用max得到最大编号+1即可,大概代码为:
      

  5.   

    to duduwolf:代码怎么没了?
      

  6.   

    现在我就是想要取这个变化的值,因为前面的六位是系统取的,关键是后面的四位我要去在变的那个数字,然后inc(i),可是在判断数字是一位的还是二位的还是三位的?
      

  7.   

    不就是用StrToInt转化为数字加一