Está en la página 1de 18

Recomendaciones

Ampliar la memoria virtual del ordenador cuando trabajeis en casa (pueden aparecer errores

por falta de espacio en el heap en algunos casos)

Guin de Prcticas
Oracle Forms
Oracle Reports

Tener siempre abierto un navegador Internet Explorer (a veces la visualizacin de algunos


formularios puede fallar si no estaba abierto el navegador)
Antes de empezar a utilizar Forms Developer o Reports Developer, ambos en la carpeta de
programas Oracle Developer Suite DevSuiteHome1, arrancar una instancia OC4J utilizando el
programa que aparece en la carpeta Forms Developer o Reports Developer.
Cuando se entra en oradev en las aulas, justo antes de identificarse, se aplican los parches de
las imgenes. En ocasiones, si se entra muy rpido, no da tiempo a que se apliquen. El
problema que da esto, es que la instancia del servidor OC4J no se levanta. En ese caso, cerrar
sesin y volver a entrar, y por lo general se soluciona.

Taller Mecnico. Requisitos


La gestin se centra en dos grupos de funciones de consulta y mantenimiento: el libro de

contabilidad y la lista de personas que trabajan en el taller junto con sus direcciones y
cualificacin.
El libro de contabilidad registra las transacciones financieras:
Cantidades de bienes comprados y vendidos
Jornadas pagadas y cantidades recibidas

Lista de personas con sus direcciones y cualificaciones


Personas involucradas en las transacciones y en los trabajos del taller. Representar a ambos
tipos de personas en un mismo conjunto de entidades

Taller Mecnico. Requisitos


Funciones que el software de aplicacin habr de tratar:
Representar las personas y organizaciones con las que interacta en una lista
central a disposicin de contabilidad y personal para consulta y
mantenimiento. Deseable facilitar la correccin de fallos en la lista
Seguimiento de todas las transacciones del taller, incluyendo tipo (compra,
venta, pago, ingreso), descripcin del artculo, nmero unidades, importe
unitario, total. Disponible para consulta y realizacin de auditorias
Para auditora todas las transacciones deben quedar registradas. Deseable
que la aplicacin pudiese generar automticamente el importe de la
transaccin a partir de la cantidad y el precio. Que puedan ordenarse por
cualquier campo
Mantener una lista de los trabajadores para realizar contactos y pagos.
Direcciones correctas y actualizadas. Poder generar etiquetas de correo
Mantener un lista de de cualificaciones y competencias de los trabajadores
para asignacin de trabajos. Aadir un valoracin para cada cualificacin

Taller Mecnico. Diseo BD

Taller Mecnico. Diseo BD


Diseo lgico relacional:

Diseo conceptual utilizando E/R

Alojamiento(Alojamiento, NomCompleto, Director,Direccion)


Nombre

Edad

Valoracion

Cualif

Decripcion

EmpCualif(Nombre, Cualificacion, Valoracion)


Persona(Nombre,Edad,Alojamiento)
LibroCuentas

Relativoa

Persona

Trabajador Posee

Cualificacion

Cualificacion(Cualificacion, Descripcion)
LibroCuentas(Apunte#, Fecha, TipoOperacion, Item, Cantidad, TipoCantidad,
Apunte#

Fecha

TipoOp

Item

B)FormularioEmpleado
Cualificacion

Viveen

PrecioUnitario, Total, Persona)

Diseo Fsico.
Total

Cantidad

TipoCant

PrecioUnitario

El archivo h:\ccia\orawin95\tmp\CreaTaller.sql contiene las sentencias sql que permiten la creacin de la


BD, donde se contempla, adems, la creacin de una secuencia para la generacin de cdigos de
apuntes. h:\ccia\orawin95\tmp\DatosTaller.sql introduce algunos datos en esa BD.

Alojamiento

A)FormularioLibroCuentas

Aloja-miento

NombComplet

Adems de establecer los tipos y tamaos para los campos, se establece mediante una clusula check los
valores permitidos para el campo TipoOperacion. Posteriormente se pueden crear ndices para
mejorar la consulta
Director

Direccion

C)InformeAlojamientos
5

Taller Mecnico. Diseo Funcional


El formulario Libro de Contabilidad debe llevar a cabo las siguientes tareas:
Debe permitir la introduccin de transacciones contables con todos sus datos
Generar identificadores nicos para cada apunte

Taller Mecnico. Diseo Funcional


El formulario EmpleadoCualificacin se va encargar de mostrar las
cualificaciones que presenta cada empleado. Para eso se utilizar un
maestro-detalle basado en el esquema de datos B)

La transaccin debe ligarse a una persona presente en la BD

El registro maestro (empleado) ser de slo lectura

Calcular el total a partir de precio unitario y cantidad

Enlaza con los detalles (las cualificaciones)

Evitar que alguien no autorizado pueda actualizar o borrar transacciones

Sera interesante poder seleccionar la cualificacin de la lista de cualificaciones


almacenada en la tabla correspondiente

Consultas y ordenacin por distintos criterios

Adoptaremos una representacin tabular basada en el esquema de datos A) de


la figura que muestre varias transacciones a la vez y quizs una lista de
valores o desplegable para seleccionar la persona implicada en la
transaccin

Necesarios formularios para mantener Persona, EmpCualif, Cualificaciones y Alojamiento


Informe Resumen Libro basado en el esquema de datos A):

Obtener las transacciones agrupadas por persona, en orden cronolgico y total para
cada persona
Informe Direcciones basado en el esquema de datos C):
Para obtener la direccin de cada persona para correspondencia. Salida de etiquetas
de diversos tamaos.
Antes de comenzar crearemos el siguiente directorio: u:\DDSI donde ubicaremos todos
los ficheros relacionados con los tutoriales y ejercicios

