我用这段代码可以完成自动编号
  try
  dt:=FormatDateTime('yyyymmdd',Now);
  qry1.close;
  qry1.SQL.Clear;
  qry1.sql.Add('select * from BMan where'+ ' '+ 'BTNO like '+'''FB%''');
  qry1.open;
  if qry1.isempty then
     i:=1
  else
     begin
       qry1.last;
       i:=StrToInt(copy(qry1.fieldvalues['BTNO'],11,3));{例:C-0001,copy将截取0001}
       inc(i);//递增1
     end;
   tempNo:=IntToStr(i);
   while Length(tempNo)<5 do
      tempNo:='0'+tempNo;
      dbNO.Caption:='FB'+dt+tempNo;但是后面再加上
qry1.append就不能实现了
这个是什么回事
谁知道解释下
谢谢

解决方案 »

  1.   

    procedure TWKO_RepairReport_F.btnSB_NewClick(Sender: TObject);
    var
     Strid,TStrid:string;
    begin
      inherited;
      if FFocus=fMaster then
      begin
        adoq_mfd.Append;
        ChangeStatus(sEdit);
        qry_BaseTemp.Close;
        qry_BaseTemp.SQL.Text:='select getdate() as NowT';
        qry_BaseTemp.Open;
        Strid:=FormatDateTime('YYYYMMDD',qry_BaseTemp.fieldbyname('NowT').AsDateTime);
        adoq_Repair.Active:=False;
        with qry_BaseTemp do
        begin
            Close;SQL.Clear;SQL.Add('select max(ID) as ID from WKO_MFDRepair where id like '+''''+Strid+'%'+'''');
            Open;
            if FieldValues['ID']=null then TStrid:=Strid+'0001'
            else
            begin
               case Length( inttostr( StrToInt(Copy(FieldValues['ID'],9,4))+1)  )  of
               1:TStrid:=Strid+'000'+inttostr( StrToInt(Copy(FieldValues['ID'],9,4))+1);
               2:TStrid:=Strid+'00'+inttostr( StrToInt(Copy(FieldValues['ID'],9,4))+1 );
               3:TStrid:=Strid+'0'+inttostr( StrToInt(Copy(FieldValues['ID'],9,4))+1);
               4:TStrid:=Strid+ inttostr(StrToInt(Copy(FieldValues['ID'],9,4))+1) ;
               end;
            end;
        end;
        adoq_mfd.FieldValues['ID']:=TStrid;
      end;
    end;
      

  2.   

    你在哪里加的append,是不是加了append后,当指向last时,指向的是append的那条记录呢
      

  3.   

    直接在后面加上
    我是要生成新的编号后
    开始新增相关数据,所直接在后面加上APPEDN
    如下
     try
      dt:=FormatDateTime('yyyymmdd',Now);
      qry1.close;
      qry1.SQL.Clear;
      qry1.sql.Add('select * from BMan where'+ ' '+ 'BTNO like '+'''FB%''');
      qry1.open;
      if qry1.isempty then
      i:=1
      else
      begin
      qry1.last;
      i:=StrToInt(copy(qry1.fieldvalues['BTNO'],11,3));{例:C-0001,copy将截取0001}
      inc(i);//递增1
      end;
      tempNo:=IntToStr(i);
      while Length(tempNo)<5 do
      tempNo:='0'+tempNo;
      dbNO.Caption:='FB'+dt+tempNo;
    qry1.append;