While not ClientDataSet.Eof não está funcionando corretamente. Me ajudem

Delphi

02/01/2015

Boa noite pessoal, estou aqui criando uma rotina em que eu adiciono vários registros no clientdataset. Daí eu adicionei um checkbox na DBGrid. Vamos ao problema, suponhamos que eu tenha 5 registros na CDS e desses 5 eu marquei 3 na DBGrid. Tenho um botão para excluir os itens selecionados com o seguinte código:
procedure TfrmEnvSMS.butExcluirClick(Sender: TObject);
begin
  with dmDados do
  begin
    CDSNumTel.First;
    while not CDSNumTel.Eof do
    begin
      if CDSNumTelSELL.Value = 1 then
        CDSNumTel.Delete;

      CDSNumTel.Next;
    end;
  end;
end;

Só que acontece o seguinte: Ele passa pelo primeiro registro e deleta, depois ele passa pelo terceiro registro(exemplo), com isso ele não obedece a ordem e sempre fica sobrando 1 ou 2 registros sem excluir.

Alguém me ajuda?
Uso Delphi XE
Marlon Minotti

Marlon Minotti

Curtidas 0

Respostas

Renato Rubinho

Renato Rubinho

02/01/2015

Buenas,

Se deletar, não precisa dar o next porque ele já vai para o próximo registro.
Coloque um else e só passe no next quando não for para deletar.

procedure TfrmEnvSMS.butExcluirClick(Sender: TObject);
begin
  with dmDados do
  begin
    CDSNumTel.First;
    while not CDSNumTel.Eof do
    begin
      if CDSNumTelSELL.Value = 1 then
        CDSNumTel.Delete
      else
        CDSNumTel.Next;
    end;
  end;
end;


Abraççç,
rrubinho
GOSTEI 0
Marlon Minotti

Marlon Minotti

02/01/2015

Isso ai rrubinho, eu já havia achado a solução, mas mesmo assim muito obrigado. :D
GOSTEI 0
POSTAR