Formulario Empleado. 1er Prototipo

Formulario Empleado. 1er Prototipo

Procedimiento para crear el formulario:


Cread el bloque persona que muestra un nica persona
Cread como detalle el bloque cualificaciones asociadas a cada
persona
Aadid una lista desplegable que permita seleccionar una cualidad
de la misma
Organizad el formulario
Ejecutad y almacenad la aplicacin

Creacin del bloque persona


Ejecutad Form Builder
Activad Asistente de Bloques
de Datos

Pulsad Siguiente
9

Formulario Empleado. 1er Prototipo

10

Formulario Empleado. 1er Prototipo

Pulsad Examinar

Pulsad Terminar para entrar en el Asistente de Diseo

Introducid vuestro Usuario y Clave, dejando en blanco Cadena de Conexin

Avanzad hasta Visualizar (seleccionar) nombre y pulsad Terminar

Visualizad vuestras tablas y vistas y seleccionad persona. Seleccionar NOMBRE.

Ya tenemos nuestro primer bloque!

11

12

Formulario Empleado. 1er Prototipo


Creacin del bloque Cualificacin

Formulario Empleado. 1er Prototipo


Creacin del bloque Cualificacin

Marcad el bloque persona


Para crear otro bloque pulsad

Aceptad la utilizacin del Asistente de Bloques de Datos


Seleccionad la tabla EmpCualif y utilizad todos sus campos.
Avanzad y pulsad Crear Relacin
Seleccionad la tabla Persona como maestro

13

14

Formulario Empleado. 1er Prototipo

Formulario Empleado. 1er Prototipo

Continuad con el Asistente de Diseo

Ya tenemos el esqueleto de nuestro primer formulario!

Visualizad slo los campos Cualificacin y Valoracin


Elegid el estilo Tabular para presentar los resultados

Despus poned Cualificacin en el Ttulo del Marco


Visualizad 6 registros y activad Visualizar Barra de Desplazamiento
Pulsad Terminar

15

16

Formulario Empleado. 1er Prototipo

Formulario Empleado. 1er Prototipo


Para dotarla de carcter dinmico necesitamos:

Lista de Cualificaciones.
Vamos a crear una lista dinmica para seleccionar cualificaciones, generada a partir de la tabla
Cualificaciones
Pulsad sobre Cualificacin, botn
derecho y abrir la Paleta de Propiedades
con los atributos del elemento Cualificacin
Estableced los atributos Tipo de
Elemento, Estilo de la Lista y
Correspondencia de Otros valores

Escribir una consulta que obtenga los valores de la tabla Cualificaciones


Escribir un procedimiento PL/SQL que la rellene con los datos de la tabla
Cualificacin
Crear un disparador que actualice su contenido en el momento oportuno

Para crear esta consulta, que es un Grupo de Registros, realizad:


En el Navegador de Objetos marcad Grupo de Registros y pulsad
Introducid
Llamadlo Cualificacion

como muestra la figura


Pulsad en el valor de
Elementos de la Lista
y estableced al
menos un elemento

para la lista
que se encuentre
en la tabla Cualificacin

17

Formulario Empleado. 1er Prototipo

18

Formulario Empleado. 1er Prototipo

En la ventana de edicin introducimos el siguiente cdigo:

Compilamos el mdulo
Salvamos la biblioteca con el nombre MiBiblioteca
Marcamos la biblioteca y la compilamos (Programa | Compilar Seleccin)
Marcamos Bibliotecas Conectadas bajo el Modulo1 y pulsamos
seleccionando MiBiblioteca

Dada la generalidad de este proceso


vamos a crear un procedimiento
reutilizable que vamos a incorporar a
nuestra biblioteca para posteriores usos
Creamos una biblioteca.
Marcamos Bibliotecas PL/SQL y pulsamos
Marcamos Unidades de Programa y pulsamos
Introducimos

19

20

Formulario Empleado. 1er Prototipo


Vamos a utilizar un disparador WHEN-NEW-FORMINSTANCE para determinar que la lista de valores se
actualice con los valores de la tabla Cualificacin
Marcad Disparadores pulsad
Seleccionad el mencionado disparador

Formulario Libro de Cuentas. Ejercicio


Realizad el formulario correspondiente al libro de cuentas (llamadlo
libro.fmb) de acuerdo con el aspecto de la figura y los siguientes requisitos:
Debe incluir todos los campos de la tabla correspondiente
Debe tener forma tabular (varias transacciones a la vez)
Una lista esttica sobre TipoOperacion (Compra,Venta,Pago,Ingreso)
Una lista dinmica sobre Persona con datos de la tabla Persona

En la ventana introducid el cdigo:


