Fórum Atualizar Tabela !!!! #261748

13/12/2004

0

Como posso pegar todos os dados de uma tabela A para uma outra Tabela B de uma so vez ...Tem como ? Lembrando q as duas tabelas tem os memos campos e atributos ....as tabelas sao em Paradox !!!!


Obrigado !!!!


Walter Faria

Walter Faria

Responder

Posts

13/12/2004

Gandalf.nho

Você pode usar o Database Desktop ou o Componente TBatchMove para fazer isso.


P. S. Da próxima vez, não exagere nos pontos de exclamação no título do seu tópico.


Responder

Gostei + 0

13/12/2004

Rômulo Barros

P. S. Da próxima vez, não exagere nos pontos de exclamação no título do seu tópico.


:lol: :lol: :lol: :lol: :lol:


Responder

Gostei + 0

19/01/2005

Walter Faria

Bom dia a todos do forum , ainda nao consegui resolver a minha questao . O problema q presciso fazer atualizacao desta tabela : Deixa eu explicar melhor :

Tenho tabela q se chama PECAS e uma outra q criei q esta no meu sistema ( PRODUTOS ). Esta TB PECAS o meu cliente pega do seu fornecedor toda a semana pq nela tem os precos atualizados. Entao seu utilizar da forma q postaram ( IDEIAS ) vai substituir tb os valores ta minha tabela PRODUTOS , como estoque e outras informaçoes , entao fiz um LOOP na tabela PECAS e fui fazendo uma atualizacao so dos campos q prescisavam, funcionou certinho so q o problema é q nesse LOOP eu tenho q verifica se o ITEM DA TB PECAS existe na TB PRODUTOS , caso exista so atualiza se nao eu insiro este novo ITEM.
Pra mim rodar esta operacao do LOOP demora +/- 2 horas. e nao é agradavel este tempo para o meu cliente ( Apesar de ter 29.000 registros na tabela PECAS )


codigo do LOOP
******
Var
Novo, Atualizado, Cont: Integer;
begin
try
FPrinc.Database1.StartTransaction;

Novo:= 0;
Atualizado:= 0;
Cont:= 0;

BtnLista.Enabled:= false;
BtnInicia.Enabled:= false;

QryKoga.First;
While not QryKoga.Eof do
begin
QryProduto.Close;
QryProduto.ParamByName(´Codigo´).AsString:= FloatToStr(QryKoga.fieldByName(´PRD_CodInt´).AsFloat);
QryProduto.ParamByName(´Custo´).AsFloat:= QryKoga.fieldByName(´PRD_Preco´).AsFloat;
QryProduto.ParamByName(´Anterior´).AsFloat:= QryKoga.fieldByName(´PRD_PrecoA´).AsFloat;
QryProduto.ParamByName(´Data´).AsDate:= Now;
QryProduto.ExecSQL;
Atualizado:= Atualizado + 1;
Cont:= Cont + 1;
if Cont = 1000 then
begin
FPrinc.Database1.Commit;
FPrinc.Database1.StartTransaction;
Cont:= 0;
end;
QryKoga.Next;
application.ProcessMessages;
end; /// fim do loop

FPrinc.Database1.StartTransaction;
FPrinc.Database1.Commit;

LblAtualizados.Caption:= ´Total de produtos atualizados : ´ + IntTostr(Atualizado);
BtnLista.Enabled:= true;
BtnInicia.Enabled:= true;
ShowMessage(´Base de dados foi atualiazado com êxito...´);
except
FPrinc.Database1.Rollback;
ShowMessage(´Erro na atualização...´);
end;
end;
*****


Bom se alguem tiver alguma sugestao fico muito grato mesmo !!!


Responder

Gostei + 0

19/01/2005

Walter Faria

Bom dia a todos do forum , ainda nao consegui resolver a minha questao . O problema q presciso fazer atualizacao desta tabela : Deixa eu explicar melhor :

