Olá Fernando
 
Peguei o código abaixo no site da active Delphi dar uma olhada
 
var
  c: integer;
begin
  //abre a tabela Destino
  ClientDataSet1.Open;
  //abre a tabela Origem
  ADOQuery1.Open;
  //enquanto não chegar ao fim da origem
  while not ADOQuery1.EOF do
  begin
    //abre um novo registro no destino
    ClientDataSet1.Append;
    //para cada campo da tabela destino
    for c := 0 to ClientDataSet1.FieldCount-1 do
      //preenche cada campo com seu valor respectivo da origem
      ClientDataSet1.Fields[c].Value := ClientDataSet1.Fields[c].Value;
    //grava o registro na tabela destino (em memória)
    ClientDataSet1.Post;
    //confirma as alterações no banco de dados 
    //(desnecessário se não for um ClientDataSet)
    ClientDataSet1.ApplyUpdates(0);
    //vai para o próximo registro da origem
    ADOQuery1.Next;
  end;
  //fecha a origem
  ADOQuery1.Close;
  //fecha o destino
  ClientDataSet1.Close;
end;
 
o melhor é usar o ClientDataSet
 
qualquer dúvida é só falar


Rubens Antunes
Autor do Livro - Delphi Faça Uma Aplicação Comercial
Blog http://rubensantunes.zip.net/

--- Em qui, 25/6/09, Leandro <mutu...@yahoo.com.br> escreveu:


De: Leandro <mutu...@yahoo.com.br>
Assunto: Re: [delphi-br] Problema de Lentidão (SQL)
Para: delphi-br@yahoogrupos.com.br
Data: Quinta-feira, 25 de Junho de 2009, 22:52








se vc tem grids mostrando os registros deixa mais lento..
acredito q o ProcessMessages informa ao processador a fazer outras tarefas q
estao na fila ou processar algo do seu sistema.. acho q isso faz perder
tempo tbm.. por n usa um ProgressBar1. refresh?

2009/6/25 Fernando Pires de Souza Filho <nando_acesso@ hotmail.com>

>
>
>
> Opa,
>
> Sou iniciante em delphi, to com o seguinte problema:
>
> Tenho que importar dados de uma tabela para a outra, seus campos sao
> iguais.
> uso a seguinte logica:
>
> tenho duas querys no form, uma qry_fonte(de onde vou pegar os dados da
> tabela que quero importar), e colocar na outra tabela que criei, na
> qry_Destino.
>
> de primeiro, faco um select * pra pegar tds os campos da tabela fonte, e
> depois, faco um insert campo a campo na tabela de destino, ex:
>
> ------------ --------- --------- --------- --------- --------- -
> QRY_Fonte.sql. Clear;
> QRY_Fonte.SQL. Add('Select * From [TabelaFonte] ');
> QRY_Fonte.Open;
> while Not QRY_Fonte.Eof do
> begin
> with QRY_Destino do
> begin
>
> sql.Clear;
> Sql.Add('Insert Into [TabelaDestino] (');
> SQL.Add('campo1, campo2, campo3');
> SQL.Add(') Values (');
> SQL.Add(QuotedStr( QRY_Fonte. FieldByName( 'Campo1') .AsString) +',');
> SQL.Add(QuotedStr( QRY_Fonte. FieldByName( 'Campo2') .AsString) +',');
> SQL.Add(QuotedStr( QRY_Fonte. FieldByName( 'Campo3). AsString) +','); etc....
> ExecSql;
> ProgressBar1. Position := ProgressBar1. Position + 1;
> Application. ProcessMessages;
> QRY_Fonte.Next;
>
> end;
> end;
> qry_Fonte.close;
>
> ------------ --------- --------- --------- ---------
>
> Funciona, mais ta MUIITOO lento!!!
> pra importar 150 reg de uma tabela pra outra demora um pouco mais de 1
> Minuto.
> e tenho tabelas aqui com mais de 8.000.
>
> oq pode ta errado, e se alguem conhece uma forma melhor e mais rapida de
> manipular esses dados?
>
> Atenciosamente
> Fernando Pires
>
> ____________ _________ _________ _________ _________ _________ _
> Conheça os novos produtos Windows Live! Clique aqui.
> http://www.windowsl ive.com.br
>
> [As partes desta mensagem que não continham texto foram removidas]
>
> 
>

-- 
Leandro, MuTukA

[As partes desta mensagem que não continham texto foram removidas]

















      
____________________________________________________________________________________
Veja quais são os assuntos do momento no Yahoo! +Buscados
http://br.maisbuscados.yahoo.com

[As partes desta mensagem que não continham texto foram removidas]

Responder a