Está en la página 1de 26

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 del 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.
· 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 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.

· 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 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 base 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 maestrodetalle
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.

· 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.

· 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 maestro-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 la 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
formato: DD-MON-YYYY HH24:MI:SS. Reemplaza a $$DATE$$,
evitando consultar a la Base de Datos

· 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.
· 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.

· 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.

También podría gustarte