+ All Categories
Home > Documents > Oracle Forms Manual

Oracle Forms Manual

Date post: 17-Feb-2016
Category:
Upload: husseingabriel
View: 296 times
Download: 12 times
Share this document with a friend
Description:
Oracle Forms Basico
Popular Tags:
37
CURSO BASICO DE DEVELOPER FORMS PREPARADO POR JUAN CARLOS ERAZO M. Cali, Junio 2002
Transcript
Page 1: Oracle Forms Manual

CURSO BASICO DE DEVELOPER FORMS

PREPARADO POR JUAN CARLOS ERAZO M.

Cali, Junio 2002

Page 2: Oracle Forms Manual

1. GENERALIDADES 4

2. CREANDO UNA FORMA BÁSICA 5

2.1 CREACIÓN DE UNA FORMA MANUALMENTE 6 2.2 CREACIÓN DE UNA FORMA USANDO EL ASISTENTE 8

2.3 EJERCICIO 10

3. CREANDO RELACIONES ENTRE BLOQUES 10

3.1 EJERCICIO 12

4. DANDO FORMA A LOS MÓDULOS 12

4.1 USANDO EL ASISTENTE DE LAYOUT 12 4.2 CREANDO EL LAYOUT MANUALMENTE 13 4.2.1 CREACIÓN DE ALGUNOS OBJETOS 15 4.2.1.1 Listas de valores (LOV) 15 4.2.1.2 Lienzos como separadores 18 4.2.1.3 Listas desplegables 19 4.2.1.4 Items de no entrada o de DISPLAY 20 4.2.2 EJERCICIO 20 4.3 CREANDO ATRIBUTOS VISUALES 20

5. DESPLEGANDO MENSAJES EN PANTALLA 21

6. USANDO TRIGGERS 23

6.1 ALCANCE DE LOS TRIGGERS 23

7. USO DEL API 25

7. VALIDACIÓN 29

7.1 USANDO PROPIEDADES PARA LAS VALIDACIONES 29 7.2 USANDO TRIGGERS PARA LAS VALIDACIONES 30 7.3 EJERCICIO 31

8. CREACIÓN DE MENÚS 31

Page 3: Oracle Forms Manual

8.1 INVOCANDO FORMAS DESDE EL MENÚ 33 8.2 INVOCANDO REPORTES DESDE EL MENÚ 34 8.3 EJERCICIO 35

9. EJERCICIO FINAL 36

Page 4: Oracle Forms Manual

1. Generalidades

A lo largo del curso se desarrollará una aplicación completa para la administración

de empleados, usando para ello los objetos del usuario SCOTT. Developer

FORMS ofrece dos formas de hacerlo: usando asistentes y manualmente.

El entorno de FORMS consiste de una pantalla con una barra de herramientas, un

navegador de objetos y una paleta de propiedades, tal como se aprecia en la

figura:

Para agregar un nuevo objeto se debe ubicar el cursor sobre este y presionar el

botón con el símbolo más (+) de la barra de herramientas izquierda. Para

eliminarlo se debe presionar el botón con el símbolo equis (X) en la misma barra

de herramientas.

Cada objeto tiene un conjunto de propiedades visibles en la paleta de

propiedades. Para modificar una propiedad solamente se necesita ubicar el cursor

en la cela junto al nombre de la misma y cambiar su contenido.

Page 5: Oracle Forms Manual

Módulo

Lienzo

Bloque

Ítem

FORMS soporta la creación de FORMULARIOS (formas) y MENUS. Sin embargo

dentro de su entorno todos se conocen como módulos.

2. Creando una forma básica

Para crear una forma (o módulo) es necesario conocer la jerarquía de objetos de

FORMS.

El Lienzo es el área de la ventana en la cual se ubicarán los ítems.

El bloque es una agrupación lógica de ítems. Los bloques pueden estar

asociados o no con la base de datos en cuyo caso se llamarán bloques de

datos. También pueden ser usados para controlar la ejecución del módulo,

en cuyo caso se llamarán bloques de control. Estos no están asociados

directamente con objetos de la base de datos.

El ítem es el objeto de interfaz que despliega información. Cada pequeño

objeto susceptible de ser incluido en un lienzo se considera como un ítem.

Es así como podemos encontrar: campos de texto, listas de valores,

imágenes, botones de chequeo, botones comunes, sonidos, controles de

Visual Basic y contenedores OLE, entre otros.

Page 6: Oracle Forms Manual

2.1 Creación de una forma manualmente

Para crear una forma se usan estos pasos:

1. Crear un nuevo módulo. Propiedades a tener en cuenta:

a. Nombre

b. Título

c. Ventana

d. Módulo menú: indica el módulo usado para crear el menú. También

indica que la forma será padre para todos los demás módulos. El