llena_listas('empcualif.cualificacion','
cualificacion');
Compilad y cerrad

Ejecutad el formato, comprobad los resultados y


almacenad como empleado si todo ha estado
conforme
21

Informe Contabilidad. 1er Prototipo

22

Informe Contabilidad. 1er Prototipo

El informe agrupar por personas las entradas y


mostrar los subtotales de las mismas:
Iniciar Report Builder. Ir a Herramientas/Asistente de Informes
Seleccionar Diseo Web y Disposicin en Papel
En la pestaa Estilo, en Ttulo ponemos: Taller Mecnico
Seleccionamos el estilo Agrupar a la Izquierda puesto que queremos
agrupar por personas. Pulsad Siguiente
En esta pantalla seleccionamos SQL query
Escribimos la consulta:
SELECT Persona, Fecha, Item, Cantidad, PrecioUnitario, Total FROM
LibroCuentas

Pulsamos siguiente y damos datos para conectarnos (Usuario,


Clave)
La siguiente pantalla solicita los campos sobre los que agrupar el
informe. Introducid Persona. Pulsad Siguiente
En esta pantalla se solicita los campos a visualizar en el informe.
Introducidlos todos como muestra la figura
23

Pulsad Siguiente. La pantalla de los totales solicita los campos a agregar. Nosotros
queremos obtener las sumas de los totales por persona. Seleccionamos Total y
pulsamos el botn Suma
Pulsad Terminar para obtener en el Visor Activo la vista preliminar del informe
generado. Es preciso retocarlo un poco para mejorar la presentacin

24

Informe Contabilidad. 1er Prototipo


Dimensionad los campos para que ocupen menos espacio. Cambiad el formato
de la fecha y la etiqueta asociada. Salvad como LibroContabilidad.rdf

Elementos de los Formularios. Ventanas


Canvas o Lienzos Son elementos de diseo sobre el que se sitan los
otros elementos. Una ventana acta como un visor sobre el lienzo
permitiendo desplazarse por su contenido. Tipos:
Contenido: Elemento contenedor de otros. Una ventana debe tener al menos
un lienzo de este tipo
Apilado: Un lienzo que se muestra encima de otros. Suelen tener elementos
independientes
Tabular: Lienzo de contenido que organiza el contenido de una ventana a
modo de fichas
Barra de Herramientas: Lienzo que contiene botones con iconos que la
ventana muestra en barras verticales y horizontales

El tipo del lienzo se puede seleccionar mediante la propiedad Tipo de


Lienzo
La ventana que lo visualiza tambin se puede seleccionar desde la
hoja de propiedades

Todo elemento debe de estar asignado a un lienzo para ser


visualizado. Si perseguimos que no se visualice ponemos NULL en
su propiedad Lienzo
25

Elementos de los Formularios. Ventanas


Cuando se crea un Bloque de Datos se crea un lienzo por defecto
Tambin se puede crear manualmente desde Navegador de Objetos y
dimensionar en su hoja de propiedades o en el Editor de Diseo
Cuando se visualiza una ventana se visualiza el lienzo base, para
visualizar otros lienzos se utilizan los procedimientos predefinidos
Show_View y Hide_View desde disparadores
Ejemplo: Lienzos apilados. Vamos a crear un formulario con Persona
como maestro y LibroCuentas como detalle en un lienzo apilado
que permita visualizar los apuntes de cada persona desplazndose
horizontalmente por los mismos mientras se mantiene
visualizados los datos de la persona correspondiente:

26

Ventanas. Lienzos Apilados


Seleccionad la tabla LibroCuentas y todos sus campos
Solicitad la creacin de una Relacin con la tabla Persona entre los campos
persona y nombre
Entrad en el Asistente de
Diseo y estableced los
valores de la figura
Visualizad todos los
Campos excepto persona

Abrid Forms Builder y utilizad el asistente para crear un bloque sobre


Persona del que slo vamos a visualizar el campo nombre
En el Editor de Diseo Desplazad el frame un poco hacia arriba
Seleccionad el correspondiente Canvas donde se incluye el frame en el
Navegador de Objetos y dimensionadlo en el Editor de Diseo de forma que
se ajuste ms o menos al frame
Ejecutad de nuevo el Asistente de Bloques para crear el bloque LibroCuentas
27

28

Ventanas. Lienzos Apilados


Modificad los valores de Ancho
de acuerdo con la
figura
Visualizad unos 5
registros con
barra de desplazamiento

29

Ventanas. Lienzos Apilados

Aspecto de los lienzos de Persona y LibroCuentas apilados en el Editor de Diseo


31

Ventanas. Lienzos Apilados


Editad las propiedades del lienzo apilado y poned
los valores de la figura
Con el Editor de Diseo dimensionad los lienzos y
frames de los dos bloques de forma que rodeen los
grupos de registros sin superponerse
Editad el lienzo del bloque persona
y pulsad en el men Ver|Vistas Apiladas...
Seleccionad el lienzo que aparece por defecto y
aceptar. Esta operacin permite superponer los dos lienzos en la misma
ventana de edicin.
Si queremos eliminar la superposicin realizamos la anterior operacin y,
mientras pulsamos la tecla Ctrl, pinchamos el lienzo que queremos desactivar,
aceptando despus
Ved figura de la transparencia siguiente
Editad las propiedades de WINDOW1 en Navegador de Objetos/Ventanas y
estableced: Ancho: 300 y Alto: 280
Ejecutad, consultad y desplazaos utilizando la barra horizontal del canvas de
LibroCuentas
Modificad lo que sea necesario y salvad como apilado.fmb
30

Ventanas. Lienzos Apilados

Aspecto del formulario en ejecucin


32

Ventanas. Lienzos Tabulares


Es un tipo de carpeta que, cuando se pulsa sobre la solapa, se muestra la
pgina correspondiente

Vamos a crear el formulario Recursos Humanos, que asocie a cada persona


(maestro) sus capacidades (detalle) por un lado y los datos de alojamiento
(detalle) por otro:
Abrid Forms Builder y utilizad el asistente para crear el bloque Persona con las
siguientes caractersticas:
Basado en la tabla persona, que utilice todos los campos de dicha tabla
En el Asistente de Diseo asignadle la creacin de un lienzo nuevo de tipo
Contenido
Visualizad nicamente nombre y edad
Visualizadlo en formato Pantalla, el titulo del Marco Persona, visualizad un slo
registro y la barra de desplazamiento
Verificad el correcto funcionamiento y salvad como RecursosHumanos.fmb

Cread el bloque detalle EmpCualif con las siguientes caractersticas:


Basado en la tabla del mismo nombre con todos sus campos
La condicin que lo relaciona con Persona, que va a ser su bloque maestro, estar
basada en la igualdad del campo nombre

33

Ventanas. Lienzos Tabulares

Ventanas. Lienzos Tabulares


En el Asistente de Diseo
lAsignadle un lienzo nuevo (Nuevo Lienzo) de tipo Separador y
(Nueva Pgina de Separador)
lVisualizad cualificacin y valoracin
lElegid una presentacin tabular visualizando 5 registros y la barra de
desplazamiento
lVisualizad la Paleta de Propiedades de la Pgina de Separador en el Navegador
de Objetos y estableced: Etiqueta: Cualificacion
lSalvad con el mismo nombre
Cread el bloque Alojamiento:
lSobre la tabla del mismo nombre utilizad todos sus campos
lCread la relacin detalle con el bloque persona como maestro (desactivad antes
Unir automaticamente bloques de datos) basada en una condicin de unin sobre
el campo alojamiento
lUtilizad el mismo lienzo que para el bloque EmpCualif y una nueva pgina
(Nueva Pgina de Separador)
lVisualizad todos los campos salvo alojamiento y pulsad Terminar para aceptar el
resto de los valores por defecto
Visualizad la Paleta de Propiedades de la Pgina de Separador en el Navegador
de Objetos y estableced: Etiqueta: Alojamiento
34

Ventanas. Lienzos Tabulares

Redimensionad y ubicad los lienzos:


lSeleccionad CANVAS4 y en la Paleta de Propiedades poned: Posicin Y de
Viewport en el lienzo: 85 para situar el lienzo bajo el de persona;
lRedimensionad el lienzo de Persona para que rodee el Marco
lRedimensionad CANVAS4 para que rodee la solapa de Alojamiento, en sus
propiedades poned Bisel: Ninguno para que no se visualice en ejecucin el
borde del lienzo. Dimensionad WINDOW1 para que rodee el lienzo.
lAseguraos de que el bloque Persona est el primero en la lista de bloques
l Comprobad usando el modo Ver/Vistas Apiladas que todo est correcto
lEjecutad, corregid y salvad

Diseo visualizado en modo Ver|Vistas Apiladas...


35

36

Ventanas. Lienzos Tabulares

Visualizacin de Lienzos mediante Ventanas


Developer utiliza la arquitectura MDI (Interfaz de Mltiples
Documentos). En ejecucin, Developer dispone una ventana principal
de aplicacin, que no dispone de lienzos, mediante la que visualiza el
resto de las ventanas de documento o de dilogo
Estas ltimas ventanas deben tener asociado un lienzo al menos
El men principal pertenece a la ventana principal, que siempre est
abierta
Las ventanas de tipo documento tienen restringida su visualizacin a la
ventana principal
Las ventanas de dilogo pueden visualizarse fuera
Otro criterio de clasificacin de ventanas modales o no modales:
Las modales requieren de una respuesta del usuario al mensaje que ofrecen
para desaparecer y, en algunos casos, permitir continuar con la aplicacin
(cuadros de dilogo)
Las no modales permite acceder a otra ventana sin hacerla desaparecer

Formulario RecursosHumanos en Ejecucin


37

Visualizacin de Lienzos mediante Ventanas


La ventana de aplicacin se corresponde con el formulario que se
ejecuta actualmente. De esta forma:
El men principal que se ejecuta es el men del formulario
Podemos incluir barras de herramientas horizontales y verticales mediante el
empleo de las propiedades Lienzo de la Barra de Herramientas Horizontal y
Lienzo de la Barra de Herramientas Vertical del formulario, respectivamente
El procedimiento predefinido Set_Window_Property permite establecer de
forma programada las propiedades de las ventanas. Para modificar las
correspondientes a la ventana principal debemos pasar como primer
argumento la referencia FORMS_MDI_WINDOW

En entornos que no soportan MDI, como Java (Web), Motif y Macintosh


hay que recurrir al empleo de una ventana raiz. El empleo de esta
ventana slo tiene sentido en estos entornos si queremos dotarlos de
MDI. La ayuda en lnea muestra la forma de utilizar esta caracterstica
Propiedades Funcionales de las ventanas:
Cierre Permitido (S|No) si permitimos que, en ejecucin, el usuario cierre la
ventana
Dimensionamiento Permitido (S|No) si permitimos que, en ejecucin, el
usuario redimensione la ventana

39

38

Visualizacin de Lienzos mediante Ventanas


Minimizacin Permitida (S|No) permitir o no la minimizacin
Maximizacin Permitida (S|No) permitir o no la maximizacin
Movimiento Permitido (S|No) permitir o no el desplazamiento de la ventana
Heredar Men (S|No) si muestra o no el men del formulario (no es operativo en Microsoft
Windows)

Propiedades Estructurales de las ventanas:


Lienzo Primario, el lienzo que muestra en primer lugar
Lienzo de Barra de Herramientas Vertical y Horizontal, las barras de herramientas
verticales y horizontales a mostrar
Estilo de Ventana (Documento|Dilogo), tipo de ventana
Modal (S|No) si es o no modal
Ocultar al Salir (S|No) si oculta la ventana o no cuando se navega a otra
Nombre de Fichero del Icono, Ttulo minimizado, nombre del archivo del icono que
aparece cuando se iconifica y ttulo del mismo
Mostrar Barra de Desplazamiento Horizontal y Vertical, si muestra o no las
correspondientes barras de desplazamiento

Abrir y cerrar ventanas:


Utilizando disparadores que desencadenen la navegacin hacia, o fuera de una ventana

40

Elementos de los Formularios. Ventanas


Canvas Son elementos de diseo sobre el que se sitan los otros
elementos. Una ventana acta como un visor sobre el canvas
permitiendo desplazarse por su contenido. Tipos:
Contenido: Elemento contenedor de otros. Una ventana debe tener al menos
un canvas de este tipo
Apilado: Un canvas que se muestra encima de otros. Suelen tener elementos
independientes
De fichas: Canvas de contenido que organiza el contenido de una ventana a
modo de fichas
Barra de Herramientas: Canvas que contiene botones con iconos que la
ventana muestra en barras verticales y horizontales

El tipo del canvas se puede seleccionar mediante la propiedad Canvas


Type
La ventana que lo visualiza tambin se puede seleccionar desde la
hoja de propiedades

Todo elemento debe de estar asignado a un canvas para ser


visualizado. Si perseguimos que no se visualice ponemos NULL en
su propiedad Canvas
41

Ventanas de Aviso o Alertas


Ejercicio: Crear una nueva alerta de tipo NOTA llamada Bienvenido.
Muestre el mensaje 'Bienvenido a la aplicacin de Recursos Humanos'.
Crear ahora un disparador WHEN-NEW-FORM-INSTANCE con el
siguiente cdigo:
DECLARE
boton NUMBER;
BEGIN
boton := Show_Alert('Bienvenido');
IF boton = ALERT_BUTTON1 THEN
NULL;
END IF;
END;

Podemos crear elementos de aviso reutilizables. Consideremos el


siguiente cdigo que permite gestionar genricamente la aparicin de
avisos de tipo informativo:

Ventanas de Aviso o Alertas


Developer dispone de un mecanismo especfico para alertas o avisos que
simplifica su programacin, de hecho lo utiliza automticamente para
visualizar ciertos mensajes
Para crear un aviso seleccionamos el objeto Alertas en el Navegador de Objetos y
pulsamos create
Dispone de tres clases de avisos que se pueden especificar mediante la
propiedad Estilo de Alerta: Parar, Atencin y Nota este ltimo es del estilo
del que hemos creado recientemente
La propiedad Mensaje permite introducir el mensaje a mostrar en el aviso. Las
propiedades Etiqueta del Botn 1, Etiqueta del Botn 2 y Etiqueta del
Botn 3 permiten etiquetar los botones que muestra el aviso, si no se
introduce etiqueta el aviso no muestra el botn correspondiente
Se debe designar un botn como botn por defecto cuando el usuario pulsa
Enter
Para determinar la aparicin de un aviso se utiliza la funcin predefinida
Show_Alert desde el cdigo de un disparador, la funcin devuelve el nmero
ALERT_BUTTON1, ALERT_BUTTON2, ALERT_BUTTON3, dependiendo de que
botn haya sido pulsado, en el cdigo del disparador se programarn las
acciones apropiadas en funcin del botn pulsado

42

Ventanas de Aviso o Alertas


Desde el Navegador de Objetos, en el objeto Bibliotecas PL/SQL abrimos la
biblioteca mibiblioteca.pll
Creamos una nueva unidad de programa que va a llamar muestra_informacion y
contiene el cdigo mostrado en la transparencia anterior. Lo compilamos y
cerramos el editor y, seleccionando mibiblioteca, pulsamos Guardar.
En Bibliotecas Conectadas del Formulario RecursosHumanos, no de Bibliotecas
PL/SQL, asociamos la biblioteca mibiblioteca si todava no la tenemos
asociada
Creamos una nueva alerta (Alertas) que se va a llamar informativo y va a ser de
tipo nota (Estilo de Alerta: Nota)
Creamos o utilizamos un disparador a nivel de formulario de tipo WHEN-NEWFORM-INSTANCE cuyo cdigo ser el siguiente:
muestra_informacion('Bienvenido','Bienvenido a la Aplicacion Recursos Humanos');

PROCEDURE muestra_informacion (titulo IN VARCHAR2, mensaje IN


VARCHAR2) IS
avisoID Alert := Find_Alert('Informativo');
ignora NUMBER;
BEGIN
Set_Alert_Property(avisoID, TITLE, titulo);
Set_Alert_Property(avisoID, ALERT_MESSAGE_TEXT, mensaje);
ignora := Show_Alert(avisoID);
END;
43

Ejecutamos y salvamos
Situad el bloque dialogo al final para que no se muestre la ventana de ayuda que
lo contiene
Ejercicio. Modificad el ejercicio para que permita seleccionar el tipo de alerta

44

Barras de Herramientas

Barras de Herramientas

Vamos a construir una barra de herramientas con el siguiente aspecto

y con la siguiente funcionalidad:


El primer botn visualiza la persona anterior, el segundo la persona siguiente
El botn salvar almacena todos los cambios producidos
El botn salir muestra la ventana de aviso:
donde, la primera opcin almacena y sale
la segunda sale sin almacenar y la tercera
cancela la salida

Para ello acometemos los siguientes pasos:


Cread un lienzo de tipo barra de herramientas (Tipo del Lienzo: Barra de Herramientas
Horizontal) denominado Herramientas, visualizadlo en Window1 (Ventana: WINDOW1)
estableced Altura: 28
Editad este lienzo en el Editor de Diseo y aseguraos que en Bloque: ponga persona para que
los elementos que aadamos estn asociados a ese bloque
Utilizando la barra de herramientas vertical del Editor de Diseo seleccionar, ubicad y
dimensionad cuatro botones en forma similar a la figura de arriba

45

Barras de Herramientas

Los nombres y etiquetas respectivas de esos botones son: anterior y <,


posterior y >, salva y Salvar, salida y Salir
Seleccionad de forma mltiple los cuatro botones (mientras se mantiene
pulsada la tecla Maysculas se van seleccionado los botones con el ratn) y
visualizad la Paleta de Propiedades y estableced las propiedades Teclado
Navegable y Navegacin del Ratn No. Esto hace que la navegacin no
permanezca en ninguno de estos botones
Cread un nuevo aviso (Alertas) y estableced las propiedades: Nombre: Salir,
Estilo de Alerta: Atencin, Etiqueta de Botn 1: Si, Etiqueta de Botn 2:
No, Etiqueta de Botn 3: Cancela
Ahora debemos asociar a cada botn la funcin a realizar cuando se pulsa. El
disparador WHEN-BUTTON-PRESSED se activa cuando pulsamos ese botn
y ejecuta el cdigo asignado al mismo, por tanto utilizaremos ese
disparador para cada uno de los botones:
Expandimos el botn en el navegador de objetos y creamos un
disparador para el botn.
Creamos un disparador de este tipo para el botn ANTERIOR con el
cdigo: do_key('up');
Para el botn POSTERIOR el cdigo es: do_key(down');
Para el botn SALVA el cdigo es: commit_form;
46

Barras de Herramientas

Para el botn SALIDA el cdigo es algo ms complejo:


DECLARE
boton NUMBER;
BEGIN
SET_ALERT_PROPERTY('salir',ALERT_MESSAGE_TEXT,'Quieres almacenar
los cambios antes de salir?');
boton := show_alert('salir');
if boton = ALERT_BUTTON1 then
commit_form;
end if;

if boton <> ALERT_BUTTON3 then


exit_form(no_commit);
end if;
end;

Ejecutad y verificad el funcionamiento, corregid y salvad


Formulario en Ejecucin
47

48

Bloques. Elementos
Los bloques son elementos funcionales normalmente
asociados a tablas aunque pueden actuar como marco que
agrupa elementos de control
Los elementos que contiene pueden recurrir al empleo de
algunos de los siguientes componentes o caractersticas:
Listas que pueden ser de cuatro tipos:
Lista emergente: Una lista desplegable del tipo visto
Lista T: Un cuadro que muestra todos los elementos de texto en
una lista desplazable, como un canvas independiente, pero
dentro de un nico campo de formulario
Recuadro de Combinacin: Combinacin de lista emergente y de
campo de texto, permite introducir valores distintos a los de
la lista
Lista de Valores (LOV List of Values): Un cuadro de dilogo con
posibilidades de bsqueda que se puede asociar a un campo
de texto

Botones de opcin para crear opciones mutuamente exclusivas


Campos con resultados de clculos para facilitar la tarea de mostrar
totales y otros clculos que se realizan en el formulario Etc.
49

Bloques. LOV
A diferencia de las listas permiten asociar ms de un valor
por tupla.
Vamos a ilustrar su empleo mediante la creacin de una
LOV para el campo cualificacin del bloque empcualif
del formulario Recursos Humanos utilizando el asistente
Seleccionamos Listas de Valores en el Navegador de Objetos y
pulsamos crear
Usamos el asistente de listas de valores
Dejamos marcado Nuevo Grupo de Registros basado en una
consulta
Introducimos la sentencia de la figura de la pgina siguiente y
comprobamos
Desplazamos las dos columnas a la ventana derecha
Avanzamos

50

Bloques. LOV

Bloques. LOV
Disponemos la forma en que se asocian los valores visualizados a los campos del formulario, estableciendo
Cualificacion como valor de retorno para la columna CUALIFICACION.
Esto devuelve nicamente el valor cualificacin a ese campo del bloque empCualif
Activamos Ajustar automticamente ...

51

52

Bloques. LOV

Bloques. LOV

En Titulo ponemos
Seleccione Cualificacion

Ejercicio:

Desplazamos cualificacion a la
ventana derecha. Terminamos
En la paleta de propiedades

Cread un formulario sobre Persona con todos los campos

ponemos visualizacin automtica

Aadid los campos NomCompleto, Director y Direccion que no


estn asociados a tabla.

a SI.

Cread un LOV que rellene el campo alojamiento y visualice estos


campos.
Cread un disparador que los visualize en modo consulta.
Considerad la utilizacin de disparadores Post-Query y PostChange

53

Bloques. Elementos con Resultados de


Clculos

54

Bloques. Elementos con Resultados de


Clculos

Se pueden crear campos que muestren clculos elaborados en funcin de otros campos
(total en funcin de cantidad y de precio unitario) o que realicen agregaciones para
grupos de registros (cantidad total de transacciones). Estos campos no almacenan el
resultado en la BD
Modifiquemos el campo total para que calcule automticamente el total en funcin de
la cantidad y el precio unitario:
Visualizamos las propiedades del campo total y establecemos: Modo de Clculo: Frmula y
Frmula: :librocuentas.cantidad * :librocuentas.preciounitario
Ejecutad y cambiad los valores de los campos cantidad y preciounitario para ver que sucede

Para mostrar el total de las transacciones realizamos las siguientes operaciones:


Cread un campo de tipo Elemento de Texto en el bloque librocuentas con las propiedades:
Nombre: SumTotal, Tipo de Dato: Number, Nmero de Elementos Visualizados: 1,
Elemento de Base de Datos: No, Modo de Clculo: Total, Funcin Totalizar: Sum,
Bloque de Total: librocuentas y Elemento de Total: Total
Ubicad el campo bajo el campo total y cread y ubicad una etiqueta a su izquierda que ponga
Total Transacciones:
Seleccionad el bloque librocuentas y estableced: Consultar Todos los Registros: S y
Precalcular Totales: No

Aspecto del Formulario Libro en Ejecucin

55

56

Mens
Developer dispone de un men por defecto en la ventana de aplicacin
que permite ejecutar las rdenes habituales en ejecucin, Next
Record, Enter_Query, etc.
Cada una de estas rdenes se corresponde directamente con la
pulsacin de una tecla y existen procedimientos predefinidos para
desencadenar su ejecucin
La utilizacin de este men y de su barra de herramientas asociada es
por defecto, a menos que se defina y utilice un men personalizado.
El contenido y funcionalidad del men por defecto no se puede
alterar
Menus Personalizados. Es conveniente partir de un men
previamente definido, como el men menuDDSI.mmb que se
encuentra definido en h:\ccia\orawin95\tmp
Comenzaremos por abrir el formulario libro.fmb
Seleccionamos la clase Menus debajo de Forms e invocamos Abrir,
seleccionando el men mencionado
Ejecutamos el Editor de Mens y editamos las etiquetas de las diferentes
opciones para traducirlas al espaol de acuerdo con la figura de siguiente
transparencia

57

Mens

Vamos a introducir una entrada en la opcin de men Consulta para


invocar al informe LibroContabiblidad.rdf
Para ello, desde el Editor de Mens, utilizamos el botn
para
introducir bajo Sig. Grupo un separador (Nombre: Sep20, Etiqueta:
Sep20, Tipo de Elemento de Men: Separador), la opcin Informes
(Nombre: Informes, Etiqueta: Informes, Tipo de Elemento de
Men: Normal). Con esta ltima opcin seleccionada pulsamos
para crear una opcin lateral (Nombre: Libro, Etiqueta: Libro Cont.,
Tipo de Elemento de Men: Normal)
58

Mens
La opcin de men Consulta debe presentar el siguiente aspecto:
Ahora vamos a incorporar el informe LibroContabilidad
a nuestro formulario, para ello:
Seleccionamos en el Navegador de Objetos la clase
Informes dentro del formulario libro e invocamos
crear, en la ventana de
dilogo optamos por abrir el
informe LibroContabilidad.rdf previamente creado

Mens
Para invocar la ejecucin del informe desde la opcin Libro Cont. editamos sus propiedades y en
Cdigo del Elemento de Men
escribimos el cdigo de la figura. Compilad

Modificamos las propiedades del informe:


Nombre: LibroContabilidad, Modo de Ejecucin
Tiempo de ejecucin,
Modo de Comunicacin: Sncrono,
Tipo de Destino del Informe: Pantalla,
Reports Server: report

59

60

Mens
Salvemos el men como mimenu.mmb
Con dicho men seleccionado, procedemos a compilarlo mediante la
opcin Fichero|Administracin|Compilar Fichero del Men Principal
Slo nos queda asociar el men recin generado al formulario libro. Para
ello editamos sus propiedades y establecemos: Mdulo de Mens:
U:\DDSI\mimenu.mmx

Adems de la funcin predefinida Run_Report_Object, dispuesta


especficamente para la generacin de Informes, debemos
usar WEB.SHOW_DOCUMENT para visualizar los informes en
el navegador. La utilizacin de estos procedimientos se puede
consultar en la ayuda interactiva
Disponemos tambin de los procedimientos
Set_menu_item_property(nomb_menu,ENABLED,{PROPERTY_
FALSE,PROPERTY_TRUE}) para deshabilitar y habilitar,
respectivamente, un elemento del men dependiendo de la
fase de operacin sobre la aplicacin en la que estemos.

61

Mens
Antes hemos referenciado en varias ocasiones al servidor de informes
(Reports Server)
Este servidor se encarga del procesamiento de los informes.
Para ponerlo en marcha debemos escribir desde una lnea de comandos
desde el directorio BIN de Oracle (ej. c:\DevSuiteHome_1\BIN):

rwserver SERVER=report
Una vez el servidor est en ejecucin, podemos ejecutar el formulario.

Compilad todo, guardad, ejecutad y comprobad que todo est correcto.

62

Mens

Creacin y Uso de Parmetros


Un parmetro es una variable asociada a un Formulario, Informe o Grfico que
parametriza el funcionamiento del mdulo en funcin del valor que se
enve en el momento de ejecucin del mdulo (lnea de comandos o
invocacin desde otro mdulo)
Para Formularios e Informes se pueden utilizar cuadros de dilogo mediante
los que establecer los valores de los parmetros
Creacin de Parmetros en Formularios. Veamos un ejemplo para crear un
parmetro para determinar si la aplicacin se ejecuta maximizada o
minimizada. Con el formulario libro abierto, se pulsa create sobre la clase
Parmetros. Y lo rellenaramos como en la figura
Podemos pasar parmetros a un Formulario o a un informe utilizando listas de
parmetros como veremos a continuacin.

Aspecto del formulario libro con el informe en ejecucin


63

64

Creacin y Uso de Parmetros


Vamos a modificar la opcin Libro Cont. del men personalizado para
que invoque al informe a travs de una lista de parmetros cuyo
valor vamos a definir previamente desde una ventana de dilogo
del formulario
Creacin de la ventana de dilogo.
Cread una nueva ventana con las propiedades: Nombre: Impresion, Ttulo:
Parmetros de Impresin, Estilo de Ventana Documento, Modal: S, Cierre
Permitido, Cambio de Tamao, Maximizacin y Minimizacin
PermitIdos: No, Ancho: 200, Altura: 150
Cread un nuevo lienzo con las propiedades: Nombre: Impresin, Ventana:
Impresin, Ancho: 200, Altura: 150
Cread manualmente un nuevo bloque con las propiedades: Nombre:
Impresin, Bloque de Datos de Navegacin Anterior y Siguiente: Impresin,
Bloque de Datos de Base de Datos: No
Visualizad las propiedades del bloque LibroCuentas y estableced Bloque de
Datos de Navegacin Anterior y Siguiente: LibroCuentas
Editad en el Editor de Diseo el nuevo lienzo
procurando que el lienzo sea Impresin y el block
tambin. Ubicad los componentes que aparecen
en la figura

Creacin y Uso de Parmetros


Las propiedades para el Grupo de Botones Radio son: Nombre Salida,
Valor Inicial screen, Elemento de Dase de Datos No
Las del primer botn: Nombre Pantalla, Etiqueta Pantalla, Valor de
Botn de Radio: screen
Las del segundo: Nombre Impresora, Etiqueta Impresora, Valor de
Botn de Radio: printer

Funcionalidad botones Salir e Imprimir:


Cread un disparador de tipo WHEN-BUTTON-PRESSED para el botn
Salir y escribid el cdigo: go_block(librocuentas);
Cread un disparador del mismo tipo para Imprimir con el siguiente cdigo. Este cdigo nos
permite llamar a un informe con una lista de parmetros, generarlo como documento PDF
y posteriormente abrirlo en un navegador.:
DECLARE
RO_Report_ID

REPORT_OBJECT;

Str_Report_Server_Job VARCHAR2(100);
Str_Job_ID

VARCHAR2(100);

Str_URL

VARCHAR2(100);

PL_ID

PARAMLIST ;

BEGIN
commit_form;
(sigue en la pgina siguiente ...)

65

66

Creacin y Uso de Parmetros


PL_ID := CREATE_PARAMETER_LIST('DATOS');
RO_Report_ID := FIND_REPORT_OBJECT('LibroContabilidad');
ADD_PARAMETER(PL_ID, 'destype', TEXT_PARAMETER, :impresion.salida);
ADD_PARAMETER(PL_ID, 'copies',

TEXT_PARAMETER, :impresion.copias);

ADD_PARAMETER(PL_ID, 'PARAMFORM',

TEXT_PARAMETER, 'NO');

SET_REPORT_OBJECT_PROPERTY(RO_Report_ID, REPORT_FILENAME,
'LibroContabilidad.rdf');
SET_REPORT_OBJECT_PROPERTY(RO_Report_ID, REPORT_COMM_MODE, SYNCHRONOUS);
SET_REPORT_OBJECT_PROPERTY(RO_Report_ID, REPORT_EXECUTION_MODE, RUNTIME);
SET_REPORT_OBJECT_PROPERTY(RO_Report_ID, REPORT_DESTYPE, CACHE);
SET_REPORT_OBJECT_PROPERTY(RO_Report_ID, REPORT_DESFORMAT, 'PDF');
SET_REPORT_OBJECT_PROPERTY(RO_Report_ID, REPORT_SERVER, 'report');
Str_Report_Server_Job := RUN_REPORT_OBJECT(RO_Report_ID, PL_ID);

Str_Job_ID := SUBSTR(Str_Report_Server_Job, LENGTH('report') + 2,


LENGTH(Str_Report_Server_Job));
Str_URL

:= '/reports/rwservlet/getjobid' || Str_Job_ID || '?server=report';

WEB.SHOW_DOCUMENT(Str_URL, '_blank');
DESTROY_PARAMETER_LIST(PL_ID);
Go_Block('Librocuentas');

Creacin y Uso de Parmetros


Modificacion del men personalizado:
En la seccin Menus, abrid mimenu.mmb
Editad el cdigo de la opcin Libro para que se lea:
go_block('impresion');
Salvad y Compilad el men (Programa|Compilar Mdulo)

Ejecutad y comprobad el funcionamiento, no pulseis imprimir con la opcin


de salida a impresora activada puesto que no se dispone de ella

Se pueden pasar valores de parmetros mediante la creacin de una


lista de parmetros, como en el ejemplo anterior, desde un
formulario a otro mediante los procedimientos New_Form(),
Open_Form() y Call_Form()
Hemos utilizado los parmetros predefinidos de Report: destype con
el que se establece a donde va la salida (printer, screen, preview,
etc), copies que establece el nmero de copias a imprimir.
Consltese la ayuda para la utilizacin de otros parmetros
Report dispone de su propia ventana para la asignacin de valores en
ejecucin. Se edita fcilmente desde el men pulsando
Herramientas|Constructor de Pantalla de Parmetros
Report tambin permite la definicin de parmetros de usuario.
Incluso permite parametrizar la consulta en que basa su ejecucin

END;
67

68

Creacin y Uso de Parmetros

Creacin y Uso de Parmetros

Vamos a parametrizar la clusula Where del informe LibroContabilidad


Creamos un parmetro de usuario pulsando crear sobre Parmetros del Usuario
dentro de Modelo de Datos
Establecemos las propiedades de la figura
Seleccionamos Herramientas|Creador
de Pantalla de Parmetros seleccionando
el parmetro CLAUS_WHERE y poniendo
en Etiqueta: Clusula Where
Editamos, a travs de sus propiedades, la
consulta Q_1 (bajo la clase Consultas de
Modelo de Datos) para que ponga:

EJERCICIO: Hemos visto como para generar y mostrar informes,


debemos crear una lista de parmetros, pasarla al informe,
generarlo y luego abrirlo en el navegador. Esta operacin la
realizaremos habitualmente y es conveniente crear un
procedimiento reutilizable.
Cree un procedimiento mostrar_informe con los parmetros
necesarios para poder invocarlo y que abra un informe en el
navegador. Incorpore este procedimiento a MiBiblioteca.
EJERCICIO: Generar una ventana de dilogo como la de la pgina 65
con el siguiente aspecto, que permita modificar los informes
cambiando el parmetro de la clusula where.

Ejecutamos el informe y, para el ltimo parmetro, introducimos, por ejemplo:


where Total > 500

69

70

Creacin y Uso de Parmetros

Bibliografa
Guide to Oracle 10g. Rocky Conrad, Joline Morrison,
Mike Morrison. Thomson/Course Technology, 2006
Oracle8. Programacin PL/SQL. Scott Urman. Oracle
Press. McGraw-Hill. 1998

71

73

También podría gustarte