[firebase-br] SUSPEND FOR SELECT Exemplos?

Mário Reis mariodosreyx em gmail.com
Dom Set 7 14:07:55 -03 2008


Olá Amigos,

P/cada linha que verifica as condições da
Selecção Crio uma Linha no ficheiro de Cobranças
a Débto do Sócio ou Utente(Cliente), assim:

For Select * From Contratos
  where Dt_Prox_PRESTACAO Between Dt_P_Ini AND Dt_P_Fim
  INTO :WVARS.................
 Do 
  Begin

   Executa Calculos_com_as Vars
   /* E, depois Carrega em Cobrancas */
   Insert Into Cobrancas(Campos....) Values(Var_resultantes__do_Calculo...)
   
   /* "O que e como fazer em caso de erro numa das linhas ??? "  
   /* If Not Error  then */
    UPDATE CONTRATOS SET CAMPOS...= VALORES
   /* ELSE         */
   /* ESCREVE_NO LOG_DE_ERROS   */

  End


A pergunta é onde devo colocar o "SUSPEND" 
Do que li não neste caso não seria obrigatória
a utilização do SUSPEND já que o seu resultado
não é para ser retornado ao Utilizador.

Estarei certo ou terei percebido mal?

De qualquer forma algém sabe onde poderei conseguir um
exemplo do género? 

Depois tenho mais uma qestão.
Supunhamos que o INSERT em cobranças corre mal. 
Nesse caso o Firebird desfaz toda a transacção,
o mesmo será dizer que ninguém será debitado
até se descobrir o motivo do erro.
Até aqui tudo bem mas, como faço para notificar o
Cliente do Erro? 

É esta parte que ainda não percebi, i.e., como 
faço para notificar o usuário em cada comando de
SQL falhado, já que, tenho de fazer trap ao erro
no fim antes do ultimo "END", e, sendo assim, não
tenho como dizer se o Erro aconteceu no meu 1.º 
"For Select..." ou se no meu INSERT ou UPDATE.

Com certeza que haverá uma forma de o fazer, até porque,
em caso de Erro sempre teremos de assinalar que o registo XPTO
não foi "aplicado" Ou estarei a ver mal o problema?


Obrigado







Mais detalhes sobre a lista de discussão lista