Fórum While not ClientDataSet.Eof não está funcionando corretamente. Me ajudem #506067

02/01/2015

0

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

Responder

Posts

05/01/2015

Renato Rubinho

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
Responder

Gostei + 0

05/01/2015

Marlon Minotti

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

Gostei + 0

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

Aceitar