nombre del módulo debe incluirse completo (nombre + extensión)

e. Primer bloque de navegación: le indica a la forma que se ubique en

ese módulo al momento de ejecutarse

f. Unidad de validación: indica el orden en que se procesarán los

triggers

g. Modo de interacción: indica cómo el usuario interactuará con la

forma cuando se ejecuta una consulta. Por ejemplo, en modo

BLOCKING el usuario no podrá cambiar el tamaño de la ventana

2. Crear un nuevo lienzo (CANVAS). Propiedades a tener en cuenta:

a. Nombre

b. Tipo: indica la forma como se desplegará en la pantalla. Por ejemplo

CONTENT significa que ocupará toda el área de contenido

c. Visible

d. Ventana: indica en qué ventana se desplegará

e. Ancho y alto

f. Apariencia del borde ( BEVEL)

g. Atributos visuales

3. Crear bloques: Propiedades a tener en cuenta:

a. Nombre

Page 7: Oracle Forms Manual

b. Estilo de navegación: indica como se procederá en caso de estar en

el primero o en el último registro del bloque

c. Bloques anterior y siguiente

d. Atributos visuales para el registro actual

e. Longitud del arreglo de consulta. Indica el número de registros que

se traerán en una sola operación de lectura.

f. Número de registros cargados: especifica el número de registros que

se cargarán a memoria durante una consulta sobre el bloque (por

defecto son tres)

g. Número de registros desplegados: especifica el número de registros

que un bloque puede desplegar cada vez. Esta propiedad afecta

directamente la forma como se verá el bloque

h. Consultar todos los registro: indica si al momento de consultar el

bloque se traerán todos los registros o solo la cantidad especificada

en la propiedad Longitud del arreglo de consulta . Se usa

comúnmente cuando hay ítems de resumen (por ejemplo sumas)

i. Bloque de base de datos: especifica el tipo de bloque

j. Consulta, inserción, actualización y eliminación permitida: indican las

operaciones que se pueden ejecutar sobre los registros del bloque

k. Forzar llave primaria: comúnmente FORMS usa el ROWID para

identificar los registros en el bloque. Con esta propiedad se le indica

que use las llaves primarias de la tabla base.

l. Origen de datos

m. Nombre origen de datos

n. Destino de datos

4. Crear ítems: Las propiedades de los ítems varían de acuerdo al tipo de los

mismos. Estas son algunas de las propiedades comunes

a. Nombre

b. Tipo

c. Habilitado

Page 8: Oracle Forms Manual

d. Justificación: indica la ubicación en el bloque

e. Restricción del texto: indica la forma como se desplegará el texto

(mayúsculas, minúsculas, etc.)

f. Navegable con el teclado

g. Ítems anterior y siguiente

h. Tipo de dato

i. Requerido

j. Máscara de formato

k. Elemento de base de datos

l. Nombre de columna

m. Consulta, inserción, actualización permitida

n. Visible

o. Lienzo contenedor

p. Visible

2.2 Creación de una forma usando el asistente

Realmente no hay un asistente para crear formas. Solamente para crear los

bloques de datos que la componen. Para crear una forma primero debe crearse un

nuevo módulo y posteriormente invocar al asistente para bloques que se

encuentra en el menú herramientas.

Page 9: Oracle Forms Manual

La siguiente es una descripción de los pasos usados para el Asistente para crear

un bloque de datos:

1. Seleccionar el tipo de fuente de datos del bloque: se puede seleccionar

entre tabla o vista y procedimiento PL/SQL. Si se selecciona tabla o vista

posteriormente se deben ingresar las columnas y tablas usadas. Si se

escoge procedimiento se deben seleccionar los procedimientos usados

para las operaciones sobre la base de datos.

2. Escoger tablas o vistas y columnas del bloque. Adicionalmente se debe

chequear la casilla forzar integridad referencial si se desea que FORMS

use los constraints definidos en la base de datos.

3. Crear el bloque solamente o crearlo y abrir el editor de Layout para

organizar su apariencia.

Una vez creado el bloque este aparecerá en el navegador de objetos con el mismo

nombre de la tabla base.

Page 10: Oracle Forms Manual

2.3 Ejercicio

En este ejercicio el objetivo es crear una forma básica manualmente y otra usando

el asistente. Ambas formas estarán basadas en la tabla DEPT, se deben mostrar

ocho (8) registros a la vez y debe haber una barra de desplazamiento para ver los

registros siguientes. Para cada objeto se deben establecer los valores de las

propiedades correspondientes:

Título: Ventana manual / automática

Columnas: DEPTNO, DNAME y LOC

También podremos apreciar el uso de los botones para la interacción con la base

de datos. Finalmente se crearán botones para realizar los mismos procesos de

forma manual.

3. Creando relaciones entre bloques

