Вы находитесь на странице: 1из 49

Formularios

1 Formulario Personas-Alumnos Vamos a hacer un primer formulario que nos va a permitir introducir nuevos alumnos en la base de datos, adems de poder consultar, modificar y borrar los que ya existen. Para ello realizaremos una serie de pasos: Crear el bloque de datos Persona que muestra una nica persona Crear el bloque detalle Alumno asociado a cada persona 1.1 Bloque Maestro Persona Ejecutar Form Builder, que es la herramienta para construir formularios

Lo primero que nos saldr ser una pantalla de bienvenida con diversas opciones, nosotros escogeremos Utilizar el Asistente de Bloques de Datos y le damos al botn Aceptar.

Nos sale otra bienvenida, la ignoramos y pulsamos el botn Siguiente, donde nos preguntar el tipo de nuestro bloque de datos, nosotros utilizaremos siempre Tabla o Vista, pulsamos Siguiente

Ahora nos pedir la tabla o vista que queremos utilizar, para seleccionarla le damos al botn examinar, en este momento nos pedir que nos conectemos a la base de datos,

para ello metemos nuestro usuario, contrasea y en Base de Datos el alias que hemos creado en la fase de instalacin (casa para la base de datos local, ugr para la base de datos de la escuela y si estamos en las aulas de prcticas la dejamos en blanco). Por ejemplo:

Si nos hemos identificado correctamente nos saldr una lista con las tablas y vistas del usuario con el que nos hemos conectado, seleccionamos la tabla Persona y pulsamos Aceptar. En la columna de la izquierda tenemos los atributos de la tabla seleccionada y en la de la derecha los atributos que queremos utiliza. Inicialmente la columna de la derecha est vaca, as que nos llevamos todos los atributos a la columna de la derecha y le damos al botn Terminar.

Ya hemos terminado de usar el Asistente de Bloques de Datos y comenzamos el Asistente de Diseo que nos dar la bienvenida, le damos al botn Siguiente. Nos preguntar por el Lienzo y tipo de Lienzo, lo ignoramos y le damos al botn Siguiente. Nos aparecer una ventana don dos columnas para seleccionar los atributos que deseamos visualizar. En principio, los vamos a visualizar todos, as que nos los llevamos todos a la columna de la derecha.

Ahora nos preguntar el Prompt (que es la cadena que sale en el formulario), el ancho y el alto para cada atributo. Dejamos los valores de ancho y alto que nos salen excepto para PID que le ponemos un ancho de 20 y en la parte del Prompt, cambiamos "Lugarnacimiento" por "Lugar de Nacimiento" y "Fechanacimiento" por "Fecha de Nacimiento" y le damos al botn Terminar.

Como resultado ya tenemos nuestro primer bloque de datos.

Una vez terminado los asistentes de datos y diseo, nos aparecen dos subventanas dentro de Forms Builder, el Navegador de Objetos que es una ventana con estructura de rbol que nos muestra todos los elementos de nuestro formulario y el Editor de Diseo que nos permite ver el aspecto de nuestro formulario y lo que es ms importante, modificarlo.

Si no nos aparecen en algn momento, tanto el Navegador de Objetos como el Editor de Diseo, siempre los podemos llamar desde el men Herramientas. Dentro del editor de diseo vamos a cambiar el prompt de "Apellido1" por "Primer Apellido" y "Apellido2" por "Segundo Apellido". Tambin cambiaremos el tamao de la entrada del PID, que es demasiado grande para almacenar tan slo un nmero. Podemos hacer todos los cambios que consideremos necesarios en el diseo para que se quede a nuestro gusto. (Ten en cuenta que para deshacer se usan las teclas CTRL+Z)

Podemos observar que cuando seleccionamos algo en el editor de diseo cambia la posicin en el Navegador de objetos, de forma que se va al elemento seleccionado. Si en el editor de diseo hacemos doble click sobre cualquier elemento nos saldr la Paleta de Propiedades de dicho elemento. La paleta de propiedades de un elemento es, como su nombre indica, las distintas propiedades que puede tener un elemento y que ya iremos viendo poco a poco. Ahora vamos a ejecutar nuestro formulario, para ello pulsamos el icono del semforo verde (aparece tanto en el editor de diseo como en el navegador de objetos o en el men, Programa>Ejecutar Pantalla->Cliente/Servidor). Lo que hace es llamar al Oracle Forms Runtime que se encarga de ejecutar el formulario.

Los distintos botones de Oracle Forms Runtime que queremos destacar son: Guardar: Este botn nos permite almacenar las modificaciones hechas en un registro, las nuevas tuplas creadas y las entradas eliminadas. Es como un commit en la base de datos. Salir: Con este botn nos salimos de la ejecucin del formulario. Ejecutar consulta: Con este botn ejecutamos una consulta sobre la base de datos en funcin del contenido del formulario, si no tienen ningn valor, nos permite consultar todos los registros. Introducir consulta: Nos permite introducir una consulta para traernos aquellas tuplas de la base de datos que cumplan una determinada condicin. Bloque anterior: Sirve para irnos al anterior bloque de datos, cuando hay ms de uno. Registro anterior: Nos permite irnos al anterior registro, cuando hay ms de uno. Registro siguiente: Sirve para irnos al siguiente registro, cuando hay ms de uno.

