Forms

ktc6ky3r 3y5oetra Apuntes Forms CÉSAR TRIGGERS EN FORMS · WHEN_BUTTON_PRESSED actúa cuando un PUSH BUTTON es activado. A

Views 373 Downloads 2 File size 35KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

ktc6ky3r 3y5oetra Apuntes Forms CÉSAR TRIGGERS EN FORMS · WHEN_BUTTON_PRESSED actúa cuando un PUSH BUTTON es activado. A nivel de FORM, BLOC K, ITEM. · WHEN_CHECKBOX_CHANGED actúa siempre que el estado de un check box cambia, ya sea p or 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, cu ando el usuario presiona la tecla INSERT, o navega al último registro de un bloque, FORMS dispara el trigge r. 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 actu alizado. El trigger actúa tan pronto como FORMS determine a través de la validación que el registro debe ser p rocesado 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, BL OCK. · WHEN_FORM_NAVIGATE actúa siempre que cualquier navegación en el formulario tenga lug ar. A nivel de FORM. · WHEN_IMAGE_ACTIVATED actúa cuando un usuario hace doble click con el ratón en un IMA GE ITEM. A nivel de FORM, BLOCK, ITEM. · WHEN_IMAGE_PRESSED actúa cuando un usuario utiliza el ratón haciendo click o doble c lick 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 L IST 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 d e 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 ocur ra 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 mantie e 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 siemp re 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 encuent ra 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 d el primer bloque que encuentra. Este trigger actúa después después de que finalicen satisfactoriamente todo s los triggers navegables que se disparan durante la secuencia inicial de navegación. NO se dispara cuando el control es dev uelto 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 regi stro 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 h abí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 tecla do. A nivel de FORM, BLOCK, ITEM. · WHEN_REMOVE_RECORD actúa cuando la aplicación o el usuario limpian o eliminan un reg istro. 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. Concreta mente, actúa como la última parte de la validación para registros con estado NEW o CHANGED. A nivel de FO RM, BLOCK. Página - 2 Apuntes Forms CÉSAR · WHEN_WINDOW_ACTIVATED actúa cuando una ventana se convierte en ventana activa. Est o 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 independien temente de la navegación. A nivel de FORM. · WHEN_WINDOW_CLOSED actúa cuando un usuario cierra una ventana usando el comando es pecí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 real izado por el usuario con SET_WINDOW_PROPERTY o RESIZE_WINDOW. Incluso si la ventana se encuentra inac tiva, 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 t rata de INSERTS, UPDATES o DELETES. El trigger NO se dispara cuando hay un intento de commit, sino que la validación d etermina 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 qu e 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 du rante 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 inic io 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 ap licació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 satisfac en 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 nave gació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 le yendo 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 nav egació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 d atos, después de que se produzca la validación en la Base de Datos. Es de señalar que el POST_FORMS_COMMIT a ctúa después de cualquier

sentencia DML que haya sido enviada a la Base de Datos, pero antes de que la tra nsacción haya finalizado emitiendo el mensaje correspondiente. El POST_DATABASE_COMMIT actúa después de que FORMS haya hec ho 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 dato s. 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 hec ho 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 n ivel de FORM. · POST_FIELD actúa durante el proceso de salida de ITEMS en TEXT ITEMS. Concretament e, el trigger se dispara cuando el foco se desplaza de un TEXT ITEM a cualquier otro ITEM. A nivel de FORM, BLOC K, 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é de que un registro sea insertado. Se dispara una vez por cada registro insertado en la Base de Datos du rante 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 tri gger se dispara siempre que el usuario o la aplicación desplazan el foco de un registro a otro. El proceso de sal ida de registros puede ocurrir como resultado de muchas operaciones, incluyendo INSERT_RECORD, DELETE_RECORD, NEXT_RECORD, NEX T_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 cons ulta, o después de la ejecución satisfactoria del trigger ON_SELECT. Se dispara antes de que ningún registro sea d evuelto 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. Concre tamente, se dispara cuando el foco se desplaza de un TEXT ITEM a cualquier otro ITEM. A nivel de FORM, BLOC K, ITEM. · POST_UPDATE actúa durante los procesos de envío y validación de los datos, después de q e 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 un a relación maestrodetalle