No todas las formas contienen un único bloque sobre el cual interactuar. Muchas

de ellas contienen más de uno (algunos maestro

detalle) los cuales están

relacionados entre si. Para crear una relación entre dos bloques (ya deben estar

creados ambos bloques) se deben seguir los siguientes pasos:

1. Ubicarse sobre el bloque maestro y crear una nueva relación

2. Seleccionar el bloque detalle en la ventana de creación de relaciones

3. Seleccionar las operaciones de eliminación de registros: en cascada para

eliminar los registros hijos junto con el padre, aisladas para no eliminar los

registros hijos cuando se elimine el padre, no aisladas para evitar que se

borre el registro maestro si hay registros hijos

4. Seleccionar la coordinación entre los bloques: diferida para que los

registros hijos no aparezcan cuando se hace la consulta sobre el bloque

maestro; para verlos se necesita hacer la consulta sobre el bloque hijo.

Auto consulta para traer los registros hijos automáticamente cuando se

navega al bloque detalle y prevención de operaciones sin registro maestro

Page 11: Oracle Forms Manual

para prevenir que se opere sobre registros hijos cuando no hay un maestro

seleccionado.

5. Escribir la operación de JOIN

6. O seleccione un objeto existente en ambos bloques sobre el cual se basará

la relación.

Una vez creada la relación FORMS adicionará nuevas unidades de programa y

triggers para controlar las operaciones de coordinación entre ambos bloques.

Es posible crear las relaciones de forma automática. Para ello se necesita crear

primero el bloque maestro y luego el detalle usando el Asistente. Una de las

opciones del asistente preguntará si hay o no un bloque maestro para crear la

relación.

Page 12: Oracle Forms Manual

3.1 Ejercicio

En este ejercicio el objetivo es crear un bloque adicional en las formas ya

existentes manualmente y usando el asistente. Este bloque estará basado en la

tabla EMP, se deben mostrar cuatro (4) registros a la vez y debe haber una barra

de desplazamiento para ver los registros siguientes. Para cada objeto se deben

establecer los valores de las propiedades correspondientes:

Título: Ventana manual / automática

Columnas: EMPNO, ENAME, JOB , MGR, HIREDATE, SAL, COMM,

DEPTNO.

Posteriormente se debe hacer una relación con el bloque DEPT y probar el

funcionamiento de la forma.

4. Dando forma a los módulos

Una vez la parte funcional de los módulos se encuentre operativa se puede centrar

la atención sobre la interfaz gráfica. La interfaz gráfica constituye una parte

importante del proceso de desarrollo de una aplicación por lo que FORMS cuenta

con un asistente para dar forma a la parte visual. Asimismo existen algunas

propiedades que sirven para cambiar la apariencia de los módulos.

En esta sección veremos como usar el asistente para el layout y como crear

atributos visuales para aplicar sobre los objetos.

4.1 Usando el asistente de layout

Hay dos formas de llegar al asistente de layout: a través del menú herramientas y

a través del submenú asociado al botón derecho del ratón, el cual aparece al

ubicarse sobre un bloque.

Page 13: Oracle Forms Manual

Al iniciar el asistente de layout se deben seguir los siguientes pasos:

1. Seleccionar un lienzo existente o crear uno nuevo

2. Seleccionar el bloque de datos y las columnas que aparecerán en el mismo

3. Escribir el texto que acompañará cada columna y el ancho del campo

asociado

4. Seleccionar el estilo de layout: tabular o formulario

5. Escoger un título para el marco, el número de registros a mostrar y la

distancia entre los mismos. También se puede seleccionar si se quiere o no

colocar una barra de desplazamiento de registros.

Una vez finalizado el asistente aparecerá el editor de layout con los registros

ubicados en el lienzo, tal como lo muestra la siguiente figura:

4.2 Creando el layout manualmente

Para crear al layout manualmente se debe invocar el editor y posteriormente

añadir uno a uno los objetos requeridos. Antes de ubicar los objetos se debe tener

cuidado de seleccionar el lienzo y el bloque con el cual se trabajará, de lo contrario

los objetos aparecerán ubicados fuera de lugar. La siguiente tabla muestra la

Page 14: Oracle Forms Manual

descripción de algunos de los botones de la barra de herramientas del editor que

se usan para añadir objetos al lienzo.

Añadir ítem texto

Añadir campo de texto

Añadir marco (frame)

Añadir botón de radio

Añadir botón de chequeo

Añadir imagen

Añadir botón

Añadir ítem tipo lista desplegable

Añadir ítem para desplegar texto

Añadir lienzo en forma de separador

Al agregar cada uno de los objetos se debe tener en cuenta modificar sus

propiedades con el fin de ligar la parte visual con la parte funcional del módulo.

Existen adicionalmente algunos botones en la barra de herramientas horizontal

