Excluir registros em um filtro no ClientDataSet

Delphi

17/07/2012

Pessoal gostaria da ajuda de vocês.

Problema: Preciso excluir os registros em um ClientDataSet que forem filtrados em uma determinada condição. Veja o exemplo abaixo.

ClientDataSet1.Filtered := False;
ClientDataSet1.Filter:= IDT_MUNICIPIO = 1;
ClientDataSet1.Filtered := True;



No caso acima devo excluir todos os registros que retornarem na condição.

A única forma que encontrei para fazer isso e varrendo todos os registros que retornaram do filtro e executando o método Delete. Veja abaixo.

ClientDataSet1.Filtered := False;
ClientDataSet1.Filter:= IDT_MUNICIPIO = 1;
ClientDataSet1.Filtered := True;
ClientDataSet1.First;

while (not(ClientDataSet1.Eof)) do
  ClientDataSet1.Delete;

ClientDataSet1.Post;


Gostaria de saber se alguém utiliza alguma forma diferente para fazer essa exclusão.

Obrigado a todos.
Johni Marangon

Johni Marangon

Curtidas 0

Respostas

William

William

17/07/2012

Colega para excluir no clientdataset usando antes um filtro tem q ser assim mesmo, percorrendo todos os registros.

Apesar de alguns profissionais afirmarem que lugar de SQL é no servidor e não no cliente, vc poderia usar uma instrução SQl DELETE FROM TABELA WHERE <CONDIÇÃO>, desse modo a própria instrução iria se encarregar de filtrar e deletar os registros.
GOSTEI 0
POSTAR