Selecao DevMedia QUERO SER PRIME

Fórum ClientDataSet exportando xml #332416

31/10/2006

0

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

Responder

Posts

31/10/2006

Marco Salles

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´);



Responder

Gostei + 0

01/11/2006

Marco Salles

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...


Responder

Gostei + 0

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

Aceitar