que nos permiten manipular la alineación de los objetos.

Page 15: Oracle Forms Manual

Alinear los ítems a la izquierda.

Alinear los ítems al centro vertical

Alinear los ítems a la derecha

Alinear los ítems a la parte superior

Alinear los ítems al centro horizontal

Alinear los ítems a la parte inferior

4.2.1 Creación de algunos objetos

En esta sección veremos la forma de creación de algunos objetos por

considerarlos de vital importancia para el desarrollo de aplicaciones.

4.2.1.1 Listas de valores (LOV)

Las listas de valores desplegables consisten de dos partes: la lista de valores

como tal y el grupo de registros.

Nota: Las listas de valores (LOV) son diferentes de los ítems tipo lista. Estos

últimos pueden tener datos estáticos y dinámicos, pero deben ser llenados de

forma manual.

Para crear una lista de valores se debe primero crear el grupo de registros.

Page 16: Oracle Forms Manual

En el grupo de registros se pueden especificar datos estáticos o datos dinámicos

provenientes de una consulta a la base de datos. Comúnmente se consultan

mínimo dos columnas, una de las cuales será desplegada en la lista de valores y

la otra se retornará a la forma cuando se seleccione el ítem.

Una vez creado el grupo de registros se procede a crear la lista de valores. Para

crearla se puede hacer uso del asistente o se puede hacer manualmente.

Creación de una lista de valores manualmente

Al crear la lista de forma manual se debe establecer un valor en las siguientes

propiedades (las demás son opcionales):

a. Nombre

b. Título

c. Grupo de registros

d. Mapeo de columnas. Esto consiste en hacer coincidir las columnas del

grupo de registros con las columnas en la forma.

Page 17: Oracle Forms Manual

Aquí se debe especificar un nombre para cada una de las columnas

involucradas en el grupo de registros y el lugar a donde retornarán sus

valores una vez se seleccione el ítem.

Una vez creada la lista se debe asignar esta a un ítem en la propiedad lista de

valores (LOV).

Creación de una lista de valores usando el asistente

Para crear la lista de valores se deben seguir estos pasos

que coinciden con las

pantallas del asistente - :

1. Escoger un grupo de registros o crear uno basado en una consulta

2. Ingresar la consulta para obtener los registros

Page 18: Oracle Forms Manual

3. Escoger las columnas del grupo de registros que irán en la lista de valores

4. Colocar un nombre para las columnas de la lista y asignar el ítem al cuál

retornará la selección

5. Escoger el título de la lista, el ancho, el alto y la ubicación

6. Seleccionar el número de registros a recuperar

7. Asignar la lista a un ítem del bloque

4.2.1.2 Lienzos como separadores

Un lienzo separador está constituido de una o más páginas de separadores, que

permiten al desarrollador desplegar una gran cantidad de información relacionada

en un simple objeto.

Para crear un lienzo con separadores se deben seguir estos sencillos pasos:

1. Seleccionar el lienzo en donde se van a alojar

Page 19: Oracle Forms Manual

2. Abrir el editor de layout

3. Seleccionar el objeto TAB CANVAS y ubicarlo en el lienzo

4. Modificar sus propiedades

5. Crear los bloques y asignarlos a cada página del lienzo

4.2.1.3 Listas desplegables

Las listas desplegables comúnmente se crean a partir de datos estáticos,

ingresados de forma manual en la lista. Sin embargo es posible llenarlas a partir

de datos provenientes de la base de datos usando un procedimiento como el que

sigue:

PROCEDURE LLENAR_LISTA_POP IS LIST_ID ITEM; the_count number := 1; cursor c1 is select job from emp; BEGIN list_id := FIND_ITEM('block.item_name'); -- recorrer el cursor para llenar la lista FOR v_c1 IN c1 LOOP Add_List_Element(list_id,the_count, v_c1.job, v_c1.job); the_count := the_count + 1; END LOOP; END;

Page 20: Oracle Forms Manual

Este procedimiento establece los valores de la lista obteniéndolos de la tabla EMP.

4.2.1.4 Items de no entrada o de DISPLAY

Algunas veces en nuestra forma queremos ubicar ítems que unicamente se

dediquen a mostrar valores, ya sea provenientes de otro ítem o directamente de la

base de datos. Esta funcionalidad la proveen los ítems de DISPLAY.

Un ítem de DISPLAY se crea cuando presionamos el botón de la barra de

herramientas izquierda. Una vez creado se ajustan sus propiedades tal como si

fuera in ítem de texto normal. Si el ítem desplegará información de una tabla de la

base de datos se debe ajustar la propiedad Nombre de columna . Si desplegará

información de otro ítem se debe ajustar las propiedades Copiar valor del ítem o

Sincronizar con el ítem o establecer una fórmula en caso que sea un ítem

