You are on page 1of 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, además 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 botón Aceptar.

Nos sale otra bienvenida, la ignoramos y pulsamos el botón 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 botón examinar, en este momento nos pedirá que nos conectemos a la base de datos,

para ello metemos nuestro usuario, contraseña y en Base de Datos el alias que hemos creado en la fase de instalación (casa para la base de datos local, ugr para la base de datos de la escuela y si estamos en las aulas de prácticas 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á vacía, así que nos llevamos todos los atributos a la columna de la derecha y le damos al botón Terminar.

Ya hemos terminado de usar el Asistente de Bloques de Datos y comenzamos el Asistente de Diseño que nos dará la bienvenida, le damos al botón Siguiente. Nos preguntará por el Lienzo y tipo de Lienzo, lo ignoramos y le damos al botón 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). 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 botón Terminar. el ancho y el alto para cada atributo.

Como resultado ya tenemos nuestro primer bloque de datos. .

Dentro del editor de diseño vamos a cambiar el prompt de "Apellido1" por "Primer Apellido" y "Apellido2" por "Segundo Apellido". que es demasiado grande para almacenar tan sólo un número. (Ten en cuenta que para deshacer se usan las teclas CTRL+Z) . modificarlo. También cambiaremos el tamaño de la entrada del PID. nos aparecen dos subventanas dentro de Forms Builder. tanto el Navegador de Objetos como el Editor de Diseño.Una vez terminado los asistentes de datos y diseño. 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 Diseño que nos permite ver el aspecto de nuestro formulario y lo que es más importante. siempre los podemos llamar desde el menú Herramientas. Si no nos aparecen en algún momento. Podemos hacer todos los cambios que consideremos necesarios en el diseño para que se quede a nuestro gusto.

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

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

Cambiaremos el atributo Tipo de Elemento a Elemento de Lista y el atributoCorrespondencia con otros valores lo ponemos aM(sería el valor por defecto). del menú contextual que nos aparece seleccionamos Paleta de Propiedades (Otra forma de acceder a la Paleta de Propiedades del elemento Sexo. en el navegador de objetos nos vamos al bloque de datos Persona y de ahí al elemento Sexo. lo seleccionamos con el ratón y le damos al botón derecho.fmb. Si modificas el valor del atributo Sexo de cualquier registro poniendo. haz consultas sobre la tabla personas desde SQL Plus Ya sólo nos hace falta guardar el formulario para poder utilizarlo en un futuro. eso es debido a que es campo sólo puede tomar dos valores H o M. Prueba a darle al botón de Ejecutar Consulta. pues al crear la base de datos forzamos mediante la cláusula CHECK IN que así fuera. en la primera será cada uno de los valores de la lista que se muestran. Para ello. crea uno nuevo. Ten en cuenta que si lo guardas en la unidad C en el aula de prácticas no podrás reutilizar este formulario. Para evitar problemas.Bloque siguiente: Nos permite irnos al siguiente bloque de datos. vamos a utilizar una lista desplegable para este atributo. y el campo de abajo para cada uno de esos valores que se muestran los valores que se almacenan en la base de datos. por ejemplo. Ahora cambiamos la propiedad Elementos de la lista donde nos saldrá una subventana con dos partes. lógicamente. muévete por los registros. por ejemplo. En la barra de estado (abajo) de Oracle Forms Runtime nos saldrá un error diciendo que Oracle no puede actualizar el registro. es pulsándolo dos veces en el Editor de Diseño como ya sabes). modifica alguno de los anteriormente creados y borra el último que hayas creado. persona. Para ver que los cambios se producen en la base de datos. H y M . Insertar registro: Este botón sirve para añadir un nuevo registro a la tabla. de esta forma. en la lista de valores que se muestran pondremos Hombre y Mujer y los valores correspondientes que se guardarán serán. cuando hay más de uno. para ello le damos a la opción del menú Fichero->Guardar y le damos de nombre. ya que puede que el usuario no sepa quw valores son los permitidos. Suprimir registro: Con este botón podemos borrar el registro que se muestra. una X y le damos al botón de guardar.