Tenho tabela q se chama PECAS e uma outra q criei q esta no meu sistema ( PRODUTOS ). Esta TB PECAS o meu cliente pega do seu fornecedor toda a semana pq nela tem os precos atualizados. Entao seu utilizar da forma q postaram ( IDEIAS ) vai substituir tb os valores ta minha tabela PRODUTOS , como estoque e outras informaçoes , entao fiz um LOOP na tabela PECAS e fui fazendo uma atualizacao so dos campos q prescisavam, funcionou certinho so q o problema é q nesse LOOP eu tenho q verifica se o ITEM DA TB PECAS existe na TB PRODUTOS , caso exista so atualiza se nao eu insiro este novo ITEM.
Pra mim rodar esta operacao do LOOP demora +/- 2 horas. e nao é agradavel este tempo para o meu cliente ( Apesar de ter 29.000 registros na tabela PECAS )


codigo do LOOP
******
Var
Novo, Atualizado, Cont: Integer;
begin
try
FPrinc.Database1.StartTransaction;

Novo:= 0;
Atualizado:= 0;
Cont:= 0;

BtnLista.Enabled:= false;
BtnInicia.Enabled:= false;

QryKoga.First;
While not QryKoga.Eof do
begin
QryProduto.Close;
QryProduto.ParamByName(´Codigo´).AsString:= FloatToStr(QryKoga.fieldByName(´PRD_CodInt´).AsFloat);
QryProduto.ParamByName(´Custo´).AsFloat:= QryKoga.fieldByName(´PRD_Preco´).AsFloat;
QryProduto.ParamByName(´Anterior´).AsFloat:= QryKoga.fieldByName(´PRD_PrecoA´).AsFloat;
QryProduto.ParamByName(´Data´).AsDate:= Now;
QryProduto.ExecSQL;
Atualizado:= Atualizado + 1;
Cont:= Cont + 1;
if Cont = 1000 then
begin
FPrinc.Database1.Commit;
FPrinc.Database1.StartTransaction;
Cont:= 0;
end;
QryKoga.Next;
application.ProcessMessages;
end; /// fim do loop

FPrinc.Database1.StartTransaction;
FPrinc.Database1.Commit;

LblAtualizados.Caption:= ´Total de produtos atualizados : ´ + IntTostr(Atualizado);
BtnLista.Enabled:= true;
BtnInicia.Enabled:= true;
ShowMessage(´Base de dados foi atualiazado com êxito...´);
except
FPrinc.Database1.Rollback;
ShowMessage(´Erro na atualização...´);
end;
end;
*****


Bom se alguem tiver alguma sugestao fico muito grato mesmo !!!


Responder

Gostei + 0

19/01/2005

Emerson Nascimento

faça isso com instruções SQL. fica mais fácil.


Responder

Gostei + 0

19/01/2005

Walter Faria

Emersom , desde ja te agradeço pela ajuda, vc me poderia me dizer como eu psso fazer isto via instrucao SQL ?


Responder

Gostei + 0

19/01/2005

Emerson Nascimento

[b:9fe4495f83]atualização (faça esse primeiro):[/b:9fe4495f83]
[i:9fe4495f83]instrução para pegar somente os registros que devem ser atualizados.
altere as condições conforme a sua necessidade.[/i:9fe4495f83]
select Codigo
from PRODUTOS PRD, PECAS PC
where PRD.Codigo=PECAS.PRD_CodInt
    and (PRD.CustoPC.PRD_Preco or PRD.AnteriorPC.PRD_PrecoA)
[i:9fe4495f83]faça aquele loop de atualização baseando-se nos registros contidos na query acima[/i:9fe4495f83]


[b:9fe4495f83]inclusão:[/b:9fe4495f83]
[i:9fe4495f83]instrução para pegar somente os registros que não existem na tabela.
altere as condições conforme a sua necessidade.[/i:9fe4495f83]
insert into PRODUTOS (Codigo, Custo, Anterior)
    select PRD_CodInt, PRD_Preco, PRD_PrecoA
    from PECAS where PRD_CodInt not in (select Codigo from PRODUTOS)


Responder

Gostei + 0

20/01/2005

Walter Faria

Emerson, bom dia !!!
Quero te agradecer mesmo, foi muito bom os comandos q vc me passou , a minha atualizacao ficou inseguinificante ao tempo q estava tendo para atualizar a minha tabela...!!! valeu cara.

Obrigado.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar