Ir para conteúdo
Fórum Script Brasil
  • 0

Loop Infinito


Bruninn

Pergunta

Olá, fiz este código no evento AfterDelete de uma Table:

tbCaixa.Prior;

while not tbCaixa.Eof do

begin

total_anterior := tbCaixaTOTAL.AsFloat;

tbCaixa.Next;

tbCaixa.Edit;

tbCaixaTOTAL.AsFloat := total_anterior + tbCaixaCREDITO.AsFloat - tbCaixaDEBITO.AsFloat;

tbCaixa.Post;

end;

tbCaixa.Close;

tbCaixa.Open;

Porém, mesmo quando chega na última linha de registro da minha tabela ele continua realizando a ação dentro do while...alguém sabe porque e como arrumar isso? vlw

Editado por Bruninn
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Olá, fiz este código no evento AfterDelete de uma Table:

tbCaixa.Prior;

while not tbCaixa.Eof do

begin

total_anterior := tbCaixaTOTAL.AsFloat;

tbCaixa.Next;

tbCaixa.Edit;

tbCaixaTOTAL.AsFloat := total_anterior + tbCaixaCREDITO.AsFloat - tbCaixaDEBITO.AsFloat;

tbCaixa.Post;

end;

tbCaixa.Close;

tbCaixa.Open;

Porém, mesmo quando chega na última linha de registro da minha tabela ele continua realizando a ação dentro do while...alguém sabe porque e como arrumar isso? vlw

Por acaso o evento AfterPost não seria o da tabela tbCaixa, seria? Se for, este não é o lugar para você editar ela.

Pelo que parece ser a função do seu código, eu lhe diria que o procedimento normal seria algo como:

tbCaixa.First;  // <= Posiciona no primeiro registro da tabela (normalmente "filtrada")
while not tbCaixa.Eof do
begin
  total_anterior := tbCaixaTOTAL.AsFloat;
  tbCaixa.Edit;
  tbCaixaTOTAL.AsFloat := total_anterior + tbCaixaCREDITO.AsFloat - tbCaixaDEBITO.AsFloat;
  tbCaixa.Post;
  tbCaixa.Next;  // <= Avança para próximo registro
end;
tbCaixa.Close;
tbCaixa.Open;

Link para o comentário
Compartilhar em outros sites

  • 0

olá Micheus...vlw pela ajuda, mas na verdade o meu problema é o seguinte:

na minha tabela (tbCaixa) tem os seguintes campos: credito, debito e total.

O total = total + credito - debito que foram digitados. Porém, quando faço uma exclusão do registro, os valores do total ficam errados, como mostra na imagem.

Antes de excluir:

antesct5.th.jpg

Depois de excluir:

dpsii8.th.jpg

Gostaria que, quando eu excluisse um registro...pegasse o valor do total acima do excluido e somasse com o valor do credito/debito do abaixo...fazendo com que todos os registros que estavam depois do que foi deletado fiquem certos.

Com o código que passei anteriormente funcionaria certinho se não fosse pelo looping que não parou no último registro... desde já agradeço pela ajuda

Link para o comentário
Compartilhar em outros sites

  • 0

Consegui resolver! ficou assim:

tbCaixa.First;

total_anterior := tbCaixaTOTAL.AsFloat;

tbCaixa.Next;

while not tbCaixa.Eof do

begin

tbCaixa.Edit;

tbCaixaTOTAL.AsFloat := total_anterior + tbCaixaCREDITO.AsFloat - tbCaixaDEBITO.AsFloat;

tbCaixa.Post;

total_anterior := tbCaixaTOTAL.AsFloat;

tbCaixa.Next;

end;

tbCaixa.Close;

tbCaixa.Open;

vlw pela ajuda...se não fosse por você eu não teria conseguido! :D

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...