Fórum como copiar registros inteiros de uma tabela para outra. #242359

10/07/2004

0

Olá pessoal,

Eu gostaria de saber se existe em Delphi um comando para copiar registros inteiros de uma tabela para outra usando uma condição where ou coisa parecida.

Eu migrei de Clipper e lá tem uma instrução assim:

´append from tabela where campoa = 1´

Eu estou me virando como posso gravando campo a campo de uma tabela para a outra. Mas não é o certo. Eu preciso ganhar tempo.

nota: Já pesquisei outras perguntas e achei uma onde sugeriam copiar campo a campo. É só assim que dá para fazer ??

Obrigado,

Airton


Airton Santos

Airton Santos

Responder

Posts

10/07/2004

Marcelo_mileris

Se eu entendi direito sua dúvida, voce podera criar um teste para isso, assim:

Tabela1.Open;
Tabela2.Open;
Tabela1.First;
[b:1c59c3469d]while[/b:1c59c3469d] [b:1c59c3469d]not[/b:1c59c3469d] Tabela1.eof [b:1c59c3469d]do[/b:1c59c3469d]
[b:1c59c3469d]begin[/b:1c59c3469d]
Tabela2.Insert;
Tabela2.FieldByName(´Codigo´).AsInteger := Tabela1.FieldByName(´Codigo´).AsInteger;
Tabela2.FieldByName(´Nome´).AsString := Tabela2.FieldByName(´Nome´).AsString;
Tabela2.Post;
Tabela1.Next;
[b:1c59c3469d]end;[/b:1c59c3469d]

Poderá fazer isso com todos os campos, assim ele ira gravar todos os registros ate o ultimo.

Espero ter ajudado


Responder

Gostei + 0

10/07/2004

Airton Santos

Caro Marcelo,

Em primeiro lugar, obrigado pela resposta.

É que minha tabela tem 78 campos e eu teria que mover 1 a 1 para a outra tabela. Eu andei pesquisando na rede e encontrei algo interessante que talvez sirva tambem para voce em uma futura necessidade.

Aqui vai o que eu achei :

Jesus Cardenas has sent us these two procedures to copy a record from a table to another.
The advantage that they offer is that the structures of the tables don´t have to be same.


This procedure adds records from a source table to a destination table, making comparisons for the name of the fields. The destination table remain in edit state. This routine only works for the fields associated with the object TField. These you can include them using the object inspector.



procedure AppendFrom;
var
i : integer;
fldDest, fldSource : TField;
begin
with tblDest do begin
Append;
for i := 0 to FieldCount - 1 do
begin
fldDest := Fields[i];
if not (fldDest.ReadOnly or fldDest.Calculated) then
begin
fldSource := tblSource.FindField(fldDest.FieldName);
if assigned(fldSource) then
begin
fldDest.DataSet.Edit;
fldDest.AsString := fldSource.AsString
end
end
end;

end
end;

Aí eu não preciso copiar os 78 campos.

Vou experimentar essa rotina para ver se dá certo.

Mas, muito obrigado

Um abração,

Airton


Responder

Gostei + 0

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

Aceitar