Bloque siguiente: Nos permite irnos al siguiente bloque de datos, cuando hay ms de uno. Insertar registro: Este botn sirve para aadir un nuevo registro a la tabla. Suprimir registro: Con este botn podemos borrar el registro que se muestra. Prueba a darle al botn de Ejecutar Consulta, muvete por los registros, crea uno nuevo, modifica alguno de los anteriormente creados y borra el ltimo que hayas creado. Para ver que los cambios se producen en la base de datos, haz consultas sobre la tabla personas desde SQL Plus Ya slo nos hace falta guardar el formulario para poder utilizarlo en un futuro, para ello le damos a la opcin del men Fichero->Guardar y le damos de nombre, por ejemplo, persona.fmb. Ten en cuenta que si lo guardas en la unidad C en el aula de prcticas no podrs reutilizar este formulario. Si modificas el valor del atributo Sexo de cualquier registro poniendo, por ejemplo, una X y le damos al botn de guardar. En la barra de estado (abajo) de Oracle Forms Runtime nos saldr un error diciendo que Oracle no puede actualizar el registro, eso es debido a que es campo slo puede tomar dos valores H o M, pues al crear la base de datos forzamos mediante la clusula CHECK IN que as fuera. Para evitar problemas, ya que puede que el usuario no sepa quw valores son los permitidos, vamos a utilizar una lista desplegable para este atributo.

Para ello, en el navegador de objetos nos vamos al bloque de datos Persona y de ah al elemento Sexo, lo seleccionamos con el ratn y le damos al botn derecho, del men contextual que nos aparece seleccionamos Paleta de Propiedades (Otra forma de acceder a la Paleta de Propiedades del elemento Sexo, es pulsndolo dos veces en el Editor de Diseo como ya sabes). Cambiaremos el atributo Tipo de Elemento a Elemento de Lista y el atributoCorrespondencia con otros valores lo ponemos aM(sera el valor por defecto). Ahora cambiamos la propiedad Elementos de la lista donde nos saldr una subventana con dos partes, en la primera ser cada uno de los valores de la lista que se muestran, y el campo de abajo para cada uno de esos valores que se muestran los valores que se almacenan en la base de datos, de esta forma, en la lista de valores que se muestran pondremos Hombre y Mujer y los valores correspondientes que se guardarn sern, lgicamente, H y M

EJERCICIO: Hacer un formulario que nos permita consultar, introducir, borrar y modificar las asignaturas 1.2 Bloque detalle Alumno Seguimos con el formulario persona con el que hemos estado trabajando anteriormente. Seleccionamos, en el navegador de objetos, el bloque de datos Persona y pulsamos en el navegador de objetos el botn de crear . De esta forma crearemos un nuevo bloque de datos (detalle) asociado al bloque de datos seleccionado (Persona - Maestro)

Nos preguntar que cmo queremos crear el nuevo bloque de datos, le decimos que queremos utilizar el asistente de bloques de datos

Escogeremos la tabla Alumno y nos quedaremos con todos sus atributos, despus de pulsar Siguiente nos aparecer una ventana donde crear la relacin maestro-detalle. Le daremos al botn Crear Relacin (el tipo de la relacin ser basada en una condicin de unin), escogeremos la tabla Persona (la nica que nos parece en la lista) y le damos a Aceptar. Como elemento detalle y como elemento maestro escogeremos el atributo PID. Marcamos la casilla de Unir Automticamente bloques de datos.

Le damos a Terminar para iniciar el asistente de diseo. Los atributos que se mostrarn sern todos menos el PID, puesto que ste ya se nos muestra en la tabla de persona. En el tamao de cada campo, modificamos el de la nota de acceso, le ponemos un tamao de 20. Le daremos al botn Terminar.

Una vez terminado el asistente de diseo, desde el editor de diseo adecuaremos el aspecto visual del formulario a nuestro gusto. Cuando lo ejecutemos nos daremos cuenta que los campos de los alumnos slo se nos rellenarn cuando estemos movindonos por una persona que sea un alumno. Esto tiene el inconveniente de que nos muestra tambin aquellas personas que no son alumnos (o sea, los profesores).

Nota: Para que nos muestre tan slo a los alumnos, vamos a restringir los elementos que nos traemos en el bloque de datos Persona. Supongamos que en SQL slo queremos obtener aquellas personas que son alumnos, una forma de hacerlo es con la siguiente consulta:

<span style="background-color: #dddddd;"><span style="color: #000000; font-family: Arial,Helvetica,sans-serif;">SELECT * FROM persona WHERE pid IN (SELECT pid FROM alumno)</span></span> Si nos vamos a la Paleta de Propiedades del bloque de datos Persona, en el apartado Base de Datos, encontramos la propiedad Clusula WHERE que inicialmente est vaca. Si la rellenamos con pid IN (SELECT pid FROM alumno), al ejecutar de nuevo el formulario slo nos mostrar a los alumnos. Qu no se te olvide guardarlo!

EJERCICIO: Hacer un formulario maestro detalle para los profesores de forma anloga a como hemos realizado el ejemplo anterior. Ser ms fcil si no modificas el diseo hasta que no tienes los bloques maestro y detalle.

Nota: Si queremos que cuando ejecutemos un formulario no tengamos que pulsar el botn Ejecutar Consulta para empezar a visualizar los registros vamos a hacer que lo haga de forma automtica cuando cree el formulario. Para ello, en el navegador de objetos, nos vamos a Disparadores y pulsamos el botn de crear , seleccionamos el disparador WHEN-NEWFORM-INSTANCE y pulsamos el botn de Aceptar.

En la ventana de Editor PL/SQL escribimos la lnea

<span style="background-color: #dddddd;"><span style="color: #000000; font-family: Arial,Helvetica,sans-serif;"> execute_query; <span style="background-color: #dddddd; font-size: medium;">que si nos fijamos es ejecutar_consulta en ingls, le damos al botn Compilar y luego a Cerrar. De esta forma cada vez que ejecutemos el formulario no tendremos que pulsar el botn Ejecutar Consulta para ver los registros.</span></span></span>

2 Formulario Matrcula

Vamos a hacer un formulario maestro-detalle, donde el maestro ser la tabla Matrcula y el detalle la tabla DetalleMatrcula. En este formulario podremos borrar/aadir asignaturas a una matrcula. Vamos a hacerlo de forma similiar a como hemos realizado el anterior ejemplo, pero con dos pequeas diferencias. En el asitente de diseo, para el bloque maestro, escogemos un estilo de diseo Pantalla, pulsamos Siguiente y al marco le damos el ttulo de Matrcula, despus pulsamos Terminar.

<span style="background-color: #dddddd;"> </span>

La segunda diferencia, es que en el asistente de diseo,para el bloque detalle (que es la tabla DetalleMatricula), escogemos un estilo de diseo Tabular, pulsamos Siguiente y al marco le damos el ttulo de Asignaturas, los registros visualizado sern 10 y marcaramos la casilla de Visualizar Barra de Desplazamiento, despus pulsamos Terminar. De esta forma y retocando un poco con el editor de diseo debera quedar algo parecido a:

Este formulario queda bastanta poco intuitivo y dificil de utilizar, para ello vamos a realizar varios cambios, el primero ser realizar una lista esttica para el campo Tipo, de forma que aparezcan las opciones: Ordinaria, Libre, Personal Universidad y que, en realidad, en la base de datos se almacene los valores O, L,U (respectivamente). Y el nmero de plazos, otra lista, que tome los valores 1 2.

La siguiente mejora ser utilizar una lista desplegable como las usadas en Tipo y en Nmero de plazos, para las asignaturas, de forma que podamos ver en la lista el nombre de la asignatura y no haga falta conocer el nombre de todas las asignaturas. Observa que, con los conocimientos que tenemos, para cada asignatura que se aada a la base de datos tendramos que cambiar el diseo de nuestro formulario, de forma que incluyese la nueva asignatura como una opcin ms de la lista. Esto no es realista es un entorno normal, es decir, no se cambia la aplicacin cuando se cambia la base de datos, no tendra sentido. Para esto vamos a realizar listas dinmicas a contraposicin de las usadas hasta hora que son estticas. Las listas dinmicas se construirn cada vez que ejecutemos el formulario a partir de los valores almacenados en la base de datos.

Construiremos una lista dinmica para la parte de asignaturas a partir de la tabla Asignaturas. Para ello, lo primero que tenemos que hacer es definir el campo Nombre de DetalleMatrcula como Elemento de Lista. Usaremos un valor por defecto conocido y rellenaremos la lista con un slo valor (esto es para que forms developer no nos diga que la lista est mal), para esto podemos usar el valor por defecto Base de Datos (Correspondencia con otros valores), y en la lista podemos aadir el elemento Base de Datos y que almacene Base de Datos en la base de datos.

Ya tenemos una lista esttica que si compilamos el formulario no nos sirve de nada, para hacerla dinmica realizaremos los siguientes pasos: Escribir una consulta que obtenga las distintas asignaturas de la base de datos con las que construiremos la lista Escribir un prodecimiento PL/SQL que se encargue de rellenar la lista con los datos obtenidos en la anterior consulta Llamar al procedimiento PL/SQL para que rellene la lista cuando se utilice el formulario Para crear la consulta que nos permita obtener los datos de las consultas, en el Navegador de Objetos, seleccionaremos Grupo de Registros (una consulta, en realidad) y le damos al botn de crear , introduciendo el siguiente texto:

<span style="background-color: #dddddd;"><span style="color: #000000; font-family: Arial,Helvetica,sans-serif;"> SELECT nombre, nombre FROM Asignatura order by 1 <span style="background-color: #dddddd; font-size: medium;">Con esta consulta, obtendremos el valor que se mostrar en la lista (</span>__<span style="background-color: #dddddd; font-family: 'Times New Roman'; font-size: medium;">nombre</span>__<span style="background-color: #dddddd; font-size: medium;">) y el valor correspondiente que se alamcenar en la base de datos (</span>__<span style="background-color: #dddddd; font-family: 'Times New Roman'; font-size: medium;">nombre</span>__<span style="background-color: #dddddd; font-size: medium;">)

ordenados de forma alfabtica. A la nueva consulta creada, le damos el nombre de asignaturas (por ejemplo, usando la paleta de propiedades -> nombre)</span></span></span>

Ahora crearemos un procedimiento PL/SQL para rellenar una lista a partir de los datos de una consulta. Como este proceso es probable que lo utilicemos ms de una vez en nuestros formularios lo vamos a hacer reutilizable, en forma de biblioteca. Para ello, , en el Navegador de Objetos, marcaremos Bibliotecas PL/SQL y le damos al botn de crear , ah

seleccionaremos Unidades de Programa y le volvemos a dar al botn de crear . Introducimos el nombre de la Unidad de Programa, que ser llena_listas y le damos al botn Aceptar.

En el editor PL/SQL que nos aparece introduciremos el siguiente cdigo:

<span style="background-color: #dddddd;"><span style="color: #000000; font-family: Arial,Helvetica,sans-serif;">PROCEDURE llena_listas (lista in VARCHAR2, grupo in VARCHAR2) IS verror NUMBER :=0; errorRellenoLista exception; BEGIN verror:= Populate_Group(grupo); if verror = 0 then Clear_List(lista); /*Elimina el contenido de la lista*/ Populate_List(lista,grupo); elsif verror = 1403 then /*No se encuentra ningn */ /*elemento en la lista*/ null; else raise errorRellenoLista; end if; EXCEPTION when errorRellenoLista then message ('Excepcin: no se puede rellenar la '||lista|| ' con la consulta de '||grupo||'.'); END; <span style="background-color: #dddddd; font-size: medium;">Pulsamos </span>{{<span style="background-color: #dddddd;">Compilar</span>}}<span style="background-color: #dddddd; font-size: medium;"> y si no hay ningn problema, le damos a </span>{{<span style="backgroundcolor: #dddddd;">Cerrar</span>}}</span></span> /*no se hace nada*/

Nos vamos a la biblioteca creada y le damos al botn de guardar , la guardamos como MiBiblioteca, recuerda el sitio donde la guardas, (por ejemplo, en u:/bd2/). Seleccionamos la biblioteca y la compilamos (en el men, nos vamos a Programa->Compilar Seleccin). Ahor slo nos queda aadir la biblioteca a nuestro formulario y, en general, a cualquier formulario que deseemos crear, para esto, dentro de nuestro formulario nos vamos dentro del Navegador de Objetos a Bibliotecas Incorporadas(o Bibliotecas Asociadas, dependiendo de la versin de Developer) y pulsamos el botn de crear damos a Incorporar. . Examinamos y seleccionamos la biblioteca y le

<span style="background-color: #dddddd;"><span style="background-color: #dddddd; color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: medium;">Nos preguntar si suprimir la ruta para que la aplicacin sea portable, le decimos que No. Esto tiene el problema que si la biblioteca no est en la ruta especificada, el formulario no funcionar. Esto es importante a tener en cuenta a la hora de detallar la instalacin de un formulario.</span></span> Ya slo nos queda llamar al procedimiento PL/SQL para que rellene la lista con los datos de la consulta cuando se utilice el formulario. Para esto, en el navegador de objetos, nos vamos a Disparadores y pulsamos el botn de crear , seleccionamos el disparador WHEN-NEWFORM-INSTANCE y pulsamos el botn de Aceptar. Y aadimos el siguiente cdigo:

<span style="background-color: #dddddd;"><span style="color: #000000; font-family: Arial,Helvetica,sans-serif;"> llena_listas('DetalleMatricula.nombre','asignaturas'); <span style="background-color: #dddddd; font-size: medium;">si adems queremos que nos salga el formulario inicializado, sera:</span></span></span> <span style="background-color: #dddddd;"><span style="color: #000000; font-family: Arial,Helvetica,sans-serif;"> BEGIN llena_listas('DetalleMatricula.nombre','asignaturas'); execute_query; END; <span style="background-color: #dddddd; font-size: medium;">Observa que la llamada al procedimiento llena_listas de MiBiblioteca tiene dos prametros, el primero el bloque datos y elemento a rellenar, el segundo es la consulta que se va a utilizar para ello. Le damos a </span>{{<span style="background-color: #dddddd;">Compilar</span>}}<span style="backgroundcolor: #dddddd; font-size: medium;"> y </span>{{<span style="background-color: #dddddd;">Cerrar</span>}}</span></span>

