代码实现的功能就是自动生成主键,主键的形式为05-0321-01
分别表示的意思是:
05:表示2005年
0321:表示3月21日
01:表示第一笔单子,此后的单子依次加1
如今天第二笔单子的序号为:05-0321-02,
明天第一笔单子的序号为:05-0322-01
请问这个程序该怎么写?

解决方案 »

  1.   

    这个不难把
    05可以这样得到:
    1、首先取得现在的年分:yearstring1:=yearof(now);
    2、然后取年份的后两位:yearstring2:=rightstr(yearstring,2);
    0321可以这样得到:
    monthstring:=monthof(now);
    01则可以用一个全局变量来记录次数
    number:integer;
    最后result:=yearstring2+'-'+monthsting+'-'+IntToStr(I);
      

  2.   

    可是如果是明天的第一笔记录
    number的值就表示1了。
      

  3.   

    你可以让每次inc(number);之前和前一个记录比较一下,如果monthstring相同,那么inc();否则的话就number:=0;
      

  4.   

    若是与上一条记录相比,需要截取上一条记录的yearstring2+'-'+monthsting+'-'+IntToStr(I);由于monthstring中中间,请问相应的截取函数是哪个,谢谢。
      

  5.   

    反正你的记录05-0322-01的格式已经定了,所以假设你的记录保存在字符串tempstring中
    那么这样:tempstring[5]就可以取到'3'了
      

  6.   

    还有,yearof是word类型的,怎么转为string
      

  7.   

    还有,yearof是word类型的,怎么转为string
    -----------------------------------------
    用inttostr