Como tornar a importação mais rápida de uma tabela para outra com o Delphi

Delphi

28/07/2016

Boa tarde, tenho uma tabela de cheques e estou importando seus registros para uma outra tabela de cheques

esse é o código


 try
        Application.ProcessMessages;

        Sleep(0);
        LblStatus11.Caption := 'Sincronizando tabela CHEQUES...';
        Application.ProcessMessages;

        dtMdlsaoLuiz11.FDCHEQUESVelho.Active := False;
        dtMdlsaoLuiz11.FDCHEQUESVelho.Active := True;
        dtMdlsaoLuiz11.FDCHEQUESVelho.First;
        dtMdlsaoLuiz11.FDCHEQUESNovo.Active := False;
        dtMdlsaoLuiz11.FDCHEQUESNovo.Active := True;

        status := Ler_chave_reg('tabelas','cheques', '', verifica_ini);
        if status = 'OK' then
            next
        else
        begin
            parcial:= 0;
            WaitPanel.Visible := True;
            while not dtMdlsaoLuiz11.FDCHEQUESVelho.Eof do
            begin
                inc(Parcial);
                dtMdlsaoLuiz11.FDCHEQUESNovo.Insert;
                dtMdlsaoLuiz11.FDCHEQUESNovoCH_GRUPO1.Value := dtMdlsaoLuiz11.FDCHEQUESVelhoGRUPO1.Value;
                dtMdlsaoLuiz11.FDCHEQUESNovoCH_GRUPO2.Value := dtMdlsaoLuiz11.FDCHEQUESVelhoGRUPO2.Value;
                dtMdlsaoLuiz11.FDCHEQUESNovoCH_GRUPO3.Value := dtMdlsaoLuiz11.FDCHEQUESVelhoGRUPO3.Value;
                dtMdlsaoLuiz11.FDCHEQUESNovoCH_NUMERO.Value := dtMdlsaoLuiz11.FDCHEQUESVelhoNUMERO.Value;
                dtMdlsaoLuiz11.FDCHEQUESNovoCH_UNIDADE.Value := dtMdlsaoLuiz11.FDCHEQUESVelhoUNIDADE.Value;
                dtMdlsaoLuiz11.FDCHEQUESNovoCH_CPF_CNPJ.Value := dtMdlsaoLuiz11.FDCHEQUESVelhoCPF_CNPJ.Value;

                dtMdlsaoLuiz11.FDClienteCheque.Active:= False;
                dtMdlsaoLuiz11.FDClienteCheque.ParamByName('cnpj_cpf').Value:= dtMdlsaoLuiz11.FDChequesNovoCH_CPF_CNPJ.Value;
                dtMdlsaoLuiz11.FDClienteCheque.Active:= True;
                dtMdlsaoLuiz11.FDChequesNovoCH_COD_CLIENTE.Value:= dtMdlsaoLuiz11.FDClienteChequeCL_NUMERO.Value;

                dtMdlsaoLuiz11.FDCHEQUESNovoCH_EMISSAO.Value := dtMdlsaoLuiz11.FDCHEQUESVelhoEMISSAO.Value;
                dtMdlsaoLuiz11.FDCHEQUESNovoCH_VENCIMENTO.Value := dtMdlsaoLuiz11.FDCHEQUESVelhoVENCIMENTO.Value;
                dtMdlsaoLuiz11.FDCHEQUESNovoCH_VALOR.Value := dtMdlsaoLuiz11.FDCHEQUESVelhoVALOR.Value;
                dtMdlsaoLuiz11.FDCHEQUESNovoCH_OBS.Value := dtMdlsaoLuiz11.FDCHEQUESVelhoOBS.Value;
                dtMdlsaoLuiz11.FDCHEQUESNovoCH_SENHA.Value := dtMdlsaoLuiz11.FDCHEQUESVelhoSENHA.Value;
                dtMdlsaoLuiz11.FDCHEQUESNovoCH_DATA_MOV.Value := dtMdlsaoLuiz11.FDCHEQUESVelhoDATA_MOV.Value;
                dtMdlsaoLuiz11.FDCHEQUESNovoCH_SEQ_MOV.Value := dtMdlsaoLuiz11.FDCHEQUESVelhoSEQ_MOV.Value;
                dtMdlsaoLuiz11.FDCHEQUESNovo.Post;
                dtMdlsaoLuiz11.FB_DataBaseSaoLuiz11New.CommitRetaining;
                Grava_Chave_Reg('tabelas','cheques', 'OK', verifica_ini);
                dtMdlsaoLuiz11.FDCHEQUESVelho.Next;
                Application.ProcessMessages;
                LbParcial.Caption:= IntToStr(Parcial);
            end;
        end;
        dtMdlsaoLuiz11.FB_DataBaseSaoLuiz11New.CommitRetaining;
        Sleep(0);
        LblStatus11.Caption := 'Sincronização tabela de CHEQUES concluída.';
        Inc(cont);

        StringGrid1.Cells[1,4]:= inttostr(cont)+'. Cheques Ok!';
        Application.ProcessMessages;
        pbStatus11.Position := pbStatus11.Position + 1;
        WaitPanel.Visible := False;
    except
        on E : Exception do
        begin
            dtMdlsaoLuiz11.FB_DataBaseSaoLuiz11New.RollbackRetaining;
            application.MessageBox(pchar('Problemas durante a migração dos dados' +#13+#13+
            'Descrição do erro: '+#13+#13+E.Message+#13+#13+'Tentativa de sincronização cancelada'), 'AVISO', mb_OK + MB_ICONERROR);
            if dtMdlsaoLuiz11.FDCHEQUESNovo.State = dsInsert then
              dtMdlsaoLuiz11.FDCHEQUESNovo.Cancel;
        end;
    end;



o detalhe é a lentidão, em outras tabelas a importação é bem mais rápida inclusive em situações onde se acessa mais de 6 dataset´s.
Emanuel Gonçalves

Emanuel Gonçalves

Curtidas 0
POSTAR