ClientDataSet exportando xml

Delphi

31/10/2006

Tenho ClientDataSet onde faço alguns filtros do tipo(Filter = ´CAMPO1 = ´A´´) mas na hora de exporta ele pra XML usando savetofile, ele ignora os filtros trazendo todos os registros do ClientDataSet no XML.
Alguem sabe como faço para exportar somente os dados Filtrados do ClientDataSet.


Danilodcf

Danilodcf

Curtidas 0

Respostas

Marco Salles

Marco Salles

31/10/2006

use um cds auxiliar , cujo FileName seje o mesmo do Cds que voce quer exportar

//Filtro cds.Filter:=´CAMPO1 =´+ QuotedStr(´A´); cds.Filtered:=True; //Abrir o CdsAux e ´Limpar´ cdsAux.open; cdsAux.EmptyDataSet; //Carregar valores do Filtro While not cds.Eof do begin cds1.Append; cdsAux.FieldByName(´cAMPO´).asstring:= cds.FieldByName(´cAMPO´).asstring; //Outrso campos...etc cdsAux.Post; cds.Next; end; //Slavar no Arquivo Xml cdsAux.SaveToFile(´c:Caminho.xml´);



GOSTEI 0
Marco Salles

Marco Salles

31/10/2006

ontem quando eu postei , eu percebi um equívoco:

use um cds auxiliar , [b:bd34ab461c]cujo FileName seje o mesmo [/b:bd34ab461c]do Cds que voce quer exportar


o problema é que a istrução cdsAux.EmptyDataSet; limpara o arquivo.. e voce perdera todos os dados...

Então sugiro a utilização de um arq Temporário

procedure TForm1.Button1Click(Sender: TObject); begin cds.SaveToFile(´CaminhoDo ArquivoTemporario.xml´); cds.filtered:=False; cds.Filter:=´SeuCampo =´+QuotedStr(edit1.Text); cds.Filtered:=True; cdsAux.FileName:=´´CaminhoDo ArquivoTemporario.xml´; cdsAux.Open; cdsAux.EmptyDataSet; cds.first; While not cds.Eof do begin cdsAux.Append; cdsAux.FieldByName(´Campo1´).asstring:=cds.FieldByName(´Campo1´).asstring; cdsAux.FieldByName(´Campo2´).asstring:=cds.FieldByName(´Campo2´).asstring; //demais campos... cdsAux.Post; cds.Next; end; cdsAux.SaveToFile(´CaminhoDoArquivoTemporario.xml´); end;


pelos testes preliminares que eu fiz , este algritmo funciona... So não deve funcionar para campos do tipo Incrementados.. Pois esses campos não saõ ReadOnly.. O que significa que eles não são passiveis de atribuiçoes...


GOSTEI 0
POSTAR