Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
PREPARADO POR
JUAN CARLOS ERAZO M.
1. GENERALIDADES
6
8
2.3 EJERCICIO
10
10
3.1 EJERCICIO
12
12
12
13
15
15
18
19
20
20
20
21
6. USANDO TRIGGERS
23
23
25
7. VALIDACIN
29
29
30
31
8. CREACIN DE MENS
31
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.
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.
Mdulo
Lienzo
Bloque
tem
Origen 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.
e.
f.
g.
h.
Tipo de dato
i.
Requerido
j.
Mscara de formato
k.
l.
Nombre de columna
m.
n.
Visible
o.
Lienzo contenedor
p.
Visible
La siguiente es una descripcin de los pasos usados para el Asistente para crear
un bloque de datos:
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
relacionados entre si. Para crear una relacin entre dos bloques (ya deben estar
creados ambos bloques) se deben seguir los siguientes pasos:
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.
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.
En esta seccin veremos como usar el asistente para el layout y como crear
atributos visuales para aplicar sobre los objetos.
Una vez finalizado el asistente aparecer el editor de layout con los registros
ubicados en el lienzo, tal como lo muestra la siguiente figura:
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.
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.
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.
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.
Una vez creada la lista se debe asignar esta a un tem en la propiedad lista de
valores (LOV).
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
Para crear un lienzo con separadores se deben seguir estos sencillos pasos:
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;
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
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.
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
aplicaciones
cliente
servidor
necesitan
constantemente
intercambiar
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
DECLARE
Alert_id
Num
number;
BEGIN
Set_alert_property(alert_id, ALERT_MESSAGE_TEXT, Error en la forma );
Num := show_alert(alert_id);
END;
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.
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 .
ON_COMMIT,
ON_ERROR,
ON_PULATE_DETAILS,
ON_ROLLBACK.
POST_QUERY,
POST_DELETE,
POST_COMMIT,
POST_UPDATE,
POST_TEXT_ITEM, POST_BLOCK.
De eventos inmediatos:
WHEN_BUTTON_PRESED, WHEN_CREATE_RECORD,
WHEN_LIST_ACTIVATED, WHEN_NEW_ITEM_INSTANCE,
WHEN_VALIDATE_ITEM
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.
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
SYSTEM.CURSOR_BLOCK
SYSTEM.CURSOR_ITEM
en
SYSTEM.CURSOR_RECORD
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
SYSTEM.CURRENT_ITEM
SYSTEM.LAST_RECORD
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;
Donde
PROPERTY
puede
ser:
current_record_attribute,
default_where,
NEXT_BLOCK
PREVIOUS_ITEM
NEXT_ITEM
PREVIOUS_RECORD
NEXT_RECORD
ENTER_QUERY
EXECUTE_QUERY
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
Descripcin
Cmo se usa
dd-mon-rr
9999
$9999.99
Validar de la lista
100
200
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;
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 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
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.
RUN_PRODUCT
(PRODUCTO,
MODULO,
MODO_COMUNICACIN,
MODO_EJECUCIN, UBICACION,
LISTA_PARAMETROS , DISPLAY);
Donde:
DECLARE
List_par
paramlist;
BEGIN
List_par := create_parameter_list( lista );
RUN_PRODUCT(REPORTS,
REP_EMP ,
SYNCHRONOUS,
RUNTIME,
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.
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.