calculado.

4.2.2 Ejercicio

El objetivo de este ejercicio es mejorar la apariencia de las formas creadas, para lo

cual se usará el editor de layout. Se debe colocar un color distintivo para los

registros de cada bloque, cambiar el tipo de letra (si se quiere), agregar textos a

las columnas (prompt), cambiar el color de la letra y agregar otros detalles.

4.3 Creando atributos visuales

Los atributos visuales permiten asociar un conjunto de colores y tipos de letra a los

ítems de un módulo. El uso de atributos visuales contribuye a mantener la

modularidad en el desarrollo de la interfaz gráfica de usuario por cuando para

cambiar la forma visual del módulo solo basta con escoger un atributo visual

diferente.

Page 21: Oracle Forms Manual

La creación de atributos visuales se hace de igual forma que cualquier otro objeto

del módulo y solamente se debe dar valores a las propiedades deseadas. Las

siguientes son algunas de las propiedades de los atributos visuales:

a. Nombre

b. Color de letra

c. Color de fondo

d. Tipo de relleno

e. Tipo de letra

f. Tamaño

g. Peso

h. Estilo

i. Espacio

Una vez creado un atributo visual puede asignársele a cualquier ítem en la

propiedad atributo visual .

5. Desplegando mensajes en pantalla

Las aplicaciones cliente servidor necesitan constantemente intercambiar

información con el usuario, ya sea solicitándole una entrada de datos o

simplemente desplegando información como advertencias o mensajes de error en

ventanas independientes de los formularios. FORMS soporta esta característica a

través de un objeto llamado ALERTA. Una Alerta es simplemente una forma con

unas características muy particulares, la mayoría de las cuales son asignadas en

tiempo de ejecución, y que permite intercambiar información con el usuario.

Una alerta se crea de igual forma que cualquier otro objeto de FORMS y se le

establecen propiedades como:

a. Nombre

Page 22: Oracle Forms Manual

b. Título

c. Mensaje: el mensaje a desplegar.

d. Estilo: pueden crearse alertar de tipo Nota, precaución o parada. Estas

difieren en el icono usado.

e. Etiquetas de los botones

Una alerta se invoca comúnmente desde el código PL/SQL de la forma. Por

ejemplo:

DECLARE

Alert_id alert := find_alert( alerta_error );

Num number;

BEGIN

Set_alert_property(alert_id, ALERT_MESSAGE_TEXT, Error en la forma );

Num := show_alert(alert_id);

END;

Existe una forma alterna de mostrar mensajes usando la función MESSAGE de la

siguiente forma:

MESSAGE( Working... (30%), NO_ACKNOWLEDGE);

MESSAGE( Working... (30%), ACKNOWLEDGE);

MESSAGE( Working... (30%), ACKNOWLEDGE);

Page 23: Oracle Forms Manual

Este mensaje se mostrará en la barra de estado de la forma. La propiedad

ACKNOWLEDGE/NO_ACKNOWLEDGE, le dice a FORMS si debe mostrar una

ventana tipo alerta o solamente debe desplegar el mensaje en la barra de estado

respectivamente.

6. Usando triggers

Los triggers son los manejadores de eventos en FORMS. Cada trigger especifica

la ocurrencia de un suceso sobre un ítem. Es así como encontramos por ejemplo

que sobre un botón aplican estos triggers:

WHEN_BUTTON_PRESED

WHEN_NEW_INTEM_INSTANCE

Cada trigger es susceptible de ser programado para que ejecute una tarea

específica usando PL/SQL.

6.1 Alcance de los triggers

En Developer los triggers se pueden definir a nivel de bloque, ítem, registro o

formulario. El alcance del trigger corresponde con el alcance del nivel de la

jerarquía de objetos en que fue definido. Por ejemplo, si se asocia un trigger a

nivel de bloque los eventos de todos los elementos de dicho bloque ejecutarán el

trigger.

Si existe más de un trigger con el mismo nombre (o funcionalidad) en un ámbito

particular Developer lanzará el que está asociado con el elemento más bajo en la

jerarquía. Por ejemplo, si existe un trigger WHEN_NEW_ITEM_INSTANCE

asociado a un bloque y a un ítem, Developer ejecuta el trigger del ítem e ignora el

Page 24: Oracle Forms Manual

del bloque. Este comportamiento se puede cambiar modificando la propiedad

Execution Hierarchy del trigger.

Algunos triggers solo tienen validez cuando se definen a un nivel específico. Por

ejemplo WHEN_VALIDATE_RECORD no es aplicable a ítems individuales, por lo

que solo se puede definir a nivel de bloque y de formulario.

Para ver los triggers aplicables a un objeto basta con usar el menú asociado con el

botón derecho del ratón en la opción Smart triggers .