y la propiedad de la relación Delete Record Behavior está en Non Isolated. Se dispar a cuando hay un intento de borrar un registro del bloque maestro de una relación maestro-detalle. A nivel de FORM, B LOCK. · ON_CHECK_UNIQUE durante el proceso de validación, el trigger se dispara cuando FOR MS 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. Reempla za el proceso de comprobación por defecto de la exclusividad de los registros. Cuando un bloque tiene la propiedad Enforce Pr imary 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 algu na fila duplicada, FORMS visualiza este mensaje: FRM-40600: Record has already been inserted. Para un registro que haya sido catalo gado 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 F ORM, 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 maes tro de una relación maestro-detalle. Un evento de coordinación es cualquier evento que modifique el re gistro 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 ha n sido devueltos, o cuando el usuario o la aplicación abortan la consulta. Este trigger implementa el normal funcionamiento d e 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 e l 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 co nsultando a la Base de Datos para determinar las columnas de las tablas de la Base de Datos sobre las que el usuar io actual tiene privilegio de UPDATE. Para las columnas que el usuario no está autorizado a actualizar, FORMS convierte los c orrespondientes ITEMS en noactualizables, situando la propiedad Update Alowed a OFF dinámicamente. FORMS ejecuta esta acción a l 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 FO RM. · ON_COUNT actúa cuando FORMS debe ejecutar normalmente el proceso de COUNT_QUERY po r defecto para

determinar el número de filas que satisfacen los criterios de búsqueda. Cuando el tr igger completa su ejecución, FORMS visualiza el mensaje siguiente: FRM-40355: Query will retrieve records . El tri gger reemplaza el proceso de selección de FORMS para identificar las filas que satisfacen los criterios de búsqueda. A ni vel de FORM, BLOCK. · ON_DATABASE_RECORD actúa cuando FORMS califica un registro como insertado o actual izado. El trigger actúa tan pronto como FORMS determine a través de la validación que el registro debe ser proce sado 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 POS T_DELETE, reemplazando el DELETE actual en la Base de Datos para una fila dada. Se dispara una vez por cad a registro catalogado como DELETE en la Base de Datos. Reemplaza el proceso de manejo de registros borrados durante el e nví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. Reem plaza 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 inmediatamen te después de que el trigger ON_SELECT actúe, cuando los primeros registros son cargados dentro del bloque. Mie ntras la consulta permanece abierta, actúa de nuevo cada vez que un conjunto de filas deban ser cargadas dentro del blo que. Reemplaza el normal funcionamiento del proceso de carga de registros dentro del bloque durante la operación de consul ta. 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 def ecto 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 cuan do el usuario presiona una tecla para modificar el dato de un ITEM. El trigger se dispara entre la puls ación de la tecla y la visualización del dato modificado. Reemplaza el proceso por defecto de FORMS para bloquear filas. A niv el de FORM, BLOCK. · ON_LOGON actúa una vez en la conexión cuando FORMS inicia el proceso de conexión. Reem plaza 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 proces o 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 e scritura 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, s e dispara después de la navegación a un ITEM, cuando FORMS está preparado para aceptar la entrada en un I TEM 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, cuand o el usuario presiona la tecla INSERT, o navega al último registro de un bloque, FORMS dispara el trigger. A nive l de FORM, BLOCK. Página - 5 Apuntes Forms CÉSAR · ON_POPULATE_DETAILS FORMS crea implícitamente este trigger cuando se define una re lació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 regis tro. 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 d efecto, FORMS emite SAVEPOINTS al comienzo de la aplicación y al comienzo de cada proceso de envío y val idació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 d e 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 un a 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 catalogad o 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. Concretame nte, actúa como la última parte de la validación para registros con estado NEW o CHANGED. A nivel de FO RM, BLOCK. VARIABLES DE SISTEMA · SYSTEM.BLOCK_STATUS representa el estado del bloque en el que está situado el curs or, 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é ti

