procedure Tplanfrm.Button1Click(Sender: TObject);
var
  dt1,qt1,qt2:string;
  qn1:integer;
begin
   dt1:=Formatdatetime('YYYYMMDD', Now);
   with DataMod.adoq2 do
     DataMod.adoq2.Close;
     DataMod.adoq2.SQL.Clear;
     DataMod.adoq2.SQL.Add('select max(plan_code) as maxno from TABLE_PLAN where plan_code like '''+dt1+'''' );
     DataMod.adoq2.open;
     if DataMod.adoq2.fieldbyname('maxno').asstring ='' then     begin
      //delete(dt1,1,1);
      qt2:='P'+dt1+'001';
     end
     else
     begin
      qt1:=DataMod.adoq2.FieldByName('maxno').asstring;
      delete(qt1,1,1);
      qn1:=strtoint(qt1)+1;
      qt2:=inttostr(qn1);
      insert('P',qt2,1);
     end;
     plan_code.Text:=qt2;//plan_code显示自动生成的单号
end;每次都只生成同一个单号P20090527001,即使数据表中已经有P20090527001,P20090527002,难道是MAX函数不能用于返回非数值型,还有,else以下的语句好像不能执行

解决方案 »

  1.   

    procedure Tplanfrm.Button1Click(Sender: TObject); 
    var 
      dt1,qt1,qt2:string; 
      qn1:integer; 
    begin 
      dt1:=Formatdatetime('YYYYMMDD', Now);
    改为
    dt1:='P'+Formatdatetime('YYYYMMDD', Now); 
     
      with DataMod.adoq2 do 
        DataMod.adoq2.Close; 
        DataMod.adoq2.SQL.Clear; 
        DataMod.adoq2.SQL.Add('select max(plan_code) as maxno from TABLE_PLAN where plan_code like '''+dt1+'''' ); 
        DataMod.adoq2.open; 
        if DataMod.adoq2.fieldbyname('maxno').asstring ='' then     begin 
          //delete(dt1,1,1); 
          qt2:='P'+dt1+'001'; 
        end 
        else 
        begin 
          qt1:=DataMod.adoq2.FieldByName('maxno').asstring; 
          delete(qt1,1,1); 
          qn1:=strtoint(qt1)+1; 
          qt2:=inttostr(qn1); 
          insert('P',qt2,1); 
        end; 
        plan_code.Text:=qt2;//plan_code显示自动生成的单号 
    end; 
      

  2.   

    还是那样,每次生成的单号都是同一个,我感觉每次查询出来的结果都是空,因为我把else前面的语句去掉会报出错误"  ''is not a integer value ”的错误
      

  3.   

    另一个贴子发了链接为什么不看呢,唉...
    http://topic.csdn.net/u/20080214/09/107b0a7e-37c1-4597-b573-b70186c7c4c9.html
      

  4.   

    问题已经解决,原来'''+dt1+'''要加%,另外,20090527001已经超出integer型范围,我改成real型