Busca em ClientDataSet
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
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
Curtidas 0
Respostas
Steve_narancic
24/10/2006
utilize a propriedade filter do clientdataset, depois percorra os registros com while deletando os registros
GOSTEI 0
Thiago Coleti
24/10/2006
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..
mais me da um idéia de linha código por favor.. num tah saindo aki.rs
obrigado..
GOSTEI 0
Macario
24/10/2006
Ola.
Espero que ajude. 8)
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)
GOSTEI 0
Steve_narancic
24/10/2006
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.
GOSTEI 0
Macario
24/10/2006
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.
:idea:
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:
GOSTEI 0
Thiago Coleti
24/10/2006
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.
se tiverem alguma idéia..estou no aguardo..obrigado..
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..
GOSTEI 0
Steve_narancic
24/10/2006
Remova a linha CDSChequesAv.Next;
GOSTEI 0
Thiago Coleti
24/10/2006
valew kra... funcionou direitinho...
GOSTEI 0