Está en la página 1de 10

Apuntes Forms CÉSAR

TRIGGERS EN FORMS

• WHEN_BUTTON_PRESSED – actúa cuando un PUSH BUTTON es activado. A nivel de FORM, BLOCK, ITEM.

• WHEN_CHECKBOX_CHANGED – actúa siempre que el estado de un check box cambia, ya sea por medio del mouse o
por teclado. A nivel de FORM, BLOCK. ITEM.

• WHEN_CLEAR_BLOCK – actúa justo antes de que FORMS limpie los datos del bloque actual. NO actúa cuando FORMS
limpia los datos durante el evento CLEAR_FORM. A nivel de FORM, BLOCK.

• WHEN_CREATE_RECORD – actúa siempre que FORMS crea un nuevo registro. Por ejemplo, cuando el usuario presiona
la tecla INSERT, o navega al último registro de un bloque, FORMS dispara el trigger. A nivel de FORM, BLOCK.

• WHEN_CUSTOM_ITEM_EVENT – actúa siempre que un VBX envía un evento a FORMS. A nivel de FORM,
BLOCK,ITEM.

• WHEN_DATABASE_RECORD – actúa cuando FORMS califica un registro como insertado o actualizado. El trigger actúa
tan pronto como FORMS determine a través de la validación que el registro debe ser procesado en el siguiente COMMIT
como un registro insertado o actualizado. Esto ocurre generalmente sólo cuando el usuario modifica el primer ÍTEM de un
registro, y después el usuario intente navegar fuera del ITEM. A nivel de FORM, BLOCK.

• WHEN_FORM_NAVIGATE – actúa siempre que cualquier navegación en el formulario tenga lugar. A nivel de FORM.

• WHEN_IMAGE_ACTIVATED – actúa cuando un usuario hace doble click con el ratón en un IMAGE ITEM. A nivel de
FORM, BLOCK, ITEM.

• WHEN_IMAGE_PRESSED – actúa cuando un usuario utiliza el ratón haciendo click o doble click en un IMAGE ITEM. A
nivel de FORM, BLOCK, ITEM.

• WHEN_LIST_ACTIVATED – actúa cuando un usuario hace doble click en un elemento de la lista de un LIST ITEM que
está definido como T-LIST. A nivel de FORM, BLOCK, ITEM.

• WHEN_LIST_CHANGED – actúa cuando un usuario selecciona un elemento diferente de un LIST ITEM o deselecciona el
actual. Adicionalmente, si el trigger está asociado a un COMBO BOX, actuará cada vez que el usuario introduzca o modifique
algún elemento de la lista. A nivel de FORM, BLOCK, ITEM.

• WHEN_MOUSE_CLICK – actúa después de que el usuario haga click siempre que ocurra uno de los siguientes eventos:
• Si está a nivel de FORM, actúa cuando se hace click dentro de cualquier
CANVAS o ITEM del formulario.
• Si está a nivel de BLOCK, actúa cuando se hace click dentro de cualquier
ITEM de dicho bloque.
• Si está a nivel de ITEM, actúa cuando se hace click dentro de dicho ITEM..
Cualquier trigger que esté asociado con alguno de estos eventos actuará antes de que se dispare el WHEN_MOUSE_CLICK.

• WHEN_MOUSE_DOUBLECLICK – actúa después de el usuario haga doble click siempre que ocurra uno de los siguientes
eventos:
• Si está a nivel de FORM, actúa cuando se hace doble click dentro de
cualquier CANVAS o ITEM del formulario.
• Si está a nivel de BLOCK, actúa cuando se hace doble click dentro de
cualquier ITEM de dicho bloque.
• Si está a nivel de ITEM, actúa cuando se hace doble click dentro de dicho
ITEM.
Cualquier trigger que esté asociado con alguno de estos eventos actuará antes de que se dispare el
WHEN_MOUSE_DOUBLECLICK.

• WHEN_MOUSE_DOWN – actúa después de que el usuario presiona el botón del ratón y lo mantiene presionado siempre
que ocurra uno de los siguientes eventos:
• Si está a nivel de FORM, actúa cuando se hace click y arrastra dentro de
cualquier CANVAS o ITEM del formulario.
• Si está a nivel de BLOCK, actúa cuando se hace click y arrastra dentro de
cualquier ITEM de dicho bloque.
• Si está a nivel de ITEM, actúa cuando se hace doble click y arrastra dentro
de dicho ITEM.

• WHEN_MOUSE_ENTER – actúa cuando el ratón se introduce dentro de un ITEM o CANVAS siempre que ocurra uno de
los siguientes eventos:
• Si está a nivel de FORM, actúa cuando el ratón se introduce en cualquier
CANVAS o ITEM del formulario.

Página - 1 -
Apuntes Forms CÉSAR

• Si está a nivel de BLOCK, actúa cuando el ratón se introduce en cualquier


ITEM de dicho bloque.
• Si está a nivel de ITEM, actúa cuando el ratón se introduce en dicho ITEM.

• WHEN_MOUSE_LEAVE - actúa cuando el ratón sale de un ITEM o CANVAS siempre que ocurra uno de los siguientes
eventos:
• Si está a nivel de FORM, actúa cuando el ratón abandona cualquier
CANVAS o ITEM del formulario.
• Si está a nivel de BLOCK, actúa cuando el ratón abandona cualquier ITEM
de dicho bloque.
• Si está a nivel de ITEM, actúa cuando el ratón abandona dicho ITEM.

• WHEN_MOUSE_MOVE - actúa cuando el ratón se mueve dentro de un ITEM o CANVAS siempre que ocurra uno de los
siguientes eventos:
• Si está a nivel de FORM, actúa cuando el ratón se mueve dentro de
cualquier CANVAS o ITEM del formulario.
• Si está a nivel de BLOCK, actúa cuando el ratón se mueve dentro de
cualquier ITEM de dicho bloque.
• Si está a nivel de ITEM, actúa cuando el ratón se mueve dentro de dicho
ITEM.

• WHEN_MOUSE_UP - actúa cuando el botón es presionado y soltado siempre que ocurra uno de los siguientes eventos:
• Si está a nivel de FORM, actúa cuando el evento se produce dentro de
cualquier CANVAS o ITEM del formulario.
• Si está a nivel de BLOCK, actúa cuando el evento se produce dentro de
cualquier ITEM de dicho bloque.
• Si está a nivel de ITEM, actúa cuando el evento se produce dentro de dicho
ITEM.

• WHEN_NEW_BLOCK_INSTANCE – actúa cuando el foco se mueve hacia un ITEM que se encuentra en un bloque
distinto al que anteriormente conservaba el foco. Específicamente, actúa después de la navegación al ITEM, cuando FORMS
está preparado para aceptar la entrada en el nuevo bloque. A nivel de FORM, BLOCK.

• WHEN_NEW_FORM_INSTANCE – al comienzo de la aplicación, FORMS navega al primer ITEM del primer bloque que
encuentra. Este trigger actúa después después de que finalicen satisfactoriamente todos los triggers navegables que se disparan
durante la secuencia inicial de navegación. NO se dispara cuando el control es devuelto de un formulario al formulario que lo
llamó. En aplicaciones multi_form, el trigger no se dispara cuando el foco cambia de una a otra. A nivel de FORM.

• WHEN_NEW_ITEM_INSTANCE – actúa cuando el foco se mueve hacia un ITEM. Específicamente, actúa después de la
navegación hacia dicho ITEM, cuando FORMS está preparado para aceptar la entrada en un ITEM que es diferente al ITEM
en que estaba situado el foco anteriormente. A nivel de FORM, BLOCK, ITEM.

• WHEN_NEW_RECORD_INSTANCE – actúa cuando el foco se desplaza hacia un ITEM en un registro diferente al que
anteriormente capturo el foco. Concretamente, actúa después de la navegación a un ITEM de un registro, cuando FORMS está
preparado para aceptar la entrada en un registro diferente del que previamente había capturado el foco. A nivel de FORM,
BLOCK.

• WHEN_RADIO_CHANGED – actúa cuando un usuario selecciona un RADIO BUTTON diferente de un RADIO


GROUP, o deselecciona el RADIO BUTTON actual, ya sea por medio de ratón o de teclado. A nivel de FORM, BLOCK,
ITEM.

• WHEN_REMOVE_RECORD – actúa cuando la aplicación o el usuario limpian o eliminan un registro. A nivel de


FORM, BLOCK, ITEM.

• WHEN_TAB_PAGE_CHANGED – actúa siempre que hay un ITEM explícito o cuando se navega de una TAB PAGE
a otra en un TAB CANVAS. A nivel de FORM.

• WHEN_TIMER_EXPIRED – actúa cuando el tiempo determinado como duración de un TIMER.


A nivel de FORM.

• WHEN_VALIDATE_ITEM – actúa durante el proceso de validación de un ITEM. Concretamente, actúa como la


última parte de la validación para ITEMS con estado NEW o CHANGED. A nivel de FORM, BLOCK, ITEM.

• WHEN_VALIDATE_RECORD – actúa durante el proceso de validación de un registro. Concretamente, actúa como la


última parte de la validación para registros con estado NEW o CHANGED. A nivel de FORM, BLOCK.

Página - 2 -
Apuntes Forms CÉSAR

• WHEN_WINDOW_ACTIVATED – actúa cuando una ventana se convierte en ventana activa. Esto ocurre siempre que
el foco pasa a una ventana diferente de la actual. Nótese que las ventanas pueden ser activadas haciendo click sobre ellas. Esta
operación es independiente de la navegación a ITEMS de dicha ventana. De este modo, la navegación a un ITEM de una
ventana diferente siempre activará la ventana, pero esto puede ocurrir independientemente de la navegación. A nivel de
FORM.

• WHEN_WINDOW_CLOSED – actúa cuando un usuario cierra una ventana usando el comando específico para ello. A
nivel de FORM.

• WHEN_WINDOW_DESACTIVATED – actúa cuando un usuario desactiva una ventana enviando el foco a otra. A
nivel de FORM.

• WHEN_WINDOW_RESIZED – actúa cuando una ventana es redimensionada, incluso si es realizado por el usuario
con SET_WINDOW_PROPERTY o RESIZE_WINDOW. Incluso si la ventana se encuentra inactiva, el trigger se disparará.
El trigger también actúa en la entrada a la aplicación, cuando la ventana es dibujada por primera vez. A nivel de FORM.

• PRE_BLOCK – actúa durante el proceso de entrada al bloque, durante la entrada de un bloque a otro. A nivel de FORM,
BLOCK.

• PRE_COMMIT – actúa durante los procesos de envío y validación de los datos, antes de que FORMS procese cualquier
registro a modificar. El trigger se dispara después de que FORMS determine si se trata de INSERTS, UPDATES o DELETES.
El trigger NO se dispara cuando hay un intento de commit, sino que la validación determina que no existe ningún cambio en
los registros del formulario. A nivel de FORM.

• PRE_DELETE – actúa durante los procesos de envío y validación de los datos, antes de que una fila sea borrada. FORMS
crea implícitamente un trigger PRE_DELETE para cualquier relación maestro-detalle que tenga la propiedad DELETE
RECORD BEHAVIOR en Cascading. A nivel de FORM, BLOCK.

• PRE_FIELD ( PRE_TEXT_ITEM ) – actúa durante el proceso de entrada de ITEMS, también durante la navegación de un
ITEM a un TEXT ITEM. A nivel de FORM, BLOCK, ITEM.

• PRE_FORM – actúa durante la entrada del formulario (form event), en la carga de inicio de la aplicación. A nivel de FORM.

• PRE_INSERT – actúa durante los procesos de envío y validación de los datos, antes de que una fila sea insertada. Se dispara
una vez por cada registro pendiente para insertar. A nivel de FORM, BLOCK.

• PRE_LOGON – actúa justo antes de que FORMS inicie el procedimiento de conexión a la aplicación. A nivel de FORM.

• PRE_LOGOUT - actúa justo antes de que FORMS inicie el procedimiento de desconexión a la aplicación. A nivel de FORM.

• PRE_QUERY – actúa durante el proceso de EXECUTE QUERY o COUNT QUERY, inmediatamente antes de que FORMS
construya y haga pública la sentencia SELECT que identificará las filas que satisfacen los criterios de búsqueda. A nivel de
FORM, BLOCK.

• PRE_RECORD – actúa durante el proceso de entrada de registros, también durante la navegación a un registro diferente. A
nivel de FORM, BLOCK.

• PRE_SELECT – actúa durante los procesos de EXECUTE QUERY y COUNT QUERY, después de que FORMS construya
la sentencia SELECT para ser emitida. La sentencia SELECT puede ser examinada leyendo el valor de la variable del sistema
SYSTEM.LAST_QUERY.

• PRE_TEXT_ITEM - actúa durante el proceso de entrada de ITEMS, también durante la navegación de un ITEM a un TEXT
ITEM. A nivel de FORM, BLOCK, ITEM.

• PRE_UPDATE – actúa durante los procesos de envío y validación de los datos, antes de que una fila sea actualizada. Se
dispara una vez por cada fila pendiente de actualización. A nivel de FORM, BLOCK.

• POST_BLOCK – actúa durante la salida del bloque. A nivel de FORM, BLOCK.

• POST_CHANGE – actúa cuando se cumple cualquiera de las condiciones siguientes:


• El proceso de validación de ITEMS determina que el
ITEM está etiquetado como CHANGED y no es nulo.
• Un operador devuelve un valor dentro de un ITEM mediante una
LISTA DE VALORES y ese valor no es nulo.
• FORMS carga un valor no nulo dentro de un ITEM. En este caso,
el trigger WHEN_VALIDATE_ITEM no se dispara. Si se quiere evitar
esta situación y librarse eficazmente del trigger POST_CHANGE, es

Página - 3 -
Apuntes Forms CÉSAR

necesario incluir un POST_QUERY además del


WHEN_VALIDATE_ITEM. A nivel de FORM, BLOCK, ITEM.

• POST_DATABASE_COMMIT – actúa una vez durante los procesos de envío y validación de los datos, después de que se
produzca la validación en la Base de Datos. Es de señalar que el POST_FORMS_COMMIT actúa después de cualquier
sentencia DML que haya sido enviada a la Base de Datos, pero antes de que la transacción haya finalizado emitiendo el
mensaje correspondiente. El POST_DATABASE_COMMIT actúa después de que FORMS haya hecho público el commit
finalizando la transacción. A nivel de FORM.

• POST_FORMS_COMMIT – actúa una vez durante los procesos de envío y validación de los datos. Si hay algún registro en
el formulario que haya sido clasificado como INSERT, UPDATE o DELETE, el trigger se disparará después de que los
cambios hayan sido escritos en la ase de Datos, pero antes de que FORMS haya hecho público el commit finalizando la
transacción. Si el usuario inicia un commit cuando no hay registros pendientes de validación, FORMS dispara el
POST_FORMS_COMMIT inmediatamente, sin enviar los cambios a la Base de Datos. A nivel de FORM.

• POST_FIELD – actúa durante el proceso de salida de ITEMS en TEXT ITEMS. Concretamente, el trigger se dispara cuando
el foco se desplaza de un TEXT ITEM a cualquier otro ITEM. A nivel de FORM, BLOCK, ITEM.

• POST_FORM – actúa durante la salida del formulario. A nivel de FORM.

• POST_INSERT – actúa durante los procesos de envío y validación de los datos, justo después de que un registro sea
insertado. Se dispara una vez por cada registro insertado en la Base de Datos durante el proceso de validación. A nivel de
FORM, BLOCK.

• POST_LOGON – actúa a nivel de FORM después de cualquiera de los siguientes eventos:


• La finalización satisfactoria del proceso de conexión
de FORMS por defecto.
• La ejecución satisfactoria del trigger ON_LOGON.

• POST_LOGOUT – actúa a nivel de FORM después de cualquiera de los siguientes eventos:


• La desconexión satisfactoria de ORACLE.
• La ejecución satisfactoria del trigger ON_LOGOUT.
.
• POST_QUERY – cuando una consulta está siendo ejecutada en el bloque, el trigger actúa cada vez que FORMS carga un
registro dentro del bloque. El trigger actúa una vez por cada registro cargado en la lista de registros del bloque. A nivel de
FORM, BLOCK.

• POST_RECORD – actúa durante el proceso de salida de registros. Concretamente, el trigger se dispara siempre que el
usuario o la aplicación desplazan el foco de un registro a otro. El proceso de salida de registros puede ocurrir como resultado
de muchas operaciones, incluyendo INSERT_RECORD, DELETE_RECORD, NEXT_RECORD, NEXT_BLOCK,
CREATE_RECORD, PREVIOUS_BLOCK, etc. A nivel de FORM, BLOCK.

• POST_SELECT – actúa después de que la etapa de selección por defecto del proceso de consulta, o después de la ejecución
satisfactoria del trigger ON_SELECT. Se dispara antes de que ningún registro sea devuelto por la consulta en el proceso de
carga. A nivel de FORM, BLOCK.

• POST_TEXT_ITEM – actúa durante el proceso de salida de un ITEM en TEXT ITEMS. Concretamente, se dispara cuando
el foco se desplaza de un TEXT ITEM a cualquier otro ITEM. A nivel de FORM, BLOCK, ITEM.

• POST_UPDATE – actúa durante los procesos de envío y validación de los datos, después de que una fila sea actualizada. Se
dispara una vez por cada fila actualizada en la Base de Datos durante el proceso de validación. A nivel de FORM, BLOCK.

• ON_CHECK_DELETE_MASTER – FORMS crea este trigger automáticamente cuando se define una relación maestro-
detalle y la propiedad de la relación Delete Record Behavior está en Non Isolated. Se dispara cuando hay un intento de borrar
un registro del bloque maestro de una relación maestro-detalle. A nivel de FORM, BLOCK.
• ON_CHECK_UNIQUE – durante el proceso de validación, el trigger se dispara cuando FORMS normalmente comprueba
que los valores de la clave primaria son únicos antes de insertar o actualizar un registro de una tabla de la Base de Datos. Se
dispara una vez por cada registro que haya sido insertado o actualizado. Reemplaza el proceso de comprobación por defecto de
la exclusividad de los registros. Cuando un bloque tiene la propiedad Enforce Primary Key a Yes, FORMS, por defecto,
comprueba la exclusividad de un registro construyendo y ejecutando la sentencia SELECT correspondiente para seleccionar
las filas de valores de clave primaria del actual registro. Si se encuentra alguna fila duplicada, FORMS visualiza este mensaje:
“FRM-40600: Record has already been inserted.” Para un registro que haya sido catalogado como INSERT, FORMS siempre
comprueba los valores únicos de la clave primaria. En el caso de un UPDATE, FORMS chequea los valores de clave primaria
sólo si uno o más ITEMS que tengan la propiedad PRIMARY KEY modificada. A nivel de FORM, BLOCK.

• ON_CLEAR_BLOCK – actúa justo antes de que FORMS limpie los datos del bloque actual. NO se dispara cuando
FORMS limpia el bloque mediante el evento CLEAR_FORM. A nivel de FORM, BLOCK.

Página - 4 -
Apuntes Forms CÉSAR

• ON_CLEAR_DETAILS – actúa cuando el evento de coordinación se produce en un bloque maestro de una relación
maestro-detalle. Un evento de coordinación es cualquier evento que modifique el registro actual en el bloque maestro. A nivel
de FORM, BLOCK.

• ON_CLOSE – actúa cuando la aplicación o el usuario provocan el cierre de una consulta. Por defecto, FORMS cierra la
consulta cuando todos los registros identificados por los criterios de búsqueda han sido devueltos, o cuando el usuario o la
aplicación abortan la consulta. Este trigger implementa el normal funcionamiento de FORMS en la fase de cierre de la
consulta. A nivel de FORM.

• ON_COLUMN_SECURITY - actúa cuando FORMS normalmente debería forzar la seguridad en el nivel de columnas
para cada bloque que tenga la propiedad Enforce Column Security a ON. Reemplaza el proceso de comprobación en la
seguridad de columnas. Por defecto, FORMS fuerza la seguridad de las columnas consultando a la Base de Datos para
determinar las columnas de las tablas de la Base de Datos sobre las que el usuario actual tiene privilegio de UPDATE. Para
las columnas que el usuario no está autorizado a actualizar, FORMS convierte los correspondientes ITEMS en no-
actualizables, situando la propiedad Update Alowed a OFF dinámicamente. FORMS ejecuta esta acción al comienzo de la
aplicación, procesando cada bloque secuencialmente. A nivel de FORM, BLOCK.

• ON_COMMIT – actúa siempre que FORMS deba hacer pública la confirmación del commit en la Base de Datos para
finalizar la transacción. Por defecto, esta operación tiene lugar después de que todos los registros catalogados como
INSERTS, UPDATES y DELETES hayan sido enviados a la base de Datos. A nivel de FORM.

• ON_COUNT – actúa cuando FORMS debe ejecutar normalmente el proceso de COUNT_QUERY por defecto para
determinar el número de filas que satisfacen los criterios de búsqueda. Cuando el trigger completa su ejecución, FORMS
visualiza el mensaje siguiente: “FRM-40355: Query will retrieve <n> records”. El trigger reemplaza el proceso de selección
de FORMS para identificar las filas que satisfacen los criterios de búsqueda. A nivel de FORM, BLOCK.

• ON_DATABASE_RECORD – actúa cuando FORMS califica un registro como insertado o actualizado. El trigger actúa tan
pronto como FORMS determine a través de la validación que el registro debe ser procesado en el siguiente COMMIT como un
registro insertado o actualizado. Esto ocurre generalmente sólo cuando el usuario modifica el primer ÍTEM de un registro, y
después el usuario intente navegar fuera del ITEM. A nivel de FORM, BLOCK.

• ON_DELETE – actúa durante los procesos de envío y validación de los datos. Concretamente, el trigger se dispara
después de que actúe el trigger PRE_DELETE, y antes de que se dispare el trigger POST_DELETE, reemplazando el
DELETE actual en la Base de Datos para una fila dada. Se dispara una vez por cada registro catalogado como DELETE en la
Base de Datos. Reemplaza el proceso de manejo de registros borrados durante el envío de los datos a la Base de datos. A nivel
de FORM, BLOCK.

• ON_ERROR – actúa siempre que FORMS deba emitir normalmente un mensaje de error. Reemplaza la escritura del
mensaje de error en la línea de mensajes. A nivel de FORM, BLOCK, ITEM.

• ON_FETCH – cuando una consulta es abierta por primera vez, se dispara inmediatamente después de que el trigger
ON_SELECT actúe, cuando los primeros registros son cargados dentro del bloque. Mientras la consulta permanece abierta,
actúa de nuevo cada vez que un conjunto de filas deban ser cargadas dentro del bloque. Reemplaza el normal funcionamiento
del proceso de carga de registros dentro del bloque durante la operación de consulta. A nivel de FORM, BLOCK.

• ON_INSERT – actúa durante los procesos de envío y validación de los datos. Concretamente, se dispara cuando
FORMS deba insertar normalmente un registro en la Base de Datos. Actúa una vez por cada registro catalogado como
INSERT en la Base de Datos. Reemplaza el proceso de inserción de registros por defecto durante el envío de los datos. A
nivel de FORM, BLOCK.

• ON_LOCK – actúa siempre que FORMS intenta bloquear normalmente una fila, así como cuando el usuario presiona
una tecla para modificar el dato de un ITEM. El trigger se dispara entre la pulsación de la tecla y la visualización del dato
modificado. Reemplaza el proceso por defecto de FORMS para bloquear filas. A nivel de FORM, BLOCK.

• ON_LOGON – actúa una vez en la conexión cuando FORMS inicia el proceso de conexión. Reemplaza al proceso de
conexión por defecto. A nivel de FORM.

• ON_LOGOUT - actúa cuando FORMS inicia el proceso de desconexión. Reemplaza al proceso de desconexión de
FORMS y de RDBMS por defecto. A nivel de FORM.

• ON_MESSAGE – actúa siempre que FORMS origina un mensaje a visualizar. Reemplaza la escritura de un mensaje en
la línea de mensajes. A nivel de FORM, BLOCK, ITEM.

• ON_NEW_FIELD_INSTANCE – actúa cuando el foco se desplaza a un ITEM. Concretamente, se dispara después de


la navegación a un ITEM, cuando FORMS está preparado para aceptar la entrada en un ITEM diferente al que anteriormente
había capturado el foco. A nivel de FORM, BLOCK, ITEM.

• ON_NEW_RECORD - actúa siempre que FORMS crea un nuevo registro. Por ejemplo, cuando el usuario presiona la tecla
INSERT, o navega al último registro de un bloque, FORMS dispara el trigger. A nivel de FORM, BLOCK.

Página - 5 -
Apuntes Forms CÉSAR

• ON_POPULATE_DETAILS – FORMS crea implícitamente este trigger cuando se define una relación maestro-detalle. Se
dispara cuando FORMS necesita hacer público el bloque detalle de una relación maestr-detalle. A nivel de FORM, BLOCK.

• ON_REMOVE_RECORD – actúa cuando la aplicación o el usuario limpian o eliminan un registro. A nivel de FORM,
BLOCK, ITEM.

• ON_ROLLBACK – actúa cuando FORMS emite normalmente una sentencia ROLLBACK. Reemplaza el proceso de
ROLLBACK por defecto. A nivel de FORM.

• ON_SAVEPOINT - actúa cuando FORMS emite normalmente una sentencia SAVEPOINT. Por defecto, FORMS emite
SAVEPOINTS al comienzo de la aplicación y al comienzo de cada proceso de envío y validación de datos. Reemplaza el
proceso de emisión de SAVEPOINTS por defecto. A nivel de FORM.

• ON_SELECT – actúa cuando FORMS ejecuta normalmente la fase de selección de la consulta, para identificar los
registros de la Base de Datos que satisfacen los criterios de búsqueda. Reemplaza las apertura de cursor, análisis y ejecución
de la consulta. A nivel de FORM, BLOCK.

• ON_SEQUENCE_NUMBER – actúa cuando FORMS ejecuta normalmente el proceso por defecto de generación de
números secuenciales para asignarlos como valores de ITEMS. Reemplaza la serie de eventos que tienen lugar por defecto
cuando FORMS interactúa con la Base de Datos para obtener el siguiente valor de una secuencia definida en la Base de
Datos. A nivel de FORM, BLOCK, ITEM.

• ON_UPDATE – actúa durante los procesos de envío y validación de los datos. Concretamente, se dispara después de
que el trigger PRE_UPDATE actúe, y ates de que el trigger POST_UPDATE se dispare, cuando FORMS debe actualizar un
registro en la base de Datos. El trigger actúa una vez por cada registro catalogado como UPDATE. Reemplaza el proceso por
defecto de actualización de registros durante el envío de transacciones. A nivel de FORM, BLOCK.

• ON_VALIDATE_FIELD - actúa durante el proceso de validación de un ITEM. Concretamente, actúa como la última
parte de la validación para ITEMS con estado NEW o CHANGED. A nivel de FORM, BLOCK, ITEM.

• ON_VALIDATE_RECORD – actúa durante el proceso de validación de un registro. Concretamente, actúa como la


última parte de la validación para registros con estado NEW o CHANGED. A nivel de FORM, BLOCK.
VARIABLES DE SISTEMA

• SYSTEM.BLOCK_STATUS – representa el estado del bloque en el que está situado el cursor, o del bloque actual
durante el tratamiento de triggers. El valor puede ser uno de estos tres:
• CHANGED – indica que el bloque contiene al menos un registro
cambiado.
• NEW – indica que el bloque contiene sólo registros nuevos.
• QUERY – indica que el bloque contiene sólo registros válidos
que han sido recuperados de la Base de Datos.

• SYSTEM.COORDINATION_OPERATION – esta variable de sistema trabaja en compañía de


SYSTEM.MASTER_BLOCK para ayudar a que el trigger ON_CLEAR_DETAILS determine qué tipo de operación de
coordinación activó el trigger, y en qué bloque maestro de la relación maestro-detalle. Los valores de las dos variables de
sistema permanecen constantes a lo largo de la fase de limpieza de cualquier bloque. SYSTEM.MASTER_BLOCK representa
el nombre del bloque maestro, y SYSTEM.COORDINATION_OPERATION representa el evento provocado en el bloque
maestro. El proceso de CLEAR_ALL_MASTER_DETAILS el cual es generado automáticamente cuando una relación es
creada, comprueba el valor de SYSTEM.COORDINATION_OPERATION para proveer un especial manejo de los eventos
CLEAR_RECORD y SYNCHRONIZE, los cuales pueden ser diferentes dependiendo del evento. El proceso de
CLEAR_ALL_MASTER_DETAILS también comprueba el valor de SYSTEM.MASTER_BLOCK para verificar que
mientras está procesando el bloque maestro de la relación, esté buscando sólo bloques que contengan cambios. Los valores de
estas dos variables de sistema sólo tienen valor dentro del trigger ON_CLEAR_DETAILS, o dentro de un PROGRAM_UNIT
llamado por éste.

• SYSTEM.CURRENT_BLOCK – el valor que SYSTEM.CURRENT_BLOCK representa depende de la unidad actual de


navegación.
• Si la unidad actual de navegación es un bloque, registro o ítem
(como en los triggers PRE y POST ÍTEM, RECORD y BLOCK), el
valor de ésta variable es el nombre del bloque que FORMS está
procesando o sobre el cual se encuentra el cursor.
• Si la unidad actual de navegación es un formulario (como en los
triggers PRE y POST FORM), el valor de la variable es NULL.

• SYSTEM.CURRENT_DATETIME – representa la fecha actual del sistema operativo. El valor es de tipo CHAR con el
siguiente formeto: DD-MON-YYYY HH24:MI:SS. Reemplaza a $$DATE$$, evitando consultar a la Base de Datos

Página - 6 -
Apuntes Forms CÉSAR

• SYSTEM.CURRENT_FORM – representa el nombre del formulario que se está ejecutando actualmente. El valor es siempre
una cadena de caracteres. Puede utilizarse GET_APPLICATION_PROPERTY para obtener el nombre del formulario actual.

• SYSTEM.CURRENT_ÍTEM – el valor que representa depende de la unidad actual de navegación:


• Si la unidad actual de navegación es un ítem (como en los
triggers PRE y POST ÍTEM), el valor de la variable es el nombre del
ítem que FORMS está procesando, o sobre el que se encuentra el cursor
actualmente. El nombre del ítem devuelto NO incluye el prefijo del
nombre del bloque al que pertenece.
• Si la unidad actual de navegación es un registro, bloque o
formulario (como en los triggers PRE y POST RECORD, BLOCK o
FORM), el valor de la variable es NULL.
Esta variable está incluida por compatibilidad con versiones anteriores. En su lugar, es recomendable utilizar las variables
SYSTEM.CURSOR_ÍTEM o SYSTEM.TRIGGER_ÍTEM.

• SYSTEM.CURRENT_VALUE – representa el valor del ítem que está registrado como SYSTEM.CURRENT_ÍTEM, es
decir, el valor actual del ítem que actualmente tiene capturado el foco. Es un valor de tipo carácter. Esta variable está incluida
por compatibilidad con versiones anteriores. En su lugar, es recomendable utilizar las variables SYSTEM.CURSOR_ÍTEM o
SYSTEM.CURSOR_VALUE.

• SYSTEM.CURSOR_BLOCK - el valor que representa depende de la actual unidad de navegación:


• Si la unidad actual de navegación es un bloque, registro o ítem
(como en los triggers PRE y POST ÍTEM, RECORD, BLOCK), el
valor de la variable es el nombre del bloque en el que el cursor está
situado.
• Si la unidad actual de navegación es un formulario (como en los
triggers PRE y POST FORM), el valor de la variable es NULL.
• SYSTEM.CURSOR_ÍTEM – representa el nombre del bloque e ítem sobre el que se encuentra actualmente el foco o cursor.
El valor de esta variable dentro de un trigger dado, cambia cuando la navegación tiene lugar, al contrario de lo que sucede con
SYSTEM.TRIGGER_ÍTEM, la cual conserva el mismo valor desde el principio hasta el final del trigger.

• SYSTEM.CURSOR_RECORD – representa el número de registro sobre el que está situado el cursor. Este número
representa el actual orden físico del registro en la lista de registros del bloque. El valor es siempre una cadena de caracteres.

• SYSTEM.CURSOR_VALUE – representa el valor del ítem sobre el que está situado el cursor (foco). El valor es siempre una
cadena de caracteres. Cuidado en los triggers en los que la navegación actual NO sea un ítem, puesto que esta variable
contendrá el valor del ítem desde el que navegó, y no el del ítem hacia el que haya navegado.

• SYSTEM.CUSTOM_ÍTEM_EVENT – almacena el nombre del evento disparado por un control VBX.

• SYSTEM. CUSTOM_ÍTEM_EVENT_PARAMETERS – almacena los argumentos suplementarios de un evento disparado


por un control VBX.

• SYSTEM.DATE_THRESHOLD – esta variable trabaja conjuntamente con $$DBDATE$$, $$DBTIME$$ y $


$DBDATETIME$$, y controla con qué frecuencia FORMS sincroniza la fecha de la Base de Datos con la RDBMS. El valor
de ésta variable debe ser especificado en el formato MI:SS. Debido a que las consultas frecuentes a la DBMS pueden afectar
al rendimiento, es mejor mantener este valor razonablemente alto. No obstante, si este valor no se sincroniza bastante a
menudo, es posible que se produzca alguna discrepancia de tiempo. Por defecto es de 1 minuto, pero esto no quiere decir que
FORMS consulte a la RDBMS cada minuto, sino que cuando FORMS necesite generar un valor para alguna de las variables $
$DATE$$, $$TIME$$, $$DATETIME$$ o SYSTEM.EFECTIVE_DATE, actualizará la fecha añadiendo al valor devuelto
por la consulta a la RDBMS la cantidad de tiempo transcurrido (medida por el sistema operativo local ). Si la cantidad de
tiempo transcurrido excede el umbral (THRESHOLD), se producirá una nueva consulta a la Base de Datos, y el contador de
intervalos se reseteará. Si un formulario nunca referencia a la fecha de la Base de Datos, FORMS nunca ejecuta una consulta
para devolver la fecha de la RDBMS, sin tener en cuenta el valor de SYSTEM.DATE_THRESHOLD.

• SYSTEM.EFFECTIVE_DATE – representa la fecha efectiva de la Base de Datos. El valor de ésta variable debe estar
siempre en el siguiente formato: DD-MON-YYYY HH24:MI:SS. Esta variable de sistema es apropiada para hacer pruebas.
Dado que puede utilizarse para conseguir una hora específica, la hora en la pantalla durante una aplicación no causará la
aparición de resultados diferentes de los ya conocidos y tomados como válidos.

• SYSTEM.EVENT_WINDOW – representa el nombre de la última ventana afectada por una acción que provocó la ejecución
de uno de los siguientes triggers:
• WHEN_WINDOW_ACTIVATED
• WHEN_WINDOW_CLOSED
• WHEN_WINDOW_DESACTIVATED
• WHEN_WINDOW_RESIZED
Desde dentro de estos triggers, puede asignarse el valor de la variable a uno de los siguientes :
• Variable global.

Página - 7 -
Apuntes Forms CÉSAR

• Parámetro.
• Variable.
• Ítem, incluyendo ítems con canvas nulo.

• SYSTEM.FORM_STATUS – representa el estado del formulario actual. El valor puede ser uno de los siguientes:
• CHANGED – indica que el formulario contiene al menos un bloque con un
registro Changed. Este valor se vuelve Changed sólo después de que al menos un
registro de la aplicación haya sido cambiado y la unidad de navegación asociada
también haya cambiado.
• NEW – indica que el formulario contiene sólo registros nuevos.
• QUERY – indica que la consulta está abierta. El formulario contiene al
menos un bloque con registros Query, y ningún bloque con registros Changed.
Cada vez que éste valor es referenciado, debe ser construido por FORMS. Si el formulario contiene un gran número de
bloques con muchos registros, el uso de ésta variable puede afectar al rendimiento de la aplicación.

• SYSTEM.LAST_QUERY – representa la sentencia SELECT más reciente que FORMS ha utilizado para cargar un bloque
durante la actual ejecución. El valor es siempre una cadena de caracteres.

• SYSTEM.LAST_RECORD – indica si el registro actual es el último registro de la lista de registros del bloque actual. El
valor puede ser uno de los siguientes:
• TRUE – indica que el registro actual es el último registro de la lista de
registros del bloque actual.
• FALSE - indica que el registro actual NO es el último registro de la lista de
registros del bloque actual.

• SYSTEM.MASTER_BLOCK – ésta variable trabaja conjuntamente con SYSTEM.COORDINATION_OPERATION para


ayudar a que el trigger ON_CLEAR_DETAILS determine qué tipo de operación de coordinación disparó el trigger, y en qué
bloque maestro de qué relación maestro-detalle. Los valores de estas dos variables de sistema permanecen constantes durante
toda la fase de limpieza de cualquier sincronización de bloques. SYSTEM.MASTER_BLOCK representa el nombre del
bloque maestro, y SYSTEM.COORDINATION_OPERATION representa el evento de coordinación que ocurrió en el bloque
maestro.

• SYSTEM.MESSAGE_LEVEL – representa uno de los siguientes mensajes de niveles de rigor: 0, 5, 10, 15, 20, 25. El valor
es siempre una cadena de caracteres. Durante una misma sesión, FORMS suprime todos los mensajes con un nivel de rigor
igual o inferior que el nivel indicado. Puede asignarse un valor a la variable con la sintaxis normal de PL/SQL. FORMS no
suprime Prompts o mensajes de error, sin importar el nivel seleccionado.. por defecto es 0.

• SYSTEM.MODE – indica tanto si la aplicación se encuentra en modo NORMAL, ENTER_QUERY o