Estos son algunos tipos de triggers que existen en Developer:

De uso de teclas o comandos:

KEY_CLRFRM, KEY_COMMIT, KEY_EDIT, KEY_ENTQRY, KEY_F1, KEY_EXIT,

ON_CLOSE, ON_COMMIT, ON_ERROR, ON_PULATE_DETAILS,

ON_ROLLBACK.

De eventos posteriores al objeto:

POST_QUERY, POST_DELETE, POST_COMMIT, POST_UPDATE,

POST_TEXT_ITEM, POST_BLOCK.

De eventos anteriores al objeto:

PRE_DELETE, PRE_FORM, PRE_QUERY, PRE_TEXT_ITEM, PRE_BLOCK.

Page 25: Oracle Forms Manual

De eventos inmediatos:

WHEN_BUTTON_PRESED, WHEN_CREATE_RECORD,

WHEN_LIST_ACTIVATED, WHEN_NEW_ITEM_INSTANCE,

WHEN_VALIDATE_ITEM

Para controlar los errores presentados en un trigger y no permitir que el usuario

avance a los ítems siguientes se debe invocar la excepción predefinida

FORM_TRIGGER_FAILURE.

7. Uso del API

Developer cuenta con un conjunto de variables, funciones, procedimientos

creados para asistir a los desarrolladores en la creación de aplicaciones.

Como ya se ha visto, cada uno de los objetos que componen una aplicación

cuenta con propiedades, las cuales pueden ser manipuladas en tiempo de

ejecución usando el API. Es prácticamente imposible en un curso básico ver todas

las funciones del API, pero abarcaremos las más importantes.

En general existen dos tipos de funciones y procedimientos en el API: los que

establecen una propiedad y los que recuperan su valor. Todas ellas tienen una

estructura genérica aplicable a casi cualquier objeto. La sintaxis es la siguiente:

Para establecer valores en las propiedades de un objeto:

SET_<OBJETO>_PROPERTY(parámetros);

Para obtener valores de las propiedades de un objeto:

GET_<OBJETO>_PROPERTY(parámetros);

Para referenciar los objetos de FORMS se usan estas variables y procedimientos:

Page 26: Oracle Forms Manual

Objeto Variable Procedimiento

Bloque BLOCK Find_block( NAME )

Ítem ITEM Find_item( NAME )

Alerta ALERT Find_alert( NAME )

Lista de valores LOV Find_lov( NAME )

Lienzo CANVAS Find_canvas( NAME )

FORMS también permite conocer su estado interno a través variables del sistema.

La siguiente tabla contiene algunas de estas variables y su descripción:

Variable Descripción

SYSTEM.BLOCK_STATUS Representa el estado de un bloque donde el

cursor está ubicado. CHANGED, NEW,

QUERY. Por ejemplo:

IF :System.Block_Status = 'CHANGED'

THEN Commit_Form;

END IF;

SYSTEM.FORM_STATUS Similar al anterior pero a nivel de forma.

SYSTEM.CURSOR_BLOCK

SYSTEM.CURSOR_ITEM

SYSTEM.CURSOR_RECORD

Representan el nombre o el valor del objeto

en donde el cursor está ubicado

actualmente. Por ejemplo:

curblk := :System.Cursor_Block;

IF curblk = 'ORDERS' THEN

Go_Block('ITEMS');

IF :System.Cursor_Record = '1' THEN

Go_Item('orders.total');

ELSE Previous_Item;

Page 27: Oracle Forms Manual

END IF;

SYSTEM.CURRENT_BLOCK

SYSTEM.CURRENT_ITEM

Representan el nombre del bloque o el

bloque e ítem del objeto que está enfocado

en el momento.

SYSTEM.LAST_RECORD Retorna TRUE si está en el último registro

del bloque o FALSE si no. Por ejemplo:

IF :System.Last_Record = 'TRUE' THEN

Message('You are on the last row');

END IF;

SYSTEM.MODE Indica cuando FORMS está en estado:

NORMAL, ENTER_QUERY, QUERY. Por

ejemplo:

IF :System.Cursor_Item = 'EMP.EMPNO'

and :System.Mode = 'ENTER-QUERY'

THEN

IF NOT Show_Lov('my_lov') THEN

RAISE Form_Trigger_Failure;

END IF;

Estas son algunos de los procedimientos y propiedades más usadas en la

construcción de aplicaciones:

Ubicar una ventana en la pantalla

SET_WINDOW_PROPERTY( NOMBRE , POSITION, X, Y)

Cambiar el tamaño de una ventana

SET_WINDOW_PROPERTY( NOMBRE , WINDOW_SIZE, X, Y)

Minimizar o maximizar una ventana

Page 28: Oracle Forms Manual

