varrer tabela ateh o ultimo registro

Delphi

15/07/2004

eu fiz uma rotina pra varrer a tabela assim

tabela.open;
while not tabela.eof do 
begin
  if tabela[´campo´] = valorx then tabela.delete;
  tabela.next;
end;


o problema eh que se o registro for o último ele nao vai passar por essa rotina, como resolver?


Anderson_blumenau

Anderson_blumenau

Curtidas 0

Respostas

Lbcosta

Lbcosta

15/07/2004

Nao use tabela use query é bem + rapido

delete from [b:69eb8a80d1]tabela[/b:69eb8a80d1] where [b:69eb8a80d1]campo [/b:69eb8a80d1]= [b:69eb8a80d1]valorx[/b:69eb8a80d1]


GOSTEI 0
Anderson_blumenau

Anderson_blumenau

15/07/2004

valeu, mas se eu nao quiser usar sql, tem outro jeito?


GOSTEI 0
Reginaldo174

Reginaldo174

15/07/2004

acesso rápido;
não precisa usar SQL mas é bom usar Query. Dessa forma será espantosamente mais rápido, veja

var
conta : integer;
begin
conta := 0 ;

while conta = 0 do
begin
if query1.loacate(´nomedocampo´, valorx,[])then
begin
query1.delete;
end
else
conta := 1;
end;


Desta forma vc vai direto no valor que deseja apagar. Sua rotina estará otimizada. :wink:


GOSTEI 0
Vinicius2k

Vinicius2k

15/07/2004

Anderson,

Na verdade a rotina vai sempre saltar um registro que deveria ser deletado se estiverem sequenciados, a não ser que :
tabela.open;
while not tabela.eof do 
begin
  if tabela[´campo´] = valorx then tabela.delete
    else tabela.next;
end;


Espero ter ajudado...
T+


GOSTEI 0
POSTAR