FETCH_PROCESSING. El valor es siempre una cadena de caracteres.
• NORMAL – indica que el formulario se encuentra actualmente en modo
normal.
• ENTER_QUERY – indica que el formulario se encuentra actualmente en
modo Enter_Query.
• QUERY – indica que el formulario se encuentra actualmente en modo de
carga, lo que significa que una consulta está siendo procesada actualmente.

• SYSTEM.MOUSE_BUTTON_PRESSED – indica el número de botón que ha sido presionado. El soporte de los botones del
ratón está limitado a dos botones (1 y 2). El valor de la variable es siempre una cadena de caracteres.

• SYSTEM.MOUSE_BUTTON_SHIFT_STATE – indica la tecla que fue presionada durante el click del ratón, como por
ejemplo SHIFT, ALT o CTRL. El valor es siempre una cadena de caracteres. La cadena en sí misma puede depender de la
plataforma del usuario. Por ejemplo, en WINDOWS 3.1 o WINDOWS 95, las cadenas de caracteres devueltas están en el
idioma del sistema operativo.
• SHIFT valor: SHIFT+. (lo representa como MAYÚSCULAS+)
• CTRL valor: CTRL+.
• ALT valor: ALT+.
• SHIFT+CTRL valor: SHIFT+CTRL+.
• CTRL+ALT valor: CTRL+ALT+.

• SYSTEM.MOUSE_CANVAS – si el ratón se encuentra en un Canvas, representa el nombre del canvas como un CHAR, si el
ratón se encuentra en un ítem, representa el nombre del canvas que contiene a dicho ítem. Esta variable es NULL si el ratón no
está en ningún Canvas o si la plataforma NO es una plataforma GUI.

• SYSTEM.MOUSE_FORM – si el ratón se encuentra en un formulario, la variable representa el nombre del formulario como
un CHAR. Esta variable es NULL si la plataforma NO es una plataforma GUI.

• SYSTEM.MOUSE_ÍTEM – si el ratón se encuentra en un ítem, la variable representa el nombre del ítem como un CHAR.
Esta variable es NULL si el ratón no está dentro de ningún ítem o si la plataforma NO es una plataforma GUI.

Página - 8 -
Apuntes Forms CÉSAR

• SYSTEM.MOUSE_RECORD – si el ratón está dentro de un registro, representa el número de registro de ese registro como
un CHAR. Esta variable tiene valor 0 cuando el ratón no está dentro de ningún ítem ( y por tanto, de ningún registro).

• SYSTEM.MOUSE_RECORD_OFFSET – si el ratón está dentro de un registro, representa la posición del primer registro
visible como un CHAR. Por ejemplo, si el ratón se encuentra en el segundo registro de cinco registros visibles en un bloque
multi-registro, la variable tendrá valor 2. Esta variable tiene valor 0 cuando el ratón no está dentro de ningún ítem ( y por tanto,
de ningún registro).

• SYSTEM.MOUSE_X_POS – representa la coordenada del eje de las x del ratón en el formulario actual. Si el ratón está
dentro de un ítem, el valor es relativo a la esquina superior izquierda del ítem en cuestión. Si el ratón se encuentra en un
canvas, el valor es relativo a la esquina superior izquierda del canvas.

• SYSTEM.MOUSE_Y_POS - representa la coordenada del eje de las x del ratón en el formulario actual. Si el ratón está
dentro de un ítem, el valor es relativo a la esquina superior izquierda del ítem en cuestión. Si el ratón se encuentra en un
canvas, el valor es relativo a la esquina superior izquierda del canvas.

• SYSTEM.RECORD_STATUS – representa el estado del registro sobre el que está situado el cursor. El valor de ésta variable
puede ser uno de los siguientes:
• CHANGED – indica que el estado de validación del registro
consultado es Changed.
• INSERT – indica que el estado de validación del registro
consultado es Changed y el registro no existe en la Base de Datos.
• NEW – indica que el estado de validación del registro consultado
es New.
• QUERY – indica que el estado de validación del registro
consultado es Valid y que ha sido recuperado de la Base de Datos.

• SYSTEM.SUPPRESS_WORKING – suprime el mensaje de “ Working…” en ejecución, para prevenir la actualización de la


pantalla causada normalmente por el despliegue en pantalla del mensaje “Working…”. El valor de ésta variable puede ser uno
de los siguientes:
• TRUE – impide que FORMS despliegue el mensaje
“Working…”.
• FALSE – permite que FORMS continúe mostrando el mensaje
“Working…”.

• SYSTEM.TRIGGER_BLOCK – representa el nombre del bloque sobre el que se encontraba situado el cursor (foco) cuando
el trigger actual fue disparado. El valor de ésta variable es NULL si el trigger actual es un PRE o POST FORM. El valor es
siempre una cadena de caracteres.

• SYSTEM.TRIGGER_ÍTEM – representa el ítem (bloque.ítem) que ha capturado el foco y por el cual el trigger está
actualmente activo. Cuando se referencia en un trigger de “teclado” , representa el ítem sobre el que el cursor estaba situado
cuando se disparó el trigger. El valor es siempre una cadena de caracteres. El valor permanece constante desde el principio
hasta el final del trigger. Esto difiere de la variable de sistema SYSTEM.CURSOR_ÍTEM, la cual puede cambiar durante la
ejecución de un trigger dado cuando la navegación tiene lugar.

• SYSTEM.TRIGGER_RECORD - representa el número de registro que FORMS está procesando. Éste número representa el
orden físico del registro actual en la lista de registros del bloque. El valor de ésta variable es siempre una cadena de caracteres.

Página - 9 -
Apuntes Forms CÉSAR

Página - 10
-

También podría gustarte