GARANTIR DESCONTO

Fórum except on E:Exception do #330605

03/10/2006

0

Boa tarde!

Tem como colocar um loop dentro do except de um try tipo

    try
       SQLQ_TABLE.ExecSQL;
    except on E:Exception do
      begin
        while E.Message <> ´´ do
        begin
             xRECNO := IntToStr(StrToInt(xRECNO) + 1);
             SQLQ_TABLE.ExecSQL;
        end;
      end;
    end;


Na verdade eu quero que enquanto tiver uma excecao fique incrementando 1 na variavel xRECNO ate achar um numero que nao tenha sido usado e executar a query.

    try
       SQLQ_TABLE.ExecSQL;
    except on E:Exception do
      begin
          xRECNO := IntToStr(StrToInt(xRECNO) + 1);
          SQLQ_TABLE.ExecSQL;
      end;
    end;



Claudio_f

Claudio_f

Responder

Posts

03/10/2006

Massuda

Tente algo assim...
var
  Sucesso: Boolean;
...
  Sucesso := False;
  repeat
    // prepara para executar a SQL
    try 
      SQLQ_TABLE.ExecSQL; 
      Sucesso := True;
    except
      on E:Exception do 
        xRECNO := IntToStr(StrToInt(xRECNO) + 1); 
    end;
  until Sucesso;



Responder

Gostei + 0

03/10/2006

Marco Salles

se eu entendi direito , uma maneira de fazer isto

var
deucerto:boolean;
begin
deucert0:=false;
while not deucerto do
  begin
      try
        try
           SQLQ_TABLE.ExecSQL;
           deucerto:=True;
        except on E:Exception do
              xRECNO := IntToStr(StrToInt(xRECNO) + 1);
        finally
          if  deucerto then
            Break
        end;
   end;


uso o bloco finally para não haver estou de memória , pq presupoe-se que havera muitas exceções.

Mas o correto é , sabendo que alguma exceção , possa ocorrer , impedi-la

exceção , seria mesmo , quando algo ocorre-se fora do ´controle´

Um programa pode ter muitas blocos Try/finally , algumas instruçoes raises e pouquissimos blocos try/except


Responder

Gostei + 0

03/10/2006

Claudio_f

Valeu pessoal, deu certo com a dica do Massuda, e ele ficara em loop muito pouco, digamos umas duas ou tres vezes ateh achar um numero valido, e em muitos casos a excecao nem vai ocorrer.

Obrigado.


Responder

Gostei + 0

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

Aceitar