SET_WINDOW_PROPERTY( NOMBRE , WINDOW_STATE,

MINIMIZE|MAXIMIZE);

Cambiar las propiedades de un ítem

SET_ITEM_PROPERTY( BLOQUE.NOMBRE , PROPERTY, VALOR)

Donde PROPERTY puede ser: alignment, background_color, border_bevel,

case_restriction, enabled (PROPERTY_TRUE, PROPERTY_FALSE)

Cambiar las propiedades de un bloque

SET_BLOCK_PROPERTY( BLOQUE , PROPERTY, VALOR)

Donde PROPERTY puede ser: current_record_attribute, default_where,

delete_allowed, next_navigation_block, order_by.

Ir a un bloque, ítem o registro

GO_BLOCK( NOMBRE )

GO_ITEM( NOMBRE )

GO_RECORD( NOMBRE )

Navegar por los bloques, ítems o registros

PREVIOUS_BLOCK NEXT_BLOCK

PREVIOUS_ITEM NEXT_ITEM

PREVIOUS_RECORD NEXT_RECORD

Cerrar una forma

Exit_form (ASK_COMMIT | NO_COMMIT | DO_COMMIT | NO_VALIDATE);

Ejecutar una tecla o botón

DO_KEY(LIST_VALUES | ENTER_QUERY | EXECUTE_QUERY |

CREATE_RECORD | DELETE RECORD | COMMIT_FORM )

Page 29: Oracle Forms Manual

7. Validación

Forms valida los ítems asegurando que cumpla con sus propiedades establecidas.

Las validaciones ocurren cuando:

Se navega fuera de una unidad de navegación: esto ocurre cuando un

usuario presiona ciertas teclas de función o presiona el ratón fuera de una

unidad de validación.

Cuando se invoca la función ENTER o el usuario presiona ENTER

Cuando se invoca el procedimiento COMMIT_FORM: en este caso se

valida la forma sin tener encuentra cada unidad de validación

El proceso de validación consiste en verificar primero el estado del ítem o registro;

si este es inválido entonces se hace la validación estándar (contra las

propiedades) y luego se ejecuta el trigger WHEN_VALIDATE. La validación a nivel

de bloque o forma se hace para todos los registros del bloque o todos los bloques

de la forma respectivamente.

7.1 Usando propiedades para las validaciones

Algunas propiedades de los ítems proveen un tipo de validación estándar para los

valores que se han de capturar. Es así como existen propiedades para restringir el

formato de entrada de un ítem, restringir las operaciones permitidas, permitir la

navegación hacia él, restringir un rango de valores, etc.

Para ítems de tipo texto

Propiedad Descripción Cómo se usa

Máscara de formato Restringe el formato de

entrada de un valor

dd-mm-rrrr

dd-mon-rr

9999

$9999.99

Valor mínimo permitido Establece el valor mínimo 1

Page 30: Oracle Forms Manual

que puede tomar 100

Valor máximo permitido Establece el valor máximo

que puede tomar

100

200

Validar de la lista Obliga a que el valor

pertenezca a la LOV

7.2 Usando triggers para las validaciones

Otra forma de realizar validaciones es usando el trigger WHEN_VALIDATE

(aplicable solo a ítems y a registros). Este trigger se dispara una vez el usuario

sale de la unidad de validación, ya sea que haga clic sobre otra área en la forma o

que simplemente intente pasar a otra unidad. Para programar este trigger basta

con incluir el código PL/SQL necesario para realizar la validación. El siguiente

ejemplo muestra el código necesario para validar que el salario de un empleado

no sea mayor que el del presidente:

DECLARE sal_pres number;

BEGIN select sal into sal_pres from emp where job='PRESIDENT'; IF :emp.sal >= sal_pres then

message('El salario debe ser menor que el del presidente', ACKNOWLEDGE);

raise form_trigger_failure; end if;

EXCEPTION when too_many_rows then

message('No se puede validar porque se encontraron demasiados registros', ACKNOWLEDGE);

raise form_trigger_failure; when others then

message('No se puede validar porque ocurrió un error', ACKNOWLEDGE);

raise form_trigger_failure; END;

Page 31: Oracle Forms Manual

Para controlar los errores presentados en un trigger y no permitir que el usuario

avance a los ítems siguientes se debe invocar la excepción predefinida

FORM_TRIGGER_FAILURE.

7.3 Ejercicio

Este ejercicio consiste en agregar una validación sobre el campo JOB para que los

cargos que el usuario ingrese estén dentro de la lista de JOBS permitidos.

8. Creación de menús

Como se explicó al inicio, un menú es también un módulo en Oracle FORMS.

La forma más rápida de crear un menú es usando el Editor. El editor de menús es

una herramienta de FORMS que permite crear menús y menús desplegables.

Para invocar el Editor puede hacerse por la opción existente en el menú

