DICA>Manipular Mensagens

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
Avatar do usuário
Toad
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 253
Registrado em: Sex, 18 Nov 2005 2:14 pm
Localização: Seattle, WA
Contato:
Matheus Gonçalves
matheus.dev
twitter.com/developer__c

Alguns operadores dos meus programas reclamaram que as mensagens apareciam escondidas demais. Toda vez que alguém ligava para perguntar sobre o funcionamento de alguma processo, ao tentar descobrir o erro, penava para fazer o operador ver o mesmo.
Pensando nisso, fiz o seguinte: Criei um alert chamado Info e uma procedure assim:

Selecionar tudo

PROCEDURE INFO(P_MENSAGEM IN VARCHAR2
                  ,P_IS_ERRO  IN BOOLEAN default false) IS
v_number number;
BEGIN
  set_alert_property('INFO'     ,alert_message_text,p_mensagem);

  v_number := show_alert('INFO');
  if v_number = alert_button1 then
    if p_is_erro then
      raise form_trigger_failure;
    end if;
  end if;
END;
Criei então na trigger ON-ERROR:

Selecionar tudo

DECLARE
  TIPO_ERRO   VARCHAR2(03) := ERROR_TYPE;
  CODIGO_ERRO NUMBER       := ERROR_CODE;
  errtxt VARCHAR2(80)      := ERROR_TEXT;

BEGIN
 
  
  IF (TIPO_ERRO = 'FRM') AND (CODIGO_ERRO = 40401) THEN
      --Nenhuma alteração a ser feita
      BELL;
     INFO('Nenhuma alteração a ser Gravada...', false);
  
  else
     IF (TIPO_ERRO = 'FRM') AND (CODIGO_ERRO = 40200) THEN
        --Campo está protegido
        BELL;
        INFO('Campo está protegido contra edição...', false);
     else   
        --Erro inesperado...
        BELL;
        INFO('Erro: '||TIPO_ERRO||'-'||TO_CHAR(CODIGO_ERRO)||': '||errtxt, false);
     end if;   
  end if;

END;

E na Trigger ON-MESSAGE:

Selecionar tudo


DECLARE
  TIPO_MENSAGEM   VARCHAR2(03) := MESSAGE_TYPE;
  CODIGO_MENSAGEM NUMBER       := MESSAGE_CODE;
  MESSTXT VARCHAR2(80)         := MESSAGE_TEXT;
BEGIN  
  
  IF (TIPO_MENSAGEM = 'FRM') AND (CODIGO_MENSAGEM = 40400) THEN
      --Registro aplicado e salvo
      BELL;
     info('Registro Salvo com Sucesso!!', false);

  ELSE
     --Mensagem inesperada...
      BELL;
     info('Mensagem: '||TIPO_MENSAGEM||'-'||TO_CHAR(CODIGO_MENSAGEM)||': '||MESSTXT, false);

  end if;

END;
Não sei se tinha algo no Fórum nesse sentido. Procurei e não achei.
Alguém tem mais idéias nesse sentido!?

Abraços! :D
marcelo9i
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 20
Registrado em: Ter, 25 Out 2005 3:10 pm
Localização: RJ
Marcello Rodrigo

Uma coisa interessante seria não colocar IFs validando todos os códigos de erros e sim criar uma tabela com os códigos e suas traduções e tratar no ON_ERROR / ON MESSAGE a busca dessas traduções.
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 9 visitantes