miércoles, 29 de abril de 2015

Raise Form_Trigger_Failure en Forms Personalization

La  declaración Raise Form_Trigger_Failure  es el uso para congelar un  programa cada vez que sea necesario. Normalmente, en las formurlarios de Oracle utilizamos esta declaración para congelar el formulario cada vez que se produjo un error. Esta declaración mayormente es útil cuando se hace  validaciones de por medio.

Podemos usar esta declaración para manejar un error si durante una validación falla y no queremos que se continúe el proceso.  Siempre se recomienda usar junto a esta excepción un mensaje para informar al usuario que se produjo un erro ya que de lo contrario no se mostrara mensaje alguno.

Agregar en forms Personalization
Primero debemos  agregar un menú en la opción de  Herramientas. Para personalizar debemos ir a Ayuda >> Diagnóstico >> Código Personalizado >> Personalizar. Crearemos una primer personalización a nivel de Función y usaremos el Evento Trigger WHEN-VALIDATE-RECORD


Luego debemos indicar un bloque a validar porl ocual debemos seleccionar uno en Objeto Trigger. Si fuera necesario podemos indicar una Condición para nuestra personalización. Pues bien ahora que tenemos creado nuestra condición antes de crear la excepción  podemos crear en Acciones un mensaje para mostrar en caso valida el evento en verdadero.

Posterior al mensaje creamos otra acción  y debemos escoger el Tipo de Acción Incorporado. Como Tipo Incorporado podemos seleccionar RAISE_FORM_TRIGGER_FAILURE. Con esto el formulario se congela al validar.


2 comentarios:

  1. Hola, se puede personalizar en la pantalla de Factura Ap, el cual al momento de seleccionar un proveedor, si este cumple una condición dada, salga inmediatamente un mensaje de advertencia, el cual no deje seguir con el flujo de factura, hasta que se cambie de proveedor? Algo parecido a la fecha contable, el cual si no está en un período abierto, te sale el mensaje de error, hasta que se elija una fecha adecuada.

    Ejemplo:
    Proveedor No Apto
    Evento: WHEN-NEW-ITEM-INSTANCE
    Objeto: INV_SUM_FOLDER.VENDOR_NAME
    Condición:
    (SELECT CLL.ATTRIBUTE15
    FROM AP_SUPPLIERS AP,
    CLL_F257_AP_SUPPLIERS_EXT CLL
    WHERE 1=1
    AND AP.VENDOR_ID = CLL.VENDOR_ID
    AND AP.VENDOR_ID = :INV_SUM_FOLDER.VENDOR_ID
    AND CLL.ATTRIBUTE2 = '6'
    AND CLL.ATTRIBUTE15 = 'N') IS NOT NULL

    *Mensaje
    Error =:INV_SUM_FOLDER.VENDOR_NAME||' . El Proveedor no debe ser elegido'
    *Incorporado
    Raise_Form_Trigger_Failure

    Acá sí sale el mensaje pero no inmediatamente como se desea si no cuando se vuelve a seleccionar este campo pero si se puede seguir con el flujo. Para no dejar guardar, basta con usar "WHEN-VALIDATE-RECORD", pero se prefiere que antes de llegar ahí, solo seleccionando un proveedor no apto, se sepa que no se guardará la factura.

    ResponderEliminar
  2. Hola, amigo, en ese caso deberías usar la condicion WHEN-VALIDATE-ITEM, sin embargo eso solo podrías hacerlo en la libreria custom.pll, dejo aquí información del tema:

    http://profesionghh.blogspot.com/2014/07/libreria-custompll.html

    ResponderEliminar