Herramientas o directamente por el submenú asociado al botón derecho del ratón

al hacer clic sobre el módulo.

Page 32: Oracle Forms Manual

La pantalla inicial del editor de menú muestra la primera opción disponible. Cada

opción puede tener asociado un submenú el cual se creará usando el mismo

editor.

El editor de menú cuenta con los siguiente botones para la creación de menús y

submenús.

Crear un submenú

Crear otro menú

Eliminar un menú o submenú

Cada opción del menú o submenú debe ser programada para ejecutar una acción

específica, de lo contrario, al compilar el módulo aparecerán errores. Comúnmente

Page 33: Oracle Forms Manual

estas acciones hacen referencia a invocar otras formas o reportes existentes en la

aplicación.

8.1 Invocando formas desde el menú

Para invocar una forma desde una opción de menú basta con incluir el siguiente

código en la opción deseada:

CALL_FORM( NOMBRE );

Una vez establecidas todas las opciones del menú y programado su código se

debe compilar el menú. Esto se puede lograr usando la combinación de teclas

CTRL+T o directamente en el menú archivo, opción administración, opción

compilar archivo.

Page 34: Oracle Forms Manual

Cuando el menú se haya compilado y no tenga errores se debe asignar a la forma

en la propiedad módulo menú . En esta propiedad se debe escribir el nombre del

módulo menú.

8.2 Invocando reportes desde el menú

De igual forma en que se invocan formas desde el menú es posible invocar

también módulos de otros componentes de Developer como REPORTS y

GRAPHICS. Para hacerlo se usa la siguiente instrucción:

RUN_PRODUCT (PRODUCTO, MODULO, MODO_COMUNICACIÓN,

MODO_EJECUCIÓN, UBICACION,

LISTA_PARAMETROS , DISPLAY);

Donde:

PRODUCTO: indica el producto a invocar. Puede ser: REPORTS, FORMS o

GRAPHIS.

MODULO: es el nombre del módulo a invocar.

Page 35: Oracle Forms Manual

MODO_COMUNICACIÓN: especifica el modo de comunicación entre FORMS y el

producto a ejecutar. Puede ser SYNCHRONOUS para que el control vuelva a

FORMS solo cuando se deje de ejecutar el otro producto o ASYNCHRONOUS

para que el control retorne a FORMS una vez se haya lanzado el nuevo producto.

MODO_EJECUCIÓN: indica el modo de ejecución usado por el producto

invocado. Puede ser BATCH o RUNTIME.

UBICACIÓN: indica la ubicación del archivo. Puede ser FILESYSTEM o DB.

LISTA_PARÁMETROS: contiene la lista de parámetros que se pasarán al reporte

en caso de necesitarlos. Si no se pasan parámetros debe enviarse la lista vacía.

DISPLAY: especifica el nombre del ítem tipo CHART en el cual se desplegará el

resultado de la invocación del producto GRAPHICS.

Por ejemplo, para invocar un reporte llamado REP_EMP se usaría el siguiente

código:

DECLARE

List_par paramlist;

BEGIN

List_par := create_parameter_list( lista );

RUN_PRODUCT(REPORTS, REP_EMP , SYNCHRONOUS, RUNTIME,

FILESYSTEM, list_par, NULL);

END;

8.3 Ejercicio

Este ejercicio consiste simplemente en crear un menú con dos opciones

principales: Departamentos, Salir. La primera opción debe tener un submenú con

una opción llamada mantenimiento la cual invocará la forma para tal fin. La opción

salir solamente debe cerrar las formas.

Page 36: Oracle Forms Manual

9. Ejercicio final

El ejercicio final pretende poner en práctica todo lo visto hasta el momento y

despertar las aptitudes investigativas con el fin de encontrar funcionalidades no

contenidas en el curso.

Los requerimientos de este ejercicio son los siguientes:

La universidad Santiago de Cali desea contar con una aplicación para mantener la

información de sus departamentos y empleados. Deben existir pantallas

exclusivas para el ingreso de departamentos y de rangos salariales de los

empleados. Debe tener también la posibilidad de consultar un departamento a la

vez, con sus respectivos empleados en donde pueda observarse toda la

información del departamento, toda la información del empleado, el grado de

rango salarial que tiene y la suma total de los salarios para tal departamento. Al

ingresar un empleado nuevo o modificar uno existente debe validarse que el Jefe

(Manager) exista, que el salario no sea mayor que el salario del presidente y que

no exceda los límites para su rango. Es deseable que para cada validación

necesaria se muestren las alertas respectivas con el fin de informar al usuario el

problema ocurrido. En lo posible deben existir botones para agregar registros,

navegar entre los bloques (en caso de ser necesario) y guardar los datos

ingresados.

Page 37: Oracle Forms Manual

Recommended