Fórum Busca em ClientDataSet #331939

24/10/2006

0

Pessoal... tenho um clientdataset.. onde gravo nele informações temporárias.... normalmente 99 registros..
mais presciso efetuar uma busca nesse CDS onde o valor de um campo seja igual a true.... e todos q forem igual a true... deletar.....
alguem tem alguma idéia... estou no aguardo..obrigado


Thiago Coleti

Thiago Coleti

Responder

Posts

24/10/2006

Steve_narancic

utilize a propriedade filter do clientdataset, depois percorra os registros com while deletando os registros


Responder

Gostei + 0

24/10/2006

Thiago Coleti

na realidade...somente uma correção.. eu não vou deletar... mais sim atualizar os registros..apagando os dados de alguns campos...
mais me da um idéia de linha código por favor.. num tah saindo aki.rs
obrigado..


Responder

Gostei + 0

24/10/2006

Macario

Ola.

var
begin

  ClientDataSet1.Filter := ´NomedoCampo = ValorTRue´;
  ClientDataSet1.Filtered := true;
  ClientDataSet1.disablecontrols;
  ClientDataSet1.First;
  while not   ClientDataSet1.eof do
    begin
      ClientDataSet1.Edit;
      ClientDataSet1.FieldByName(´Campo´).AsString := NovoValor;
      ClientDataSet1.Post;
      ClientDataSet1.Next;
    end;
  ClientDataSet1.Enablecontrols;
end;




Espero que ajude. 8)


Responder

Gostei + 0

24/10/2006

Steve_narancic

Begin
  clientdataset.filter:= ´CAMPO = 10´;
  clientdataset.filtered:= true;
  clientdataset.first;
  while not clientdaset.eof do
  begin
    clientdaset.edit;
    clientdaset[´CAMPO_ALTERAR´]:= ´NOVO VALOR´
    clientdaset.post
    clientdaset.next;
  end;
end;



no codigo acima o clientdaset filtra todos os registro onde campo for 10 e percorro os registros do inicio ao fim alterando o campo CAMPO_ALTERAR para NOVO VALOR.


Responder

Gostei + 0

24/10/2006

Macario

Ola.

So completando o que [b:d4e77807b8]eu[/b:d4e77807b8] e o colega [b:d4e77807b8]steve_narancic[/b:d4e77807b8] postamos.

Esquecemos de indicar apos o while voce tem que retirar o filtro aplicado ao ClientDataSet.


  ClientDataSet1.Filtered := false;
  ClientDataSet1.Filter := ´´;




:idea:


Responder

Gostei + 0

25/10/2006

Thiago Coleti

Olá Pessoal... obrigado pela ajuda....
a idéia de vc é bem do tipo q presciso.. mais tah ocorrendo um probleminha.... tipo.. eu tenho 5 registro com campo = true..
registro.. 1, 2, 3, 4, 5..
mando apagar... ele apaga os registros impares e pula os pares... não faço idéia pq..

posto aki o código do delete pra vcs analisarem... mais acho q fiz td certo.
         CDSChequesAv.Filter := ´teste = true´;
         CDSChequesAv.Filtered := True;
         CDSChequesAv.DisableControls;
         CDSChequesAv.First;
         while not CDSChequesAv.Eof do begin
            CDSChequesAv.Edit;
            CDSChequesAvfavorecido.Value := ´´;
            CDSChequesAvseq.Value := CDSChequesAvseq.Value;
            CDSChequesAvhistorico.Value := ´´;
            CDSChequesAvdfclct.Value := 0;
            CDSChequesAvvalor.Value := 0;
            CDSChequesAvdtvcto.Value := Date;
            CDSChequesAvemissao.Value := Date;
            CDSChequesAvuso.Value := False;
            CDSChequesAvteste.Value := False;
            CDSChequesAv.Post;
            CDSChequesAv.Next;
         end;
         CDSChequesAv.EnableControls;
         CDSChequesAv.Filtered := False;
         CDSChequesAv.Filter := ´´;

se tiverem alguma idéia..estou no aguardo..obrigado..


Responder

Gostei + 0

25/10/2006

Steve_narancic

Remova a linha CDSChequesAv.Next;


Responder

Gostei + 0

26/10/2006

Thiago Coleti

valew kra... funcionou direitinho...


Responder

Gostei + 0

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

Aceitar