procedure move_datatoNewkeycode(newkeycode,oldkeycode:string);
var
  str:string;//***********子函数**************修改并写到表里
  procedure updatedata(strtablename:string);
  var
      tmpquery:Tquery;
      i:integer;
      TmpDir,VarField,tmpstr0,tmpstr1:string;
      CustTable:TTable;
      CustQry:TQuery;
      CustBatmove:TBatchMove;
      DONE:boolean;
  begin
     //创建临时表并查询出数据
    CustTable:=TTable.Create(self);
    with CustTable do
    begin
      Active:=False;
      DatabaseName:=tempalias;
      TableType:=ttdefault;
      TableName:='TaskDone.DBF';//临时用
      with FieldDefs do
        begin
          Clear;
          Add('Field1', ftInteger, 0, True);     
        end;
      CreateTable;
    end;    CustQry:=TQuery.Create(self);
    with CustQry do
    begin
      Active:=False;
      DatabaseName:='fcgl';
      close;
      Sql.Clear;
      Params.Clear;
      Sql.Add('select * from '+strtablename+ ' where keycode=:keycode');
      parambyname('keycode').asstring:=oldkeycode; 
      CustBatmove:=TBatchMove.Create(self);
      with CustBatmove do
      begin
        Destination:=CustTable;
        Source:=CustQry;
        Mode:=BatCopy;
        Execute;
      end;      CustQry.Free;
      CustBatmove.Free;
      CustTable.Free;
      //修改临时表
      with p_dm_log.qry_tmp do
      begin
        DatabaseName:=tempalias;
        Close;
        Sql.Clear;
        Params.Clear;
        Sql.Add('update taskdone set keycode=:keycode');
        parambyname('keycode').asstring:=newkeycode;
        execsql;
      end;
      with p_dm_log.qry_tmp do
      begin
        DatabaseName:=tempalias;
        Close;
        Sql.Clear;
        Params.Clear;
        Sql.Add('select * from taskdone');
        open;
      end;
     //追加到表
      CustTable:=TTable.Create(self);//连接到sql server
      with CustTable do
      begin
      Active:=False;
      DatabaseName:='fcgl';
      TableType:=ttdefault;
      TableName:=strtablename;
      end;
       CustBatmove:=TBatchMove.Create(self);
      with CustBatmove do
      begin
        Destination:=CustTable;
        Source:=p_dm_log.qry_tmp;
        Mode:=batAppend;
        Execute;
      end;
    
      CustBatmove.Free;
      CustTable.Free;
    end;
   
  end;
begin  begintransaction;//开始个事务
   with p_dm_log.qry_log do
    begin
      
      updatedata('workstep');  //速度快
      updatedata('filein');   //速度慢
      updatedata('info');
      updatedata('land');
      updatedata('room');
      updatedata('build');   //其慢无比committransaction;//提交事务
  end;