Como melhorar este código de exportação de dados?
Olá pessoal,
Tenho o seguinte código:
E gostaria de melhorá-lo para realizar a seguinte função. Por exemplo, vamos supor q eu já exportei estes dados, mas agora quero exportar outros dados, alguns irão se repetir ou talvez todos, porém existem novos dados q já foram adicionados na tabela principal, então quer dizer que além daqueles dados q já foram exportados tb haverão novas informações, como faço para que ao exportá-los novamente estes dados sejam apenas atualizados, ou seja, que não se repitam e não ocorra erro de Key Violation? Sei q poderia simplesmente mandar excluir todos os registros da segunda tabela sempre q for fazer uma nova exportação, mas, isso seria realmente prudente?
Grato,
Ilano.
Tenho o seguinte código:
procedure TFrmExportarDados.suiButton1Click(Sender: TObject);
Var
I: Integer;
begin
//Inicia a cópia:
DMDados.ConsExportar.First;
While Not DMDados.ConsExportar.Eof Do
Begin
DMDados.ArqTexto.Append;
For I:=0 To DMDados.ConsExportar.FieldCount - 1 Do
DMDados.ArqTexto.FieldByName(DMDados.ConsExportar.Fields[I].FieldName).Value:=DMDados.ConsExportar.Fields[I].Value;
DMDados.ArqTexto.Post;
DMDados.ConsExportar.Next;
End;
//Finaliza cópia:
RzPanel4.Caption:=FormatFloat(´000´, DMDados.ArqTexto.RecordCount) + ´ Registros´;
ShowMessage(´Exportação concluída.´);
suiButton2.Enabled:=True;
suiButton3.Enabled:=True;
end;
E gostaria de melhorá-lo para realizar a seguinte função. Por exemplo, vamos supor q eu já exportei estes dados, mas agora quero exportar outros dados, alguns irão se repetir ou talvez todos, porém existem novos dados q já foram adicionados na tabela principal, então quer dizer que além daqueles dados q já foram exportados tb haverão novas informações, como faço para que ao exportá-los novamente estes dados sejam apenas atualizados, ou seja, que não se repitam e não ocorra erro de Key Violation? Sei q poderia simplesmente mandar excluir todos os registros da segunda tabela sempre q for fazer uma nova exportação, mas, isso seria realmente prudente?
Grato,
Ilano.
Ilanocf
Curtidas 0
Respostas
Lucas Silva
05/03/2004
para não ocorrer violação de chave primária..... é só você fazer uma consulta antes....
se ele achar algum registro você edita a query, ....
é uma solução...
se ele achar algum registro você edita a query, ....
query.sql.add(´select.....´) Open; if query.IsEmpty then query.Insert else query.Edit;
é uma solução...
GOSTEI 0
Ilanocf
05/03/2004
Mas onde eu iria inserir estas linhas? Esta seria uma consulta paralela, já q tb estou exportando de uma consulta?
GOSTEI 0