Validação na key commit;

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
SergioLBJr
Rank: Oracle Guru
Rank: Oracle Guru
Mensagens: 448
Registrado em: Ter, 16 Jun 2009 3:07 pm
Localização: Parobé - RS
Sérgio Luiz Bonemberger Junior
Programador Junior
Parobé RS

[]s

Bom dia a todos.

Estou tendo um problema ao validar a minha KEY-COMMIT, e procuro sugestões de como preceder.

O que preciso é que ao usuario commitar o forms ele valide se o usuario já navegou para um bloco que não aparece na tela. Se ele já navegou procede com as demais validações que possuo na trigger, do contrario a trigger deve abrir o bloco na tela e permitir ao usuario fazer as devidas alterações, para que na proxima vez que ele comitar tudo funcione.

A principio estou tentando algo tipo

Selecionar tudo

   IF v_teste = 'S' then
       ......
   ELSE
      go_block('BLOCO_ESCONDIDO');
      execute_query; 
   END IF;
onde v_teste é uma variavel que uso para testar se o usuario alterou algo no bloco que não aparece. No entanto isto não funciona, pois mesmo que v_teste seja diferente de 'S' ele procede com a key-commit e insere um registro no bloco que o usuario estava alterando (no caso, o que não estava escondido);

Pensei em usar um while, para refazer todo o processo caso v_teste fosse diferente de 'S' mas, provavelmente entrara em um loop infinito.

A pergunta que fica é, como travar a execução da KEY-COMMIT , para abrir o bloco ,o usuario poder fazer as alterações nescessárias e salvar novamente. já adianto que gerar exceção não é uma opção, pois elas estão sendo tratadas, e caso alguma dispare dispara um CLEAR_FORM(NO_VALIDATE);
SergioLBJr
Rank: Oracle Guru
Rank: Oracle Guru
Mensagens: 448
Registrado em: Ter, 16 Jun 2009 3:07 pm
Localização: Parobé - RS
Sérgio Luiz Bonemberger Junior
Programador Junior
Parobé RS

[]s

Problema resolvido.

Alterei o commit, colocando uma validação para não commitar em casos específicos. Não é o desejável, mas por hora foi a solução que encontrei.

Se alguém sabe outra forma de fazer por favor poste
Responder
  • Informação
  • Quem está online

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