po 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 blo que. SYSTEM.MASTER_BLOCK representa el nombre del bloque maestro, y SYSTEM.COORDINATION_OPERATION representa el even to provocado en el bloque maestro. El proceso de CLEAR_ALL_MASTER_DETAILS el cual es generado automáticament e cuando una relación es creada, comprueba el valor de SYSTEM.COORDINATION_OPERATION para proveer un espe cial manejo de los eventos CLEAR_RECORD y SYNCHRONIZE, los cuales pueden ser diferentes dependiendo del eve nto. El proceso de CLEAR_ALL_MASTER_DETAILS también comprueba el valor de SYSTEM.MASTER_BLOCK para ve rificar que mientras está procesando el bloque maestro de la relación, esté buscando sólo bloques qu e contengan cambios. Los valores de estas dos variables de sistema sólo tienen valor dentro del trigger ON_CLEAR_DETAI LS, 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 val or es de tipo CHAR con el siguiente formeto: DD-MON-YYYY HH24:MI:SS. Reemplaza a $$DATE$$, evitando consul tar a la Base de Datos Página - 6 Apuntes Forms CÉSAR · SYSTEM.CURRENT_FORM representa el nombre del formulario que se está ejecutando act ualmente. 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 navegac ió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 lug ar, 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.CU RRENT_ÍTEM, es decir, el valor actual del ítem que actualmente tiene capturado el foco. Es un val or de tipo carácter. Esta variable está incluida por compatibilidad con versiones anteriores. En su lugar, es recomendable utiliz ar las variables SYSTEM.CURSOR_ÍTEM o SYSTEM.CURSOR_VALUE. · SYSTEM.CURSOR_BLOCK - el valor que representa depende de la actual unidad de nav

egació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 t iene lugar, al contrario de lo que sucede con SYSTEM.TRIGGER_ÍTEM, la cual conserva el mismo valor desde el principio hasta el f inal del trigger. · SYSTEM.CURSOR_RECORD representa el número de registro sobre el que está situado el c ursor. 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 s ea un ítem, puesto que esta variable contendrá el valor del ítem desde el que navegó, y no el del ítem hacia el que haya nave gado. · SYSTEM.CUSTOM_ÍTEM_EVENT almacena el nombre del evento disparado por un control VB X. · 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$$, $$DBTI ME$$ 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 consu ltas frecuentes a la DBMS pueden afectar al rendimiento, es mejor mantener este valor razonablemente alto. No obstante, s i 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ñadien do al valor devuelto por la consulta a la RDBMS la cantidad de tiempo transcurrido (medida por el sis tema 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 d e 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 sistem a es apropiada para hacer pruebas. Dado que puede utilizarse para conseguir una hora específica, la hora en la pantal la 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 acc ió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 se r 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 form ulario 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 utiliza do 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_OP ERATION para ayudar a que el trigger ON_CLEAR_DETAILS determine qué tipo de operación de coordina ción disparó el trigger, y en qué bloque maestro de qué relación maestro-detalle. Los valores de estas dos variables d e sistema permanecen constantes durante toda la fase de limpieza de cualquier sincronización de bloques. SYSTEM.MASTER_BLO CK representa el nombre del bloque maestro, y SYSTEM.COORDINATION_OPERATION representa el evento de coordina ción que ocurrió en el bloque maestro. · SYSTEM.MESSAGE_LEVEL representa uno de los siguientes mensajes de niveles de rig or: 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 c on la sintaxis normal de PL/SQL. FORMS no suprime Prompts o mensajes de error, sin importar el nivel seleccionado.. por de fecto 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 sop orte de los botones del ratón está limitado a dos botones (1 y 2). El valor de la variable es siempre una ca dena de caracteres. · SYSTEM.MOUSE_BUTTON_SHIFT_STATE indica la tecla que fue presionada durante el cl ick del ratón, como por ejemplo SHIFT, ALT o CTRL. El valor es siempre una cadena de caracteres. La cade na 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 de l canvas como un CHAR, si el ratón se encuentra en un ítem, representa el nombre del canvas que contiene a dicho ít em. 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 represent a 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 nombr e 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 re gistro de ese registro como un CHAR. Esta variable tiene valor 0 cuando el ratón no está dentro de ningún ítem ( y p or tanto, de ningún registro). · SYSTEM.MOUSE_RECORD_OFFSET si el ratón está dentro de un registro, representa la pos ició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 formu lario 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 for mulario 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 e l 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 l 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 a ctual 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 ít em sobre el que el cursor estaba situado cuando se disparó el trigger. El valor es siempre una cadena de caracteres. El val or 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. És te número representa el orden físico del registro actual en la lista de registros del bloque. El valor de és ta variable es siempre una cadena de caracteres. Página - 9 Apuntes Forms CÉSAR Página - 10 -