Finalmente, el formulario tendr un aspecto similiar a:

Qu no se te olvide guardarlo!

3 Bloque LOV (List of Values - Lista de Valores)

En lugar de utilizar listas, en muchos casos nos interesar ms utilizar bloques LOV. Con un Bloque LOV podremos asignar ms de un valor a la vez, es decir, seleccionando un elemento de un bloque LOV podremos rellenar varios campos del formulario a la vez. Los bloques LOV son dinmicos en el sentido de que se construyen a partir de los datos de la base de datos y adems nos permitirn ver ms datos que los que se van a utilizar para rellenar el formulario. Para ilustrar el ejemplo de los bloques LOV: si nos fijamos en el formulario anterior el campo alumno es slo un cdigo que no nos dice mucho, si hubiera que cambiar la asignacin de una matrcula a un alumno (por ejemplo, para deshacer un error del secretario), habra que buscar en alumnos el cdigo (o, al menos, saberlo) y con ese cdigo cambiar la matrcula. Para evitar esto, vamos a crear un bloque LOV que nos permita ver datos del los alumnos, pero que nos almacene slo el cdigo del mismo. Abrimos el formulario de matrculas si no lo tenemos abierto ya. En el navegador de objetos, seleccionamos Listas de Valores (o elementos LOV, segn la versin de Developer) y le damos al botn de crear . Le decimos que s queremos utilizar el Asistente de Listas de Valores. Dejamos seleccionado Nuevo Grupo de Registros basado en una consulta y le damos al botn Siguiente.

En la parte de la consulta SQL, vamos a introducir la siguiente consulta:

<span style="background-color: #dddddd;"><span style="color: #000000; font-family: Arial,Helvetica,sans-serif;"> SELECT alumno.pid, nif, nombre, apellido1, apellido2 FROM alumno, persona

WHERE (alumno.pid=persona.pid) <span style="background-color: #dddddd; font-size: medium;">Nos conectamos (si no lo estamos ya) y le damos a </span>{{<span style="background-color: #dddddd;">Comprobar Sintaxis</span>}}<span style="background-color: #dddddd; font-size: medium;"> para ver si la consulta est correcta. Le damos al botn </span>{{<span style="background-color: #dddddd;">Siguiente</span>}}<span style="background-color: #dddddd; font-size: medium;">.</span></span></span>

En la ventana de seleccin movemos todos los atributos a la columna de la derecha, ya que en la misma consulta hemos seleccionado los atributos que queremos que nos salgan en la lista de valores. Le damos a Siguiente.

En la siguiente ventana del asistente, nos muestra la forma en que se van a mostrar los valores en el bloque LOV, cambiamos el ancho de las columnas (ver imagen), y en la fila del PID, en la columna Valor de Retorno ponemos MATRICULA.IDALUMNO (o en lugar de escribirlo, podemos seleccionarlo pulsando el botn Buscar elemento de retorno...), sto lo que hace es devolver el elemento PID del bloque LOV en el campo Matricula.IDAlumno. Si quisiramos devolver ms valores utilizaramos las casillas correspondientes en la columna Valor de retorno. Dejamos activado la casilla de Ajustar automticamente el tamao de las columnas y pulsamos Siguiente.

Le damos de ttulo Seleccin de Alumno, dejando el resto de valores por defecto, pulsamos dos veces Siguiente.

<span style="background-color: #dddddd;"> </span>

Finalmente desplazamos Matricula.IDAlumno a la columna de la derecha y le damos al botn Terminar.

Cuando ejecutemos el formulario, al irnos a la casilla de Alumno, nos saldr en la barra de estado (abajo) de Oracle Forms Runtime la anotacin Lista de Valores, pulsamos F9 y nos aparecer el bloque LOV.

Si quieres que la Lista de Valores se visualice automticamente al irnos a la casilla de Alumno, sin tener que pulsar F9, tienes que irte a la Paleta de Propiedades de la Lista de Valores creada y poner la propiedad Visualizacin Automtica a S

4 Ventanas y lienzos

Los Lienzos son elementos del diseo sobre el que se sitan los otros elementos de nuestro formulario. Una ventana acta como un visor sobre el lienzo permitiendo desplazarse por su contenido. Cuando ejecutamos un formulario se dispone una ventana principal que no dispone de lienzos, mediante la cual se visualiza el resto de las ventanas que si contendrn lienzos. Podemos distinguir distintos tipos de lienzos: Contenido: Elemento contenedor de otros. Es el que se crea por defecto con un formulario nuevo y una ventana debe tener al menos un lienzo de este tipo, ya que es un lienzo contenedor de los elementos del formulario o de otros lienzos Apilado: Un lienzo que se muestra encima de otros. Tabular: Lienzo para poder hacer pestaas en nuestro formulario. Barra de Herramientas: Contiene botones que se muestran en forma vertical u horizontal en la ventana. Como ya hemos visto de forma implcita el uso de lienzos contenedores y los lienzos apilados se pueden simular poniendo los elementos de distintos bloques de datos en el mismo lienzo, vamos a ver los lienzos tabulares y las barras de herramientas. Tambin veremos un tipo especial de ventanas que son las Alertas y que nos sern muy tiles.

