Como melhorar este código de exportação de dados?

Delphi

05/03/2004

Olá pessoal,

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

Ilanocf

Curtidas 0

Respostas

Lucas Silva

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, ....
 query.sql.add(´select.....´)
 Open;
 if query.IsEmpty then
  query.Insert
 else
   query.Edit;


é uma solução...


GOSTEI 0
Ilanocf

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
POSTAR