procedure TForm1.FormCreate(Sender: TObject); var i:Real; newid:string; begin with ADOQuery1 do begin Close; SQL.Clear; SQL.Add(' select * from JYBB where id like '+''''+FormatDateTime('YYMM',Now())+'%'+''''); Open; if ADOQuery1.IsEmpty then newid:=formatdatetime('YYMM',Now())+'0001' else begin Close; SQL.Clear; SQL.Add('select max(id)+1 as i from JYBB where left(id,4)='''+FormatDateTime('YYMM',Now())+'''') ; Open; newid:=FormatDateTime('YYMM',Now())+ FormatFloat('000',i); end; Edit3.Text:=newid; end; end;
FormatFloat('0000',i);
还是不行,加了后生成的是09100000 FormatFloat('0000',ADOQuery1.FieldByName('i').asInterger); FormatFloat('0000',ADOQuery1.FieldByName('i').asInteger); 你返回的 i 是正确的吗? 这种问题单步跟就应该能定位到出问题的语句。 showmessage(ADOQuery1.