4.1 Lienzos tabulares Vamos a realizar un formulario de Matriculacin donde en una parte tengamos los datos de la matrcula y abajo tengamos dos pestaas: una con las asignaturas asociadas a la matrcula y otra con los pagos de la matrcula. De esta forma tendremos un bloque de datos Maestro (Matrcula) y dos bloques Detalle (Asignaturas y Pagos), cada uno en una pestaa. Abrid Form Builder (empezamos sin ningn formulario) y mediante el Asistente creamos nuestro bloque de datos asociado a la tabla matrcula, como ya hicimos en el aparatado 2, seleccionando todos sus atributos. Fjate que en el asistente de diseo, despus de la bienvenida aparece la ventana Tipo de Lienzo y que, por defecto, tiene un tipo de lienzo contenedor.

Visualizad todos los campos, en formato Pantalla, que el ttulo del marco sea Matrcula, se vea un slo registro y tenga la barra de desplazamiento.

Verifica que funciona y gurdalo, por ejemplo, como Matriculacion2.fmb. Observa que movindonos con la barra de desplazamiento nos vamos moviendo por las distintas tuplas de la tabla Matrcula.

Ahora vamos a crear la primera pestaa para las asignaturas. Vamos a crear el bloque detalle basado en la tabla DetalleMatrcula (recuerda que para crear un bloque detalle, debes seleccionar primero el bloque de datos maestro y darle al botn de crear), seleccionando todos sus campos. En el Asistente de Diseo, en la ventana de Tipo de Lienzo, vamos a asignarle un lienzo nuevo (Nuevo Lienzo) que ser de tipo Tabular y una Nueva Pgina con Pestaa.

Visualizaremos slamente el campo Nombre (de una asignatura) y elegiremos una presentacin tabular visualizando 5 registros y la barra de desplazamiento. En el navegador de objetos buscamos en Lienzos el nuevo lienzo tabular que hemos creado (puedes ver el nombre en el editor de diseo) y, dentro de ste, en Pginas con Pestaa le cambiamos el nombre a la primera que hay, que tendr un nombre parecido a PAGE5 (puedes hacerlo en la Paleta de Propiedades cambiando el atributo Etiqueta por el valorAsignaturas).

Al ejecutar el formulario, slo vers la parte de matrcula, no importa, luego lo cambiaremos. Ahora vamos a crear la segunda pestaa para el bloque detalle Pagos seleccionando todos sus campos. Ten cuidado, al crear la relacin, en este caso ya que al tener dos bloques de datos el asistente se puede confundir. Para evitarlo, antes de pulsar Crear Relacin desactivamos Unir automticamente bloques de datos, hacemos la relacin basada en una condicin de unin sobre el campo IDMatricula de Matricula y el campo IDMatricula de Pago.

En el Asistente de Diseo, en la ventana Tipo de Lienzo, vamos a asignarle el lienzo tabular antes creado con las asignaturas, pero s vamos a seleccionar una Nueva Pgina con Pestaa.

Visualizaremos todos los campos menos IDMatricula. Escogemos un diseo tabular, de ttulo Pagos, y que se muestren slo 2 registros, sin barra de desplazamiento. Le cambiamos el nombre a la pestaa, como hicimos anteriormente para las asignaturas (cambiando la propiedad Etiqueta por Pagos de la nueva pgina con pestaa creada).

Ahora vamos a redimensionar los lienzos para que se vean al ejecutar el formulario. Para ello, en el navegador de objetos, nos vamos a los lienzos y seleccionamos el lienzo Tabular (el segundo), abrimos la Paleta de Propiedades y cambiamos la propiedadPosicin Y en la Puerta de Vista a 90 y la propiedad Bisel a Ninguno

De esta forma colocaremos el lienzo con las pestaas debajo de los datos de la matrcula. Ten en

cuenta en redimensionar el lienzo de la Matrcula (si no es lo suficientemente grande) para que quepa debajo el lienzo tabular. Poniendo Bisel a ninguno, lo que hacemos es quitar una lnea que separa los dos lienzos. Ejecutamos, el lienzo, corregimos y guardamos el formulario.

Si en el navegador de objetos, el bloque de datos Maestro (Matricula) est despus de un bloque de datos detalle, no se visualizar correctamente. Si se quiere ver en el editor de diseo los dos lienzos en lugar de tener dos editores de diseo (uno por lienzo), en el editor de diseo del bloque maestro vete a la opcin Ver del men y de ah a Vistas Apiladas ..., seleccionamos el lienzo tabular y le damos al botn Aceptar.

