在注册表或者在数据库中登记上次的号码。
如上次号码为:NO:= '200203260001'
  if FormatDateTime('YYYYMMDD',Now) = Copy(NO,1,8) then
    号码 := FormatDateTime('YYYYMMDD',Now)+FormatFloat('000',StrToInt(Copy(NO,9,3))+1)
  else
    号码 := FormatDateTime('YYYYMMDD',Now)+'001';

解决方案 »

  1.   

    function GetFileIndex(mFileName: TFileName; mKeyName: string): Integer;
    begin
      Result := -1;
      with TStringList.Create do try
        if FileExists(mFileName) then 
          LoadFromFile(mFileName);
        Result := StrToIntDef(Values[mKeyName], 0) + 1;
        Values[mKeyName] := IntToStr(Result);
        SaveToFile(mFileName);
      finally
        Free;
      end;
    end;Caption := FormatDateTime('yyyymmdd', Date) + Format('%.3d', [GetFileIndex('c:\temp.txt', '开票单据')]);
      

  2.   

    ShortDateFormat:='YYMMDD';
     QUERY1.sql.Clear;
    QUERY1.SQL.Text:='SELECT upper(ref) ref from GLTRANS_D where 
    upper(substr(ref,1,8))='+''''+'JL'+DATETOSTR(DATE)+''''
    where upper(substr(ref,1,8))='+''''+'JL'+DATETOSTR(DATE)+'''';
    query1.open;
    if query1.RecordCount<>0 then
       begin
           query1.Last;
           case 6-length(inttostr(strtoint(copy(query1.fieldbyname('ref').asstring,9,6))+1)) of
                                    0:s:='';
                                    1:s:='0';
                                    2:s:='00';
                                    3:s:='000';
                                    4:s:='0000';
                                    5:s:='00000';
                                    end;
           navgt.DataSource.DataSet.FieldByName('REF').ASSTRING:=copy(query1.fieldbyname('ref').asstring,1,8)+s+
                                    inttostr(strtoint(copy(query1.fieldbyname('ref').asstring,9,6))+1);
                                    end
                                    else navgt.DataSource.DataSet.FieldByName('REF').ASSTRING:='JL'+DATETOSTR(DATE)+'000001';
      

  3.   

    比如你的发票号码在表中的字段名为 FPHM
    (1) DT:=formatdatetime('yyyymmdd',mow)
    (2) QUERY1.SQL.ADD('SELECT FPHM FROM 表名 WHERE FPHM="'DT%'"')
      IF QUERY1.RECORDCOUNT>0 THEN
        begin
         QUERY1.SQL.ADD('SELECT MAX(FPHM) AS FPHM FROM 表名 WHERE FPHM="'DT%'"');
         fphm:=inttostr(strtoin(query1.fieldbyname('FPHM').AsString)+1)
        end
      else
        begin
          fphm:=dt+'001';    
    end;
        
      

  4.   

    用decade函数解出系统时间
    ,,将值给一个字符串,再用INI文件记录数据,将字符串顺序加1
    最后合并字符串,打印.....