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.
Alguem sabe como faço para exportar somente os dados Filtrados do ClientDataSet.
Danilodcf
Curtir tópico
+ 0
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:
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
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...
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
Clique aqui para fazer login e interagir na Comunidade :)