Para cambiar el ttulo de la ventana, en le navegador de objetos, vete a Ventanas, selecciona la que hay y abre su paleta de propiedades. Cambia la propiedad Ttulo a, por ejemplo, Matriculacin.

4.2 Ventanas de Avisos (Alertas) Developer tiene un tipo especial de ventanas para enviar avisos al usuario. Bsicamente mostrar un mensaje y puede tener hasta tres botones (por ejemplo, "Si" "No" y "Cancelar"). Hay tres tipos de estilos de alerta: Parar, Precaucin y Nota. Vamos a crear una alerta que nos muestre un mensaje de bienvenida cuando se ejecute el formulario de Matriculacin, para ello tendremos que tenerlo abierto previamente con Forms Builder. En el Navegador de Objetos, seleccionamos Alertas y pulsamos el botn de crear Abrimos la paleta de propiedades de la alerta creada. .

Cambiamos las siguiente propiedades: A Nombre le damos Bienvenida A Ttulo le damos Bienvenido A Mensaje le damos Bienvenido al proceso de matriculacin. A Etiqueta de Botn 1 escribimos Aceptar A Etiqueta de Botn 2 y a Etiqueta de Botn 3 lo dejamos en blanco Ya slo nos queda llamar a la alerta, para ello, en el disparador WHEN_NEW_FORM_INSTANCE, escribimos el cdigo:

<span style="background-color: #dddddd;"><span style="color: #000000; font-family: Arial,Helvetica,sans-serif;"> DECLARE boton NUMBER; BEGIN /*Mostramos la alerta BIENVENIDA y guardamos el botn pulsado*/ boton := Show_Alert('Bienvenida');

/*Miramos que botn se ha pulsado*/

IF boton = ALERT_BUTTON1 THEN /*Slo hay uno, no hacemos nada*/ NULL; END IF;

/*Rellenamos el formulario*/ Execute_Query; END; <span style="background-color: #dddddd; font-size: medium;">De esta forma, al ejecutar el formulario nos debera salir, algo parecido a</span></span></span>

La funcin Show_alert devuelve el nmero ALERT_BUTTON1, ALERT_BUTTON2, ALERT_BUTTON3 dependiendo de que botn haya sido pulsado

4.3 Barras de herramientas Para ilustrar el funcionamiento de una barra de herramientas, vamos a crear una para nuestro formulario de matriculacin que ser horizontal y con cuatro botones, dos para movernos entre los registros, otro para almacenar los cambios realizados y un cuarto botn para cerrar el formulario, mostrando un aviso antes. La barra de herramientas tendr el siguiente aspecto:

Lo primero ser crear un lienzo, para ello, en el navegador de objetos vete a lienzos y pulsa el botn de crear propiedades: . Abre la paleta de propiedades del lienzo creado y cambia las siguientes

A Nombre le damos Botones

A Tipo de Lienzo le damos Barra de Herramientas Horizontal A Ventana le damos WINDOWS1 (o la que tengas si tienes otra, pero slo deberas tener una) A Altura le escribimos 30

Abrimos el editor de diseo, seleccionando previamente el lienzo creado. Mediante el botn para crear botones , le aadimos los cuatro botones para que tengan un aspecto parecido a lo que estamos buscando. Inicialmente, tendr este aspecto:

Fjate que los botones se deben de crear como elementos del bloque de datos Matricula. Debiendo quedar algo como:

Mediante la paleta de propiedades de cada botn, le cambiamos la propiedad Etiqueta a los valores <,>, Guardar y Cerrar y la propiedad Nombre a los valores anterior,posterior, salva y salida.

Ahora mismo si ejecutamos el formulario, nos aparecer la barra de herramientas pero los botones no hacen nada. Para el botnanterior creamos un nuevo disparador del tipo WHENBUTTON-PRESSED, con el siguiente cdigo:

<span style="background-color: #dddddd;"><span style="color: #000000; font-family: Arial,Helvetica,sans-serif;">do_key('up');</span></span> <span style="background-color: #dddddd;"><span style="color: #000000; font-family: Arial,Helvetica,sans-serif;"><span style="background-color: #dddddd; font-size: medium;">e igualmente para el botn </span>//<span style="background-color: #dddddd; font-family: 'Times New Roman'; font-size: medium;">posterior</span>//<span style="background-color: #dddddd; font-size: medium;">, pero con el cdigo:</span></span></span> <span style="background-color: #dddddd;"><span style="color: #000000; font-family: Arial,Helvetica,sans-serif;"> do_key('down'); <span style="background-color: #dddddd; font-size: medium;">para el botn </span>//<span style="background-color: #dddddd; font-family: 'Times New Roman'; font-size: medium;">salva</span>//<span style="background-color: #dddddd; font-size: medium;">, el cdigo es:</span></span></span> <span style="background-color: #dddddd;"><span style="color: #000000; font-family: Arial,Helvetica,sans-serif;">commit_form;</span></span>

<span style="background-color: #dddddd;"> </span>

