Fórum Problema ao excluir usando loop.. #295905
17/09/2005
0
BD_CONT_REC.First; while not BD_CONT_REC.Eof do BD_CONT_REC.Delete; Close;
O problema é que a função esta excluindo somente um registro..a tabela tem vários registros que são excluidos de uma só vez, e depois ele sai do formulário automáticamente...tem como executar a função toda primeiro para depois sair do form ?...t+ vlw..
Gigatel
Curtir tópico
+ 0Posts
17/09/2005
Rjun
DELETE FROM Tabela
Gostei + 0
17/09/2005
Martins
DELETE FROM Tabela
vc pode fazer assim, mas se vc quiser utilizar a sua função, vc vai fazer algumas alterações para que ela fique assim:
begin while not Ds1.Eof do begin Ds1.Delete; ShowMessage(´Nome: ´+Ds1Nome.AsString); //Só para checar!!! end; Close; //Só vai fechar o form depois q excluí todos os reg Ok! end;
Boa sorte e bom desenvolvimento!!!
Gostei + 0
17/09/2005
Gigatel
Gostei + 0
17/09/2005
Gameiro
begin Ds1.first; while not Ds1.Eof do begin Ds1.Delete; ShowMessage(´Nome: ´+Ds1Nome.AsString); //Só para checar!!! Ds1.next; end; Close; //Só vai fechar o form depois q excluí todos os reg Ok! end;
uso o first e o next
ate mais. :)
Gostei + 0
17/09/2005
Userba
BD_CONT_REC.First; while not BD_CONT_REC.Eof do BD_CONT_REC.Delete; Close;
Olá!
Está faltando um ´Next´ no seu código :)
... BD_CONT_REC.First; while not BD_CONT_REC.Eof do begin BD_CONT_REC.Delete; BD_CONT_REC.Next; end; close; ...
Gostei + 0
17/09/2005
Gigatel
while not BD_CONT_REC.Eof do begin BD_CONT_REC.Delete; end; Close;
Valw..o apoio de todos..t+
Gostei + 0
17/09/2005
Marco Salles
Não é nenhuma surpesa que é este codigo funcione
Não porque o propio delete faz as vias do Next
Gostei + 0
18/09/2005
Martins
Não é nenhuma surpesa que é este codigo funcione
Não porque o propio delete faz as vias do Next[/quote:a14007b580]
Verdade [b:a14007b580]Marcos[/b:a14007b580], por isso não coloquei o [b:a14007b580]Next[/b:a14007b580], vamos ter mais atenção pessoal e dar mais enfase no estudo das estruturas dos blocos de comando do Delphi.
Boa Sorte a todos!!!
Martins
Gostei + 0
18/09/2005
Rjun
Gostei + 0
19/09/2005
Martins
Com certeza [b:3041189d62]Rjun[/b:3041189d62], mas isso seria correto desde que ele não quisesse sair do form após a exclusões, veja novamente o código dele:
BD_CONT_REC.First; //Vai para o ínicio da tabela. while not BD_CONT_REC.Eof do //enquanto não chegar ao fim da tab. BD_CONT_REC.Delete; //delete os registros, não precisa do next Ok! Close; // Feche o formulário.
Pois bem, ele fez quase tudo certo, e estaria tudo certo de ele não estivesse colocado aquele [b:3041189d62]Close[/b:3041189d62], pq para todos os efeitos ele vai ser lido após o [b:3041189d62]Delete[/b:3041189d62], e isso fecha o form e não permite q a rotina dele seja efetuada com sucesso, então faz-se necessário a utilização do bloco [b:3041189d62]begin... end;[/b:3041189d62]. Pq enquanto a condição for verdadeira, será executado o q estiver entre esse bloco, somente quando for falso, será executado o q estiver fora dele, blz!!
Espero ter ajudado.
Boa sorte a todos!!
Martins
Gostei + 0
19/09/2005
Rjun
BD_CONT_REC.First; //Vai para o ínicio da tabela. while not BD_CONT_REC.Eof do //enquanto não chegar ao fim da tab. BD_CONT_REC.Delete; //delete os registros, não precisa do next Ok! Close; // Feche o formulário.
Gostei + 0
19/09/2005
Adriano Santos
BD_CONT_REC.First; //Vai para o ínicio da tabela. while not BD_CONT_REC.Eof do //enquanto não chegar ao fim da tab. BD_CONT_REC.Delete; //delete os registros, não precisa do next Ok! Close; // Feche o formulário.
[b:67b99e1a0a]Martins[/b:67b99e1a0a], o [b:67b99e1a0a]Rjun[/b:67b99e1a0a] está correto. O Algoritimo será executado até terminar o while, depois ele sairá e executará o Close. Faça o teste. É batata.
Gostei + 0
19/09/2005
Gigatel
BD_CONT_REC.First; //Vai para o ínicio da tabela. while not BD_CONT_REC.Eof do //enquanto não chegar ao fim da tab. BD_CONT_REC.Delete; //delete os registros, não precisa do next Ok! Close; // Feche o formulário.
[b:bbf06d4943]Martins[/b:bbf06d4943], o [b:bbf06d4943]Rjun[/b:bbf06d4943] está correto. O Algoritimo será executado até terminar o while, depois ele sairá e executará o Close. Faça o teste. É batata.[/quote:bbf06d4943]
Aí galera sem querer botar lenha na fogueira, mas temos que práticos ..por isso que falei POR INCRIVÉL que paressa eu tbm acha que funcionava assim tbm..más na prática o que funcionou foi mesmo este codigo outro acima não dá certo...flw...
while not BD_CONT_REC.Eof do begin BD_CONT_REC.Delete; end; Close; end;
Más dúvidadas estão aqui para tentar ser resolvidas..t+...
Gostei + 0
19/09/2005
Adriano Santos
while not BD_CONT_REC.Eof do begin BD_CONT_REC.Delete; end; Close; end;
Cara, que loko...não tinha que dar erro.
Gostei + 0
19/09/2005
Gigatel
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)