le decimos que queremos utilizar el asistente de bloques de datos . introducir.2 Bloque detalle Alumno Seguimos con el formulario persona con el que hemos estado trabajando anteriormente.EJERCICIO: Hacer un formulario que nos permita consultar. el bloque de datos Persona y pulsamos en el navegador de objetos el botón de crear . De esta forma crearemos un nuevo bloque de datos (detalle) asociado al bloque de datos seleccionado (Persona . en el navegador de objetos. borrar y modificar las asignaturas 1.Maestro) Nos preguntará que cómo queremos crear el nuevo bloque de datos. Seleccionamos.

Le daremos al botón Crear Relación (el tipo de la relación será basada en una condición de unión). Marcamos la casilla de Unir Automáticamente bloques de datos. . puesto que éste ya se nos muestra en la tabla de persona. Le damos a Terminar para iniciar el asistente de diseño. le ponemos un tamaño de 20. En el tamaño de cada campo. modificamos el de la nota de acceso. escogeremos la tabla Persona (la única que nos parece en la lista) y le damos a Aceptar. después de pulsar Siguiente nos aparecerá una ventana donde crear la relación maestro-detalle.Escogeremos la tabla Alumno y nos quedaremos con todos sus atributos. Los atributos que se mostrarán serán todos menos el PID. Como elemento detalle y como elemento maestro escogeremos el atributo PID. Le daremos al botón Terminar.

. los profesores). Esto tiene el inconveniente de que nos muestra también aquellas personas que no son alumnos (o sea. Cuando lo ejecutemos nos daremos cuenta que los campos de los alumnos sólo se nos rellenarán cuando estemos moviéndonos por una persona que sea un alumno.Una vez terminado el asistente de diseño. desde el editor de diseño adecuaremos el aspecto visual del formulario a nuestro gusto.

Nota: Para que nos muestre tan sólo a los alumnos.sans-serif."><span style="color: #000000. una forma de hacerlo es con la siguiente consulta: <span style="background-color: #dddddd. vamos a restringir los elementos que nos traemos en el bloque de datos Persona. font-family: Arial. encontramos la propiedad Cláusula WHERE que inicialmente está vacía.">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. Supongamos que en SQL sólo queremos obtener aquellas personas que son alumnos. Si la rellenamos con pid IN (SELECT pid FROM alumno). ¡Qué no se te olvide guardarlo! . en el apartado Base de Datos. al ejecutar de nuevo el formulario sólo nos mostrará a los alumnos.Helvetica.

en el navegador de objetos. Nota: Si queremos que cuando ejecutemos un formulario no tengamos que pulsar el botón Ejecutar Consulta para empezar a visualizar los registros vamos a hacer que lo haga de forma automática cuando cree el formulario. nos vamos a Disparadores y pulsamos el botón de crear . .EJERCICIO: Hacer un formulario maestro detalle para los profesores de forma análoga a como hemos realizado el ejemplo anterior. seleccionamos el disparador WHEN-NEWFORM-INSTANCE y pulsamos el botón de Aceptar. Para ello. Será más fácil si no modificas el diseño hasta que no tienes los bloques maestro y detalle.

Helvetica.</span></span></span> 2 Formulario Matrícula ."><span style="color: #000000. <span style="background-color: #dddddd.En la ventana de Editor PL/SQL escribimos la línea <span style="background-color: #dddddd.">que si nos fijamos es ejecutar_consulta en inglés. le damos al botón Compilar y luego a Cerrar. De esta forma cada vez que ejecutemos el formulario no tendremos que pulsar el botón Ejecutar Consulta para ver los registros.sans-serif. font-family: Arial."> execute_query. font-size: medium.

pulsamos Siguiente y al marco le damos el título de Matrícula. En el asitente de diseño. En este formulario podremos borrar/añadir asignaturas a una matrícula.Vamos a hacer un formulario maestro-detalle. Vamos a hacerlo de forma similiar a como hemos realizado el anterior ejemplo. después pulsamos Terminar."> </span> . escogemos un estilo de diseño Pantalla. donde el maestro será la tabla Matrícula y el detalle la tabla DetalleMatrícula. para el bloque maestro. pero con dos pequeñas diferencias. <span style="background-color: #dddddd.

para el bloque detalle (que es la tabla DetalleMatricula). los registros visualizado serán 10 y marcaramos la casilla de Visualizar Barra de Desplazamiento. escogemos un estilo de diseño Tabular. después pulsamos Terminar. es que en el asistente de diseño.La segunda diferencia. pulsamos Siguiente y al marco le damos el título de Asignaturas. De esta forma y retocando un poco con el editor de diseño debería quedar algo parecido a: .

Las listas dinámicas se construirán cada vez que ejecutemos el formulario a partir de los valores almacenados en la base de datos. es decir. La siguiente mejora será utilizar una lista desplegable como las usadas en Tipo y en Número de plazos. de forma que incluyese la nueva asignatura como una opción más de la lista. . para ello vamos a realizar varios cambios.Este formulario queda bastanta poco intuitivo y dificil de utilizar. para cada asignatura que se añada a la base de datos tendríamos que cambiar el diseño de nuestro formulario.U (respectivamente). Libre. Esto no es realista es un entorno normal. 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. no tendría sentido. de forma que aparezcan las opciones: Ordinaria. con los conocimientos que tenemos. que tome los valores 1 ó 2. no se cambia la aplicación cuando se cambia la base de datos. el primero será realizar una lista estática para el campo Tipo. otra lista. en realidad. en la base de datos se almacene los valores O. L. para las asignaturas. Personal Universidad y que. Para esto vamos a realizar listas dinámicas a contraposición de las usadas hasta hora que son estáticas. Y el número de plazos.

font-family: 'Times New Roman'. font-size: medium. en realidad) y le damos al botón de crear .">) . font-family: 'Times New Roman'. en el Navegador de Objetos. lo primero que tenemos que hacer es definir el campo Nombre de DetalleMatrícula como Elemento de Lista. para esto podemos usar el valor por defecto Base de Datos (Correspondencia con otros valores). font-family: Arial. y en la lista podemos añadir el elemento Base de Datos y que almacene Base de Datos en la base de datos. seleccionaremos Grupo de Registros (una consulta. font-size: medium. font-size: medium.">Con esta consulta. Usaremos un valor por defecto conocido y rellenaremos la lista con un sólo valor (esto es para que forms developer no nos diga que la lista está mal)."><span style="color: #000000.Helvetica.Construiremos una lista dinámica para la parte de asignaturas a partir de la tabla Asignaturas.">nombre</span>__<span style="background-color: #dddddd.sans-serif. Ya tenemos una lista estática que si compilamos el formulario no nos sirve de nada."> SELECT nombre.">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-size: medium. para hacerla dinámica 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. nombre FROM Asignatura order by 1 <span style="background-color: #dddddd. obtendremos el valor que se mostrará en la lista (</span>__<span style="background-color: #dddddd. Para ello. introduciendo el siguiente texto: <span style="background-color: #dddddd.

en forma de biblioteca. en el Navegador de Objetos. A la nueva consulta creada. que será llena_listas y le damos al botón Aceptar. Introducimos el nombre de la Unidad de Programa. . le damos el nombre de asignaturas (por ejemplo. marcaremos Bibliotecas PL/SQL y le damos al botón de crear .ordenados de forma alfabética. Para ello. ahí seleccionaremos Unidades de Programa y le volvemos a dar al botón de crear . 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 más de una vez en nuestros formularios lo vamos a hacer reutilizable.

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

(por ejemplo. nos vamos a Programa->Compilar Selección). la guardamos como MiBiblioteca. en u:/bd2/). dependiendo de la versión de Developer) y pulsamos el botón de crear damos a Incorporar.Nos vamos a la biblioteca creada y le damos al botón de guardar . recuerda el sitio donde la guardas. dentro de nuestro formulario nos vamos dentro del Navegador de Objetos a Bibliotecas Incorporadas(o Bibliotecas Asociadas. para esto. a cualquier formulario que deseemos crear. Examinamos y seleccionamos la biblioteca y le . Seleccionamos la biblioteca y la compilamos (en el menú. en general. . Ahorá sólo nos queda añadir la biblioteca a nuestro formulario y.

Y añadimos el siguiente código: <span style="background-color: #dddddd. font-size: medium.nombre'. Le damos a </span>{{<span style="background-color: #dddddd. font-family: Arial.Helvetica. font-size: medium.sans-serif. Para esto."> BEGIN llena_listas('DetalleMatricula. sería:</span></span></span> <span style="background-color: #dddddd.">si además queremos que nos salga el formulario inicializado.'asignaturas'). en el navegador de objetos. font-size: medium.nombre'.</span></span> Ya sólo nos queda llamar al procedimiento PL/SQL para que rellene la lista con los datos de la consulta cuando se utilice el formulario.">Cerrar</span>}}</span></span> .">Nos preguntará si suprimir la ruta para que la aplicación sea portable."> y </span>{{<span style="background-color: #dddddd."><span style="color: #000000. font-family: Arial.sans-serif. nos vamos a Disparadores y pulsamos el botón de crear . Esto tiene el problema que si la biblioteca no está en la ruta especificada."><span style="background-color: #dddddd. seleccionamos el disparador WHEN-NEWFORM-INSTANCE y pulsamos el botón de Aceptar. el segundo es la consulta que se va a utilizar para ello. <span style="background-color: #dddddd. el formulario no funcionará. color: #000000."> llena_listas('DetalleMatricula.'asignaturas').">Compilar</span>}}<span style="backgroundcolor: #dddddd.Helvetica.<span style="background-color: #dddddd."><span style="color: #000000. le decimos que No. el primero el bloque datos y elemento a rellenar. font-family: Arial.Helvetica.">Observa que la llamada al procedimiento llena_listas de MiBiblioteca tiene dos párametros. END. execute_query. font-size: medium.sans-serif. Esto es importante a tener en cuenta a la hora de detallar la instalación de un formulario. <span style="background-color: #dddddd.

Finalmente. el formulario tendrá un aspecto similiar a: ¡Qué no se te olvide guardarlo! 3 Bloque LOV (List of Values .Lista de Valores) .

pid. es decir.sans-serif. en muchos casos nos interesará más utilizar bloques LOV. font-family: Arial. Para evitar esto.En lugar de utilizar listas. al menos. seleccionamos Listas de Valores (o elementos LOV. si hubiera que cambiar la asignación de una matrícula a un alumno (por ejemplo. Dejamos seleccionado Nuevo Grupo de Registros basado en una consulta y le damos al botón Siguiente. Le decimos que sí queremos utilizar el Asistente de Listas de Valores. habría que buscar en alumnos el código (o. según la versión de Developer) y le damos al botón de crear . persona ."><span style="color: #000000. para deshacer un error del secretario)."> SELECT alumno. saberlo) y con ese código cambiar la matrícula. vamos a crear un bloque LOV que nos permita ver datos del los alumnos. apellido1. apellido2 FROM alumno. En el navegador de objetos. vamos a introducir la siguiente consulta: <span style="background-color: #dddddd. En la parte de la consulta SQL. Para ilustrar el ejemplo de los bloques LOV: si nos fijamos en el formulario anterior el campo alumno es sólo un código que no nos dice mucho. Con un Bloque LOV podremos asignar más de un valor a la vez. Los bloques LOV son dinámicos en el sentido de que se construyen a partir de los datos de la base de datos y además nos permitirán ver más datos que los que se van a utilizar para rellenar el formulario. nombre.Helvetica. seleccionando un elemento de un bloque LOV podremos rellenar varios campos del formulario a la vez. pero que nos almacene sólo el código del mismo. nif. Abrimos el formulario de matrículas si no lo tenemos abierto ya.

font-size: medium.pid) <span style="background-color: #dddddd. font-size: medium.</span></span></span> En la ventana de selección movemos todos los atributos a la columna de la derecha.WHERE (alumno.">Siguiente</span>}}<span style="background-color: #dddddd. Le damos al botón </span>{{<span style="background-color: #dddddd.">Nos conectamos (si no lo estamos ya) y le damos a </span>{{<span style="background-color: #dddddd. font-size: medium. ya que en la misma consulta hemos seleccionado los atributos que queremos que nos salgan en la lista de valores."> para ver si la consulta está correcta.">Comprobar Sintaxis</span>}}<span style="background-color: #dddddd. . Le damos a Siguiente.pid=persona.">.

y en la fila del PID.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).IDAlumno. ésto lo que hace es devolver el elemento PID del bloque LOV en el campo Matricula. Le damos de título Selección de Alumno. . en la columna Valor de Retorno ponemos MATRICULA. dejando el resto de valores por defecto. Dejamos activado la casilla de Ajustar automáticamente el tamaño de las columnas y pulsamos Siguiente.). podemos seleccionarlo pulsando el botón Buscar elemento de retorno. pulsamos dos veces Siguiente.IDALUMNO (o en lugar de escribirlo. Si quisiéramos devolver más valores utilizaríamos las casillas correspondientes en la columna Valor de retorno...

"> </span> Finalmente desplazamos Matricula. .IDAlumno a la columna de la derecha y le damos al botón Terminar.<span style="background-color: #dddddd.

tienes que irte a la Paleta de Propiedades de la Lista de Valores creada y poner la propiedad Visualización Automática a Sí 4 Ventanas y lienzos . al irnos a la casilla de Alumno. sin tener que pulsar F9.Cuando ejecutemos el formulario. pulsamos F9 y nos aparecerá el bloque LOV. nos saldrá en la barra de estado (abajo) de Oracle Forms Runtime la anotación Lista de Valores. Si quieres que la Lista de Valores se visualice automáticamente al irnos a la casilla de Alumno.

También veremos un tipo especial de ventanas que son las Alertas y que nos serán muy útiles. Podemos distinguir distintos tipos de lienzos: Contenido: Elemento contenedor de otros. después de la bienvenida aparece la ventana Tipo de Lienzo y que. cada uno en una pestaña. Cuando ejecutamos un formulario se dispone una ventana principal que no dispone de lienzos. ya que es un lienzo contenedor de los elementos del formulario o de otros lienzos Apilado: Un lienzo que se muestra encima de otros. seleccionando todos sus atributos. . 4. mediante la cual se visualiza el resto de las ventanas que si contendrán lienzos. Es el que se crea por defecto con un formulario nuevo y una ventana debe tener al menos un lienzo de este tipo. De esta forma tendremos un bloque de datos Maestro (Matrícula) y dos bloques Detalle (Asignaturas y Pagos). como ya hicimos en el aparatado 2. vamos a ver los lienzos tabulares y las barras de herramientas. Barra de Herramientas: Contiene botones que se muestran en forma vertical u horizontal en la ventana.1 Lienzos tabulares Vamos a realizar un formulario de Matriculación donde en una parte tengamos los datos de la matrícula y abajo tengamos dos pestañas: una con las asignaturas asociadas a la matrícula y otra con los pagos de la matrícula. por defecto. Abrid Form Builder (empezamos sin ningún formulario) y mediante el Asistente creamos nuestro bloque de datos asociado a la tabla matrícula.Los Lienzos son elementos del diseño sobre el que se sitúan los otros elementos de nuestro formulario. Una ventana actúa como un visor sobre el lienzo permitiendo desplazarse por su contenido. Tabular: Lienzo para poder hacer pestañas en nuestro formulario. Fíjate que en el asistente de diseño. tiene un tipo de lienzo contenedor. Como ya hemos visto de forma implícita el uso de lienzos contenedores y los lienzos apilados se pueden simular poniendo los elementos de distintos bloques de datos en el mismo lienzo.

fmb. por ejemplo. Verifica que funciona y guárdalo. . Observa que moviéndonos con la barra de desplazamiento nos vamos moviendo por las distintas tuplas de la tabla Matrícula. en formato Pantalla.Visualizad todos los campos. que el título del marco sea Matrícula. se vea un sólo registro y tenga la barra de desplazamiento. como Matriculacion2.

Visualizaremos sólamente el campo Nombre (de una asignatura) y elegiremos una presentación tabular visualizando 5 registros y la barra de desplazamiento. debes seleccionar primero el bloque de datos maestro y darle al botón de crear). En el Asistente de Diseño. seleccionando todos sus campos. dentro de éste. . Vamos a crear el bloque detalle basado en la tabla DetalleMatrícula (recuerda que para crear un bloque detalle.Ahora vamos a crear la primera pestaña para las asignaturas. En el navegador de objetos buscamos en Lienzos el nuevo lienzo tabular que hemos creado (puedes ver el nombre en el editor de diseño) y. que tendrá un nombre parecido a PAGE5 (puedes hacerlo en la Paleta de Propiedades cambiando el atributo Etiqueta por el valorAsignaturas). en Páginas con Pestaña le cambiamos el nombre a la primera que hay. vamos a asignarle un lienzo nuevo (Nuevo Lienzo) que será de tipo Tabular y una Nueva Página con Pestaña. en la ventana de Tipo de Lienzo.

Al ejecutar el formulario. vamos a asignarle el lienzo tabular antes creado con las asignaturas. en este caso ya que al tener dos bloques de datos el asistente se puede confundir. hacemos la relación basada en una condición de unión sobre el campo IDMatricula de Matricula y el campo IDMatricula de Pago. antes de pulsar Crear Relación desactivamos Unir automáticamente bloques de datos. al crear la relación. en la ventana Tipo de Lienzo. luego lo cambiaremos. no importa. En el Asistente de Diseño. . Ahora vamos a crear la segunda pestaña para el bloque detalle Pagos seleccionando todos sus campos. pero sí vamos a seleccionar una Nueva Página con Pestaña. Ten cuidado. sólo verás la parte de matrícula. Para evitarlo.

Visualizaremos todos los campos menos IDMatricula. Para ello. Ten en . abrimos la Paleta de Propiedades y cambiamos la propiedadPosición Y en la Puerta de Vista a 90 y la propiedad Bisel a Ninguno De esta forma colocaremos el lienzo con las pestañas debajo de los datos de la matrícula. de título Pagos. y que se muestren sólo 2 registros. como hicimos anteriormente para las asignaturas (cambiando la propiedad Etiqueta por Pagos de la nueva página con pestaña creada). Ahora vamos a redimensionar los lienzos para que se vean al ejecutar el formulario. sin barra de desplazamiento. Escogemos un diseño tabular. en el navegador de objetos. nos vamos a los lienzos y seleccionamos el lienzo Tabular (el segundo). Le cambiamos el nombre a la pestaña.

. el lienzo. . Ejecutamos. no se visualizará correctamente. seleccionamos el lienzo tabular y le damos al botón Aceptar. Si en el navegador de objetos. corregimos y guardamos el formulario. en el editor de diseño del bloque maestro vete a la opción Ver del menú y de ahí a Vistas Apiladas .. el bloque de datos Maestro (Matricula) está después de un bloque de datos detalle.cuenta en redimensionar el lienzo de la Matrícula (si no es lo suficientemente grande) para que quepa debajo el lienzo tabular. Si se quiere ver en el editor de diseño los dos lienzos en lugar de tener dos editores de diseño (uno por lienzo).. lo que hacemos es quitar una línea que separa los dos lienzos. Poniendo Bisel a ninguno.

Hay tres tipos de estilos de alerta: Parar. en le navegador de objetos. Matriculación. seleccionamos Alertas y pulsamos el botón de crear Abrimos la paleta de propiedades de la alerta creada. "Si" "No" y "Cancelar"). para ello tendremos que tenerlo abierto previamente con Forms Builder. 4.Para cambiar el título de la ventana. . Cambia la propiedad Título a. vete a Ventanas. Vamos a crear una alerta que nos muestre un mensaje de bienvenida cuando se ejecute el formulario de Matriculación. selecciona la que hay y abre su paleta de propiedades. . En el Navegador de Objetos. Básicamente mostrará un mensaje y puede tener hasta tres botones (por ejemplo.2 Ventanas de Avisos (Alertas) Developer tiene un tipo especial de ventanas para enviar avisos al usuario. por ejemplo. Precaución y Nota.

Cambiamos las siguiente propiedades: A Nombre le damos Bienvenida A Título le damos Bienvenido A Mensaje le damos Bienvenido al proceso de matriculación. para ello. A Etiqueta de Botón 1 escribimos Aceptar A Etiqueta de Botón 2 y a Etiqueta de Botón 3 lo dejamos en blanco Ya sólo nos queda llamar a la alerta. font-family: Arial. /*Miramos que botón se ha pulsado*/ ."> DECLARE boton NUMBER."><span style="color: #000000.sans-serif. BEGIN /*Mostramos la alerta BIENVENIDA y guardamos el botón pulsado*/ boton := Show_Alert('Bienvenida').Helvetica. escribimos el código: <span style="background-color: #dddddd. en el disparador WHEN_NEW_FORM_INSTANCE.

dos para movernos entre los registros. vamos a crear una para nuestro formulario de matriculación que será horizontal y con cuatro botones. La barra de herramientas tendrá el siguiente aspecto: Lo primero será crear un lienzo. <span style="background-color: #dddddd.IF boton = ALERT_BUTTON1 THEN /*Sólo hay uno. algo parecido a</span></span></span> La función Show_alert devuelve el número ALERT_BUTTON1. END. para ello. al ejecutar el formulario nos debería salir. ALERT_BUTTON2. Abre la paleta de propiedades del lienzo creado y cambia las siguientes A Nombre le damos Botones . END IF.">De esta forma. no hacemos nada*/ NULL. en el navegador de objetos vete a lienzos y pulsa el botón de crear propiedades: .3 Barras de herramientas Para ilustrar el funcionamiento de una barra de herramientas. mostrando un aviso antes. otro para almacenar los cambios realizados y un cuarto botón para cerrar el formulario. ALERT_BUTTON3 dependiendo de que botón haya sido pulsado 4. /*Rellenamos el formulario*/ Execute_Query. font-size: medium.

tendrá este aspecto: . pero sólo deberías tener una) A Altura le escribimos 30 Abrimos el editor de diseño. le añadimos los cuatro botones para que tengan un aspecto parecido a lo que estamos buscando. seleccionando previamente el lienzo creado.A Tipo de Lienzo le damos Barra de Herramientas Horizontal A Ventana le damos WINDOWS1 (o la que tengas si tienes otra. Inicialmente. Mediante el botón para crear botones .

>.posterior. salva y salida. Debiendo quedar algo como: Mediante la paleta de propiedades de cada botón.Fíjate que los botones se deben de crear como elementos del bloque de datos Matricula. le cambiamos la propiedad Etiqueta a los valores <. Guardar y Cerrar y la propiedad Nombre a los valores anterior. .

"><span style="color: #000000. <span style="background-color: #dddddd.">. font-family: Arial. font-size: medium. font-size: medium.Helvetica. el código es:</span></span></span> <span style="background-color: #dddddd. font-size: medium.">commit_form.">posterior</span>//<span style="background-color: #dddddd.sans-serif.">do_key('up')."> do_key('down').">para el botón </span>//<span style="background-color: #dddddd.Helvetica.">."><span style="color: #000000."><span style="color: #000000. font-family: Arial.Ahora mismo si ejecutamos el formulario."><span style="background-color: #dddddd. font-family: 'Times New Roman'. pero con el código:</span></span></span> <span style="background-color: #dddddd.</span></span> <span style="background-color: #dddddd.sans-serif.Helvetica.">e igualmente para el botón </span>//<span style="background-color: #dddddd. con el siguiente código: <span style="background-color: #dddddd. font-size: medium.</span></span> . font-size: medium. Para el botónanterior creamos un nuevo disparador del tipo WHENBUTTON-PRESSED. font-family: Arial.sans-serif.Helvetica.sans-serif. nos aparecerá la barra de herramientas pero los botones no hacen nada. font-family: Arial."><span style="color: #000000. font-size: medium. font-family: 'Times New Roman'.">salva</span>//<span style="background-color: #dddddd.

el código del disparador WHEN-BUTTON-PRESSED. usaremos una alerta que pregunte si se quieren almacenar los cambios antes de salir y que tenga tres botones. Ahora nos quedan el otro botón que es un poco más complicados. Dependiendo del botón que se pulse se guardarán los resultados y se cerrará el formulario. lo primero. "Si" "No" y "Cancelar". Para ello. será crear una Alerta con las siguientes propiedades: A Nombre le damos Salir A Título le damos Salir ."> </span> Al ejecutar el formulario comprobarás que los botones ya funcionan (con excepción al de cerrar). En el botón de salir. no se guardarán los cambios y saldrá del formulario y no hará nada (respectivamente).<span style="background-color: #dddddd. se ejecuta (como dice su nombre) cuando se pulsa un botón.

Helvetica.">DECLARE boton NUMBER.sans-serif."><span style="color: #000000.A Mensaje le damos ¿Quieres almacenar los cambios antes de salir? A Estilo de Alerta le damos Precaución A Etiqueta de Botón 1 escribimos Sí A Etiqueta de Botón 2 escribimos No A Etiqueta de Botón 1 escribimos Cancelar Para terminar al botón Salida para su disparador WHEN-BUTTON-PRESSED le asignamos el siguiente código: <span style="background-color: #dddddd. BEGIN /*Preguntamos si guardar*/ boton := show_alert('salir'). . font-family: Arial.

</span></span> El aspecto del formulario será: . guardamos los cambios*/ if boton = ALERT_BUTTON1 then commit_form. END. /*Si no se ha pulsado el tercer botón./*Si se ha pulsado el primer botón. nos salimos*/ if boton <> ALERT_BUTTON3 then exit_form(no_commit). end if. end if.

nos creará un nuevo campo de texto.abonado*pago. y dos campos uno con la suma de las cantidades de los pagos (Precio Total matrícula) y otro con la suma de las cantidades pagadas (Total Pagado).cantidad) que nos muestre para un pago dado si se ha pagado o no.abonado*:pago.5 Elementos con resultados de cálculos En Developer se pueden crear campos que muestren datos calculados a partir de otros campos. 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 Cálculo le escogemos Fórmula En Fórmula escribimos :pago. En el navegador de objetos seleccionamos Elementos del bloque de datos Pago y pulsamos el botón de crear . basta con cambiar el valor de Abonado. . se verán dos campos de texto).cantidad En Elemento de Base de datos elegimos No A Lienzo le asignamos el lienzo tabular (el segundo creado) En Página con Pestaña le damos la página con la pestaña de pagos (la segunda creada) A Prompt le damos el valor Pagado En Justificación del Prompt nos quedamos con Centro En Borde del anexo del Prompt escogemos Superior En el editor de diseño colocamos mejor el campo creado (como son dos pagos. Si ejecutamos el formulario comprobaremos que funciona. Para ilustrar esta funcionalidad. para cada pago vamos a añadir un campo que sea Pagado (pago.

Al campo situado más a la izquierda.En el editor de diseño creamos dos nuevos campos de texto . los arrastraremos hasta el bloque de datos Pago que es donde queremos hacer los cálculos. mediante la paleta de propiedades. no hay ningún problema. le modificamos los siguiente atributos: A Nombre le damos Total A Tipo de Dato le damos Number A Modo de Cálculo le escogemos Total En Función totalizar seleccionamos Sum En Bloque de Total elegimos Pago En Elemento de Total ponemos Cantidad En Número de elementos visualizados escribimos 1 En Elemento de Base de datos elegimos No . Si los campos de texto creados nos aparecen en el bloque de datos Pago (¡Nos saldrán dobles!). pero si nos salen en el bloque de datos Matrícula (como en el ejemplo). tal y como muestra la figura.

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 Cálculo le escogemos Total En Función totalizar seleccionamos Sum En Bloque de Total elegimos Pago En Elemento de Total ponemos Pagado En Número 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 sólo 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.A Prompt le damos el valor Precio Total Matrícula En Grosor de la Fuente del Prompt nos quedamos con Negrita Al campo situado más a la derecha.

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