Al ejecutar el formulario comprobars que los botones ya funcionan (con excepcin al de cerrar), el cdigo del disparador WHEN-BUTTON-PRESSED, se ejecuta (como dice su nombre) cuando se pulsa un botn. Ahora nos quedan el otro botn que es un poco ms complicados. En el botn de salir, usaremos una alerta que pregunte si se quieren almacenar los cambios antes de salir y que tenga tres botones, "Si" "No" y "Cancelar". Dependiendo del botn que se pulse se guardarn los resultados y se cerrar el formulario, no se guardarn los cambios y saldr del formulario y no har nada (respectivamente). Para ello, lo primero, ser crear una Alerta con las siguientes propiedades: A Nombre le damos Salir A Ttulo le damos Salir

A Mensaje le damos Quieres almacenar los cambios antes de salir? A Estilo de Alerta le damos Precaucin A Etiqueta de Botn 1 escribimos S A Etiqueta de Botn 2 escribimos No A Etiqueta de Botn 1 escribimos Cancelar

Para terminar al botn Salida para su disparador WHEN-BUTTON-PRESSED le asignamos el siguiente cdigo:

<span style="background-color: #dddddd;"><span style="color: #000000; font-family: Arial,Helvetica,sans-serif;">DECLARE boton NUMBER; BEGIN /*Preguntamos si guardar*/ boton := show_alert('salir');

/*Si se ha pulsado el primer botn, guardamos los cambios*/ if boton = ALERT_BUTTON1 then commit_form; end if;

/*Si no se ha pulsado el tercer botn, nos salimos*/ if boton <> ALERT_BUTTON3 then exit_form(no_commit); end if; END;</span></span> El aspecto del formulario ser:

5 Elementos con resultados de clculos En Developer se pueden crear campos que muestren datos calculados a partir de otros campos. Para ilustrar esta funcionalidad, para cada pago vamos a aadir un campo que sea Pagado (pago.abonado*pago.cantidad) que nos muestre para un pago dado si se ha pagado o no, y dos campos uno con la suma de las cantidades de los pagos (Precio Total matrcula) y otro con la suma de las cantidades pagadas (Total Pagado). En el navegador de objetos seleccionamos Elementos del bloque de datos Pago y pulsamos el botn de crear , nos crear un nuevo campo de texto. Con la Paleta de Propiedades le damos los siguientes valores: A Nombre le damos Pagado A Tipo de Dato le damos Number A Modo de Clculo le escogemos Frmula En Frmula escribimos :pago.abonado*:pago.cantidad En Elemento de Base de datos elegimos No A Lienzo le asignamos el lienzo tabular (el segundo creado) En Pgina con Pestaa le damos la pgina con la pestaa de pagos (la segunda creada) A Prompt le damos el valor Pagado En Justificacin del Prompt nos quedamos con Centro En Borde del anexo del Prompt escogemos Superior

En el editor de diseo colocamos mejor el campo creado (como son dos pagos, se vern dos campos de texto). Si ejecutamos el formulario comprobaremos que funciona, basta con cambiar el valor de Abonado.

En el editor de diseo creamos dos nuevos campos de texto

, tal y como muestra la figura.

Si los campos de texto creados nos aparecen en el bloque de datos Pago (Nos saldrn dobles!), no hay ningn problema, pero si nos salen en el bloque de datos Matrcula (como en el ejemplo), los arrastraremos hasta el bloque de datos Pago que es donde queremos hacer los clculos. Al campo situado ms a la izquierda, mediante la paleta de propiedades, le modificamos los siguiente atributos: A Nombre le damos Total A Tipo de Dato le damos Number A Modo de Clculo le escogemos Total En Funcin totalizar seleccionamos Sum En Bloque de Total elegimos Pago En Elemento de Total ponemos Cantidad En Nmero de elementos visualizados escribimos 1 En Elemento de Base de datos elegimos No

A Prompt le damos el valor Precio Total Matrcula En Grosor de la Fuente del Prompt nos quedamos con Negrita Al campo situado ms a la derecha, mediante la paleta de propiedades, le modificamos los siguiente atributos: A Nombre le damos TotalPagado A Tipo de Dato le damos Number A Modo de Clculo le escogemos Total En Funcin totalizar seleccionamos Sum En Bloque de Total elegimos Pago En Elemento de Total ponemos Pagado En Nmero de elementos visualizados escribimos 1 En Elemento de Base de datos elegimos No A Prompt le damos el valor Total Pagado En Grosor de la Fuente del Prompt nos quedamos con Negrita Al bloque de datos Pago le cambiamos la propiedad Consultar todos los registros a S y la propiedad Precalcular Totales comoNo. Ya slo queda ajustar los campos de totales creados por si no se visualizaran bien y ejecutar el formulario cambiando los valores de cantidad/abonado para ver que ocurre.

Nota:Estos campos no se almacenan datos en la base de datos (no existe un campo donde hacerlo)

Вам также может понравиться