20050101-01
20050101-02
........................
20050101-10
var
  i:string;
  j:string;
  ss:string;
begin
  adoquery1.First;
  if copy(adoquery1.fieldbyname('票号').AsString,2,11)='' then
    j:='0'
  else
    j:=copy(adoquery1.fieldbyname('票号').AsString,2,11);
  while adoquery1.Eof =false do
  begin
    if copy(adoquery1.fieldbyname('票号').AsString,2,11)='' then
      i:='0'
    else
      i:=trim(copy(adoquery1.fieldbyname('票号').AsString,2,11));
    if j<i then
      j:=i;
    adoquery1.Next;
  end;
  a2.Text:=formatdatetime('yyyymmdd',now)+'-'+inttostr(strtoint(trim(j))+1);
  adoquery1.First;
  a3.SetFocus;  end;

解决方案 »

  1.   

    楼主代码有错误。
    j:=copy(adoquery1.fieldbyname('票号').AsString,2,11);
    ///////////////////////
    formatdatetime('yyyymmdd',now)+'-'+inttostr(strtoint(trim(j))+1);
    要出错的。
      

  2.   

    if j<i then
          j:=i;有问题
      

  3.   

    你的代码贴错了?j:=copy(adoquery1.fieldbyname('票号').AsString,2,11);
    ///////////////////////j:=copy(adoquery1.fieldbyname('票号').AsString,11,2);比较的地方错误,字符串比较,‘10’<‘9’,改成下面:
        if StrToInt(j)<StrToInt(i) then
          j:=i;
      

  4.   

    代碼一團糟, 寫得很不好!copy(adoquery1.fieldbyname('票号').AsString,2,11)
    修改為:
    copy(adoquery1.fieldbyname('票号').AsString,10,2) while adoquery1.Eof =false do
    可以修改為
    while not adoquery1.Eof doa2.Text:=formatdatetime('yyyymmdd',now)+'-'+inttostr(strtoint(trim(j))+1);
    修改為:
    a2.Text:=formatdatetime('yyyymmdd',now)+'-'+ Format('%.2d', [StrToInt(j)+1]);