Sei sulla pagina 1di 37

CURSO BASICO DE DEVELOPER FORMS

PREPARADO POR
JUAN CARLOS ERAZO M.

Cali, Junio 2002

1. GENERALIDADES

2. CREANDO UNA FORMA BSICA

2.1 CREACIN DE UNA FORMA MANUALMENTE


2.2 CREACIN DE UNA FORMA USANDO EL ASISTENTE

6
8

2.3 EJERCICIO

10

3. CREANDO RELACIONES ENTRE BLOQUES

10

3.1 EJERCICIO

12

4. DANDO FORMA A LOS MDULOS

12

4.1 USANDO EL ASISTENTE DE LAYOUT


4.2 CREANDO EL LAYOUT MANUALMENTE
4.2.1 CREACIN DE ALGUNOS OBJETOS
4.2.1.1 Listas de valores (LOV)
4.2.1.2 Lienzos como separadores
4.2.1.3 Listas desplegables
4.2.1.4 Items de no entrada o de DISPLAY
4.2.2 EJERCICIO
4.3 CREANDO ATRIBUTOS VISUALES

12
13
15
15
18
19
20
20
20

5. DESPLEGANDO MENSAJES EN PANTALLA

21

6. USANDO TRIGGERS

23

6.1 ALCANCE DE LOS TRIGGERS

23

7. USO DEL API

25

7. VALIDACIN

29

7.1 USANDO PROPIEDADES PARA LAS VALIDACIONES


7.2 USANDO TRIGGERS PARA LAS VALIDACIONES
7.3 EJERCICIO

29
30
31

8. CREACIN DE MENS

31

8.1 INVOCANDO FORMAS DESDE EL MEN


8.2 INVOCANDO REPORTES DESDE EL MEN
8.3 EJERCICIO

33
34
35

9. EJERCICIO FINAL

36

1. Generalidades
A lo largo del curso se desarrollar una aplicacin completa para la administracin
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
botn con el smbolo ms (+) de la barra de herramientas izquierda. Para
eliminarlo se debe presionar el botn con el smbolo 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.

FORMS soporta la creacin de FORMULARIOS (formas) y MENUS. Sin embargo


dentro de su entorno todos se conocen como mdulos.

2. Creando una forma bsica


Para crear una forma (o mdulo) es necesario conocer la jerarqua de objetos de
FORMS.

Mdulo

Lienzo

Bloque

tem

El Lienzo es el rea de la ventana en la cual se ubicarn los tems.


El bloque es una agrupacin lgica de tems. Los bloques pueden estar
asociados o no con la base de datos en cuyo caso se llamarn bloques de
datos. Tambin pueden ser usados para controlar la ejecucin del mdulo,
en cuyo caso se llamarn bloques de control. Estos no estn asociados
directamente con objetos de la base de datos.
El tem es el objeto de interfaz que despliega informacin. Cada pequeo
objeto susceptible de ser incluido en un lienzo se considera como un tem.
Es as como podemos encontrar: campos de texto, listas de valores,
imgenes, botones de chequeo, botones comunes, sonidos, controles de
Visual Basic y contenedores OLE, entre otros.

2.1 Creacin de una forma manualmente


Para crear una forma se usan estos pasos:
1. Crear un nuevo mdulo. Propiedades a tener en cuenta:
a. Nombre
b. Ttulo
c. Ventana
d. Mdulo men: indica el mdulo usado para crear el men. Tambin
indica que la forma ser padre para todos los dems mdulos. El
nombre del mdulo debe incluirse completo (nombre + extensin)
e. Primer bloque de navegacin: le indica a la forma que se ubique en
ese mdulo al momento de ejecutarse
f. Unidad de validacin: indica el orden en que se procesarn los
triggers
g. Modo de interaccin: indica cmo el usuario interactuar con la
forma cuando se ejecuta una consulta. Por ejemplo, en modo
BLOCKING el usuario no podr cambiar el tamao 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

b. Estilo de navegacin: 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 nmero de registros que
se traern en una sola operacin de lectura.
f. Nmero de registros cargados: especifica el nmero de registros que
se cargarn a memoria durante una consulta sobre el bloque (por
defecto son tres)
g. Nmero de registros desplegados: especifica el nmero 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 traern todos los registros o solo la cantidad especificada
en la propiedad

Longitud del arreglo de consulta . Se usa

comnmente cuando hay tems de resumen (por ejemplo sumas)


i.

Bloque de base de datos: especifica el tipo de bloque

j. Consulta, insercin, actualizacin y eliminacin permitida: indican las


operaciones que se pueden ejecutar sobre los registros del bloque
k. Forzar llave primaria: comnmente 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 varan de acuerdo al tipo de los
mismos. Estas son algunas de las propiedades comunes
a.

Nombre

b.

Tipo

c.

Habilitado

d.

Justificacin: indica la ubicacin en el bloque

e.

Restriccin del texto: indica la forma como se desplegar el texto


(maysculas, minsculas, etc.)

f.

Navegable con el teclado

g.

tems anterior y siguiente

h.

Tipo de dato

i.

Requerido

j.

Mscara de formato

k.

Elemento de base de datos

l.

Nombre de columna

m.

Consulta, insercin, actualizacin permitida

n.

Visible

o.

Lienzo contenedor

p.

Visible

2.2 Creacin 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 mdulo y posteriormente invocar al asistente para bloques que se
encuentra en el men herramientas.

La siguiente es una descripcin 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.

2.3 Ejercicio

En este ejercicio el objetivo es crear una forma bsica manualmente y otra usando
el asistente. Ambas formas estarn 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:
Ttulo: Ventana manual / automtica
Columnas: DEPTNO, DNAME y LOC

Tambin podremos apreciar el uso de los botones para la interaccin con la base
de datos. Finalmente se crearn 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 ms de uno (algunos maestro

detalle) los cuales estn

relacionados entre si. Para crear una relacin 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 relacin


2. Seleccionar el bloque detalle en la ventana de creacin de relaciones
3. Seleccionar las operaciones de eliminacin 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 coordinacin 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 automticamente cuando se
navega al bloque detalle y prevencin de operaciones sin registro maestro

para prevenir que se opere sobre registros hijos cuando no hay un maestro
seleccionado.
5. Escribir la operacin de JOIN
6. O seleccione un objeto existente en ambos bloques sobre el cual se basar
la relacin.

Una vez creada la relacin FORMS adicionar nuevas unidades de programa y


triggers para controlar las operaciones de coordinacin entre ambos bloques.

Es posible crear las relaciones de forma automtica. 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
relacin.

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:
Ttulo: Ventana manual / automtica
Columnas: EMPNO, ENAME, JOB , MGR, HIREDATE, SAL, COMM,
DEPTNO.

Posteriormente se debe hacer una relacin con el bloque DEPT y probar el


funcionamiento de la forma.

4. Dando forma a los mdulos


Una vez la parte funcional de los mdulos se encuentre operativa se puede centrar
la atencin sobre la interfaz grfica. La interfaz grfica constituye una parte
importante del proceso de desarrollo de una aplicacin 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 mdulos.

En esta seccin 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 travs del men herramientas y
a travs del submen asociado al botn derecho del ratn, el cual aparece al
ubicarse sobre un bloque.

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 aparecern en el mismo
3. Escribir el texto que acompaar cada columna y el ancho del campo
asociado
4. Seleccionar el estilo de layout: tabular o formulario
5. Escoger un ttulo para el marco, el nmero de registros a mostrar y la
distancia entre los mismos. Tambin 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
aadir 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 aparecern ubicados fuera de lugar. La siguiente tabla muestra la

descripcin de algunos de los botones de la barra de herramientas del editor que


se usan para aadir objetos al lienzo.

Aadir tem texto


Aadir campo de texto
Aadir marco (frame)
Aadir botn de radio
Aadir botn de chequeo
Aadir imagen
Aadir botn
Aadir tem tipo lista desplegable
Aadir tem para desplegar texto
Aadir 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 mdulo.

Existen adicionalmente algunos botones en la barra de herramientas horizontal


que nos permiten manipular la alineacin de los objetos.

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 Creacin de algunos objetos


En esta seccin veremos la forma de creacin 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 estticos y dinmicos, pero deben ser llenados de
forma manual.

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

En el grupo de registros se pueden especificar datos estticos o datos dinmicos


provenientes de una consulta a la base de datos. Comnmente se consultan
mnimo 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.

Creacin de una lista de valores manualmente


Al crear la lista de forma manual se debe establecer un valor en las siguientes
propiedades (las dems son opcionales):

a. Nombre
b. Ttulo
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.

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


involucradas en el grupo de registros y el lugar a donde retornarn 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).

Creacin 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

3. Escoger las columnas del grupo de registros que irn en la lista de valores
4. Colocar un nombre para las columnas de la lista y asignar el tem al cul
retornar la seleccin
5. Escoger el ttulo de la lista, el ancho, el alto y la ubicacin
6. Seleccionar el nmero 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 ms pginas de separadores, que
permiten al desarrollador desplegar una gran cantidad de informacin 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

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 pgina del lienzo

4.2.1.3 Listas desplegables


Las listas desplegables comnmente se crean a partir de datos estticos,
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;

Este procedimiento establece los valores de la lista obtenindolos 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 botn

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 informacin de una tabla de la
base de datos se debe ajustar la propiedad

Nombre de columna . Si desplegar

informacin de otro tem se debe ajustar las propiedades Copiar valor del tem o
Sincronizar con el tem o establecer una frmula 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 mdulo. El uso de atributos visuales contribuye a mantener la
modularidad en el desarrollo de la interfaz grfica de usuario por cuando para
cambiar la forma visual del mdulo solo basta con escoger un atributo visual
diferente.

La creacin de atributos visuales se hace de igual forma que cualquier otro objeto
del mdulo 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. Tamao
g. Peso
h. Estilo
i.

Espacio

Una vez creado un atributo visual puede asignrsele a cualquier tem en la


propiedad atributo visual .

5. Desplegando mensajes en pantalla


Las

aplicaciones

cliente

servidor

necesitan

constantemente

intercambiar

informacin con el usuario, ya sea solicitndole una entrada de datos o


simplemente desplegando informacin como advertencias o mensajes de error en
ventanas independientes de los formularios. FORMS soporta esta caracterstica a
travs de un objeto llamado ALERTA. Una Alerta es simplemente una forma con
unas caractersticas muy particulares, la mayora de las cuales son asignadas en
tiempo de ejecucin, y que permite intercambiar informacin con el usuario.

Una alerta se crea de igual forma que cualquier otro objeto de FORMS y se le
establecen propiedades como:

a. Nombre

b. Ttulo
c. Mensaje: el mensaje a desplegar.
d. Estilo: pueden crearse alertar de tipo Nota, precaucin o parada. Estas
difieren en el icono usado.
e. Etiquetas de los botones

Una alerta se invoca comnmente desde el cdigo 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 funcin MESSAGE de la


siguiente forma:

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

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


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

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 botn aplican estos triggers:

WHEN_BUTTON_PRESED
WHEN_NEW_INTEM_INSTANCE

Cada trigger es susceptible de ser programado para que ejecute una tarea
especfica 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
jerarqua 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 ejecutarn el
trigger.

Si existe ms de un trigger con el mismo nombre (o funcionalidad) en un mbito


particular Developer lanzar el que est asociado con el elemento ms bajo en la
jerarqua. 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

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 especfico. 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
botn derecho del ratn en la opcin 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.

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 excepcin 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 creacin de aplicaciones.

Como ya se ha visto, cada uno de los objetos que componen una aplicacin
cuenta con propiedades, las cuales pueden ser manipuladas en tiempo de
ejecucin usando el API. Es prcticamente imposible en un curso bsico ver todas
las funciones del API, pero abarcaremos las ms 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 genrica aplicable a casi cualquier objeto. La sintaxis es la siguiente:

Para establecer valores en las propiedades de un objeto:


SET_<OBJETO>_PROPERTY(parmetros);

Para obtener valores de las propiedades de un objeto:


GET_<OBJETO>_PROPERTY(parmetros);

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

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 tambin permite conocer su estado interno a travs variables del sistema.
La siguiente tabla contiene algunas de estas variables y su descripcin:

Variable
SYSTEM.BLOCK_STATUS

Descripcin
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

Representan el nombre o el valor del objeto

SYSTEM.CURSOR_ITEM

en

SYSTEM.CURSOR_RECORD

actualmente. Por ejemplo:

donde

el

cursor

est

ubicado

curblk := :System.Cursor_Block;
IF

curblk

'ORDERS'

THEN

Go_Block('ITEMS');

IF

:System.Cursor_Record

Go_Item('orders.total');
ELSE Previous_Item;

'1'

THEN

END IF;
SYSTEM.CURRENT_BLOCK

Representan el nombre del bloque o el

SYSTEM.CURRENT_ITEM

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 ms usadas en la


construccin de aplicaciones:

Ubicar una ventana en la pantalla


SET_WINDOW_PROPERTY( NOMBRE , POSITION, X, Y)

Cambiar el tamao de una ventana


SET_WINDOW_PROPERTY( NOMBRE , WINDOW_SIZE, X, Y)

Minimizar o maximizar una ventana

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 botn


DO_KEY(LIST_VALUES

ENTER_QUERY

EXECUTE_QUERY

CREATE_RECORD | DELETE RECORD | COMMIT_FORM )

7. Validacin
Forms valida los tems asegurando que cumpla con sus propiedades establecidas.
Las validaciones ocurren cuando:
Se navega fuera de una unidad de navegacin: esto ocurre cuando un
usuario presiona ciertas teclas de funcin o presiona el ratn fuera de una
unidad de validacin.
Cuando se invoca la funcin 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 validacin

El proceso de validacin consiste en verificar primero el estado del tem o registro;


si este es invlido entonces se hace la validacin estndar (contra las
propiedades) y luego se ejecuta el trigger WHEN_VALIDATE. La validacin 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 validacin estndar 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
navegacin hacia l, restringir un rango de valores, etc.

Para tems de tipo texto


Propiedad
Mscara de formato

Descripcin

Cmo se usa

Restringe el formato de dd-mm-rrrr


entrada de un valor

dd-mon-rr
9999
$9999.99

Valor mnimo permitido

Establece el valor mnimo 1

que puede tomar


Valor mximo permitido

Establece el valor mximo 100


que puede tomar

Validar de la lista

100

200

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 validacin, 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 cdigo PL/SQL necesario para realizar la validacin. El siguiente
ejemplo muestra el cdigo 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;

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


avance a los tems siguientes se debe invocar la excepcin predefinida
FORM_TRIGGER_FAILURE.

7.3 Ejercicio
Este ejercicio consiste en agregar una validacin sobre el campo JOB para que los
cargos que el usuario ingrese estn dentro de la lista de JOBS permitidos.

8. Creacin de mens
Como se explic al inicio, un men es tambin un mdulo en Oracle FORMS.

La forma ms rpida de crear un men es usando el Editor. El editor de mens es


una herramienta de FORMS que permite crear mens y mens desplegables.
Para invocar el Editor puede hacerse por la opcin existente en el men
Herramientas o directamente por el submen asociado al botn derecho del ratn
al hacer clic sobre el mdulo.

La pantalla inicial del editor de men muestra la primera opcin disponible. Cada
opcin puede tener asociado un submen el cual se crear usando el mismo
editor.

El editor de men cuenta con los siguiente botones para la creacin de mens y
submens.

Crear un submen
Crear otro men
Eliminar un men o submen

Cada opcin del men o submen debe ser programada para ejecutar una accin
especfica, de lo contrario, al compilar el mdulo aparecern errores. Comnmente

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


aplicacin.

8.1 Invocando formas desde el men


Para invocar una forma desde una opcin de men basta con incluir el siguiente
cdigo en la opcin deseada:

CALL_FORM( NOMBRE );

Una vez establecidas todas las opciones del men y programado su cdigo se
debe compilar el men. Esto se puede lograr usando la combinacin de teclas
CTRL+T o directamente en el men archivo, opcin administracin, opcin
compilar archivo.

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


en la propiedad mdulo men . En esta propiedad se debe escribir el nombre del
mdulo men.

8.2 Invocando reportes desde el men


De igual forma en que se invocan formas desde el men es posible invocar
tambin mdulos de otros componentes de Developer como REPORTS

GRAPHICS. Para hacerlo se usa la siguiente instruccin:

RUN_PRODUCT

(PRODUCTO,

MODULO,

MODO_COMUNICACIN,

MODO_EJECUCIN, UBICACION,
LISTA_PARAMETROS , DISPLAY);

Donde:

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


GRAPHIS.
MODULO: es el nombre del mdulo a invocar.

MODO_COMUNICACIN: especifica el modo de comunicacin 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_EJECUCIN: indica el modo de ejecucin usado por el producto
invocado. Puede ser BATCH o RUNTIME.
UBICACIN: indica la ubicacin del archivo. Puede ser FILESYSTEM o DB.
LISTA_PARMETROS: contiene la lista de parmetros que se pasarn al reporte
en caso de necesitarlos. Si no se pasan parmetros debe enviarse la lista vaca.
DISPLAY: especifica el nombre del tem tipo CHART en el cual se desplegar el
resultado de la invocacin del producto GRAPHICS.

Por ejemplo, para invocar un reporte llamado REP_EMP se usara el siguiente


cdigo:

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 opcin debe tener un submen con
una opcin llamada mantenimiento la cual invocar la forma para tal fin. La opcin
salir solamente debe cerrar las formas.

9. Ejercicio final
El ejercicio final pretende poner en prctica 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 aplicacin para mantener la
informacin de sus departamentos y empleados. Deben existir pantallas
exclusivas para el ingreso de departamentos y de rangos salariales de los
empleados. Debe tener tambin la posibilidad de consultar un departamento a la
vez, con sus respectivos empleados en donde pueda observarse toda la
informacin del departamento, toda la informacin 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 lmites para su rango. Es deseable que para cada validacin
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.

Potrebbero piacerti anche