OracleForms Tutorial

download OracleForms Tutorial

of 44

Transcript of OracleForms Tutorial

  • 8/11/2019 OracleForms Tutorial

    1/44

    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 ellorealizaremos una serie de pasos:

    1. Crear el bloque de datos Persona que muestra una nica persona2. Crear el bloque detalle Alumno asociado a cada persona

    1.1 Bloque Maestro Persona

    EjecutarForm Builder, que es la herramienta para construir formularios

    Lo primero que nos saldr ser una pantalla de bienvenida con diversas opciones, nosotrosescogeremos 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

  • 8/11/2019 OracleForms Tutorial

    2/44

    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 creadoen la fase de instalacin (casapara la base de datos local, ugrpara la base de datos de laescuela y si estamos en las aulas de prcticas la dejamos en blanco). Por ejemplo:

  • 8/11/2019 OracleForms Tutorial

    3/44

    Si nos hemos identificado correctamente nos saldr una lista con las tablas y vistas del

    usuario con el que nos hemos conectado, seleccionamos la tablaPersonay pulsamos

    Aceptar. En la columna de la izquierda tenemos los atributos de la tabla seleccionada y enla 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 damosal 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 elLienzo y tipo de Lienzo, lo ignoramos y le damos al botn Siguiente. Nos aparecer una

  • 8/11/2019 OracleForms Tutorial

    4/44

    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 laderecha.

    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 PIDque 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 albotn Terminar.

  • 8/11/2019 OracleForms Tutorial

    5/44

    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 Diseoque nospermite ver el aspecto de nuestro formulario y lo que es ms importante, modificarlo.

  • 8/11/2019 OracleForms Tutorial

    6/44

    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 esdemasiado grande para almacenar tan slo un nmero. Podemos hacer todos los cambiosque consideremos necesarios en el diseo para que se quede a nuestro gusto. (Ten en

    cuenta que para deshacer se usan las teclas CTRL+Z)

  • 8/11/2019 OracleForms Tutorial

    7/44

    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 eleditor 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 sunombre indica, las distintas propiedades que puede tener un elemento y que ya iremosviendo 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 OracleForms 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 commiten 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 aquellastuplas de la base de datos que cumplan una determinada condicin.

  • 8/11/2019 OracleForms Tutorial

    8/44

    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 ledamos 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 nopodrs 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 Ho M, pues al crear la base de datos

    forzamos mediante la clusula CHECK IN que as fuera. Para evitar problemas, ya quepuede 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 mencontextual 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 Diseocomo ya sabes). Cambiaremos el atributoTipo de Elementoa Elemento de Listay el

    atributo Correspondencia con otros valoreslo ponemos a M(sera el valor por defecto).

    Ahora cambiamos la propiedad Elementos de la listadonde nos saldr una subventana con

    dos partes, en la primera ser cada uno de los valores de la lista que se muestran, y elcampo de abajo para cada uno de esos valores que se muestran los valores que sealmacenan en la base de datos, de esta forma, en la lista de valores que se muestran

    pondremos Hombrey Mujery los valores correspondientes que se guardarn sern,lgicamente, Hy M

  • 8/11/2019 OracleForms Tutorial

    9/44

    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 dedatos (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 albotn 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. Marcamosla casilla de Unir Automticamente bloques de datos.

  • 8/11/2019 OracleForms Tutorial

    10/44

    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 loscampos de los alumnos slo se nos rellenarn cuando estemos movindonos por una

  • 8/11/2019 OracleForms Tutorial

    11/44

    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 queremosobtener aquellas personas que son alumnos, una forma de hacerlo es con la siguienteconsulta:

    SELECT * FROM persona WHERE pid IN (SELECT pid FROM alumno)

    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 larellenamos con pid IN (SELECT pid FROM alumno), al ejecutar de nuevo el formulario slonos 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.

  • 8/11/2019 OracleForms Tutorial

    12/44

    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 deforma automtica cuando cree el formulario. Para ello, en el navegador de objetos, nos

    vamos a Disparadoresy pulsamos el botn de crear , seleccionamos eldisparador WHEN-NEW-FORM-INSTANCE y pulsamos el botn de Aceptar.

    En la ventana de Editor PL/SQL escribimos la lnea

    execute_query;

  • 8/11/2019 OracleForms Tutorial

    13/44

    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 elbotn Ejecutar Consulta para ver los registros.

    2 Formulario Matrcula

    Vamos a hacer un formulario maestro-detalle, donde el maestro ser la tabla Matrcula y eldetalle la tabla DetalleMatrcula. En este formulario podremos borrar/aadir asignaturas a

    una matrcula. Vamos a hacerlo de forma similiar a como hemos realizado el anteriorejemplo, pero con dos pequeas diferencias.

    En el asitente de diseo, para el bloque maestro, escogemos un estilo de diseo Pantalla,

    pulsamos Siguientey al marco le damos el ttulo de Matrcula, despuspulsamos Terminar.

  • 8/11/2019 OracleForms Tutorial

    14/44

    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 Siguientey almarco 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:

  • 8/11/2019 OracleForms Tutorial

    15/44

    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 queaparezcan 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 dela 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 datostendramos 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 apartir de los valores almacenados en la base de datos.

    Construiremos una lista dinmica para la parte de asignaturas a partir de la tablaAsignaturas. 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 yrellenaremos 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 Basede 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:

    1. Escribir una consulta que obtenga las distintas asignaturas de la base de datos con lasque construiremos la lista

    2. Escribir un prodecimiento PL/SQL que se encargue de rellenar la lista con los datosobtenidos en la anterior consulta

    3. Llamar al procedimiento PL/SQL para que rellene la lista cuando se utilice el

    formulario

  • 8/11/2019 OracleForms Tutorial

    16/44

    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:

    SELECT nombre, nombre FROM Asignatura order by 1

    Con esta consulta, obtendremos el valor que se mostrar en la lista (nombre) y el valorcorrespondiente que se alamcenar en la base de datos (nombre) ordenados de forma

    alfabtica. A la nueva consulta creada, le damos el nombre de asignaturas (por ejemplo,

    usando la paleta de propiedades -> nombre)

    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 nuestrosformularios lo vamos a hacer reutilizable, en forma de biblioteca. Para ello, , en el

    Navegador de Objetos, marcaremos Bibliotecas PL/SQLy le damos al botn de crear ,

    ah seleccionaremos Unidades de Programay 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.

  • 8/11/2019 OracleForms Tutorial

    17/44

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

    PROCEDURE llena_listas (lista in VARCHAR2, grupo in VARCHAR2) ISverror 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; /*no se hace nada*/else

    raise errorRellenoLista;end if;EXCEPTION

    when errorRellenoLista thenmessage ('Excepcin: no se puede rellenar la '||lista||

    ' con la consulta de '||grupo||'.');

    END;

    Pulsamos Compilary si no hay ningn problema, le damos a Cerrar

    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/). Seleccionamosla 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 dentrodel Navegador de Objetos a Bibliotecas Incorporadas(o Bibliotecas Asociadas,

  • 8/11/2019 OracleForms Tutorial

    18/44

    dependiendo de la versin de Developer) y pulsamos el botn de crear . Examinamos y

    seleccionamos la biblioteca y le damos a Incorporar.

    Nos preguntar si suprimir la ruta para que la aplicacin sea portable, le decimos que No. Estotiene el problema que si la biblioteca no est en la ruta especificada, el formulario nofuncionar. Esto es importante a tener en cuenta a la hora de detallar la instalacin de un

    formulario.

    Ya slo nos queda llamar al procedimiento PL/SQL para que rellene la lista con los datosde la consulta cuando se utilice el formulario. Para esto, en el navegador de objetos, nos

    vamos a Disparadoresy pulsamos el botn de crear , seleccionamos el

    disparadorWHEN-NEW-FORM-INSTANCE y pulsamos el botn de Aceptar. Yaadimos el siguiente cdigo:

    llena_listas('DetalleMatricula.nombre','asignaturas');

    si adems queremos que nos salga el formulario inicializado, sera:BEGIN

    llena_listas('DetalleMatricula.nombre','asignaturas');execute_query;

    END;

    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 Compilary Cerrar

  • 8/11/2019 OracleForms Tutorial

    19/44

    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. Losbloques 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 pararellenar 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 delsecretario), habra que buscar en alumnos el cdigo (o, al menos, saberlo) y con ese cdigocambiar 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

    elAsistente de Listas de Valores. Dejamos seleccionado Nuevo Grupo de Registros basado

    en una consulta y le damos al botn Siguiente.

  • 8/11/2019 OracleForms Tutorial

    20/44

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

    SELECT alumno.pid, nif, nombre, apellido1, apellido2FROM alumno, personaWHERE (alumno.pid=persona.pid)

    Nos conectamos (si no lo estamos ya) y le damos a Comprobar Sintaxispara ver si la consulta

    est correcta. Le damos al botnSiguiente.

  • 8/11/2019 OracleForms Tutorial

    21/44

    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 lalista 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 filadel PID, en la columna Valor de Retorno ponemos MATRICULA.IDALUMNO (o enlugar de escribirlo, podemos seleccionarlo pulsando el botnBuscar elemento de

    retorno...), sto lo que hace es devolver el elemento PID del bloque LOV en el campoMatricula.IDAlumno. Si quisiramos devolver ms valores utilizaramos las casillascorrespondientes en la columna Valor de retorno. Dejamos activado la casilla de Ajustar

    automticamente el tamao de las columnasy pulsamos Siguiente.

    Le damos de ttulo Seleccin de Alumno, dejando el resto de valores por defecto, pulsamos

    dos veces Siguiente.

  • 8/11/2019 OracleForms Tutorial

    22/44

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

  • 8/11/2019 OracleForms Tutorial

    23/44

  • 8/11/2019 OracleForms Tutorial

    24/44

    4. 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 lienzosapilados 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. Tambinveremos 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 datosMaestro (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 lienzocontenedor.

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

  • 8/11/2019 OracleForms Tutorial

    25/44

    Verifica que funciona y gurdalo, por ejemplo, como Matriculacion2.fmb. Observa que

    movindonos con la barra de desplazamiento nos vamos moviendo por las distintas tuplasde 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 TabularyunaNueva 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 elnombre en el editor de diseo) y, dentro de ste, en Pginas con Pestaale cambiamos el

  • 8/11/2019 OracleForms Tutorial

    26/44

    nombre a la primera que hay, que tendr un nombre parecido a PAGE5 (puedes hacerlo en

    la Paleta de Propiedades cambiando el atributoEtiquetapor el valorAsignaturas).

    Al ejecutar el formulario, slo vers la parte de matrcula, no importa, luego locambiaremos. Ahora vamos a crear la segunda pestaa para el bloque detalle Pagosseleccionando 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 Relacindesactivamos Unir automticamente bloques de datos, hacemosla relacin basada en una condicin de unin sobre el campo IDMatricula de Matricula y elcampo 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 unaNueva Pgina conPestaa.

  • 8/11/2019 OracleForms Tutorial

    27/44

    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. Paraello, 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 propiedad Posicin Y en laPuerta de Vistaa 90y la propiedad Bisela 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 suficientementegrande) para que quepa debajo el lienzo tabular. Poniendo Bisel a ninguno, lo que hacemoses quitar una lnea que separa los dos lienzos. Ejecutamos, el lienzo, corregimos y

    guardamos el formulario.

  • 8/11/2019 OracleForms Tutorial

    28/44

    Si en el navegador de objetos, el bloque de datos Maestro (Matricula) est despus de unbloque 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 Verdelmen y de ah a Vistas Apiladas ..., seleccionamos el lienzo tabular y le damos al

    botnAceptar.

  • 8/11/2019 OracleForms Tutorial

    29/44

    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 Ttuloa, por

    ejemplo, Matriculacin.4.2 Ventanas de Avisos (Alertas)

    Developer tiene un tipo especial de ventanas para enviar avisos al usuario. Bsicamentemostrar 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 conForms Builder. En el Navegador de Objetos, seleccionamos Alertasy pulsamos el botn

    de crear . Abrimos la paleta de propiedades de la alerta creada.

  • 8/11/2019 OracleForms Tutorial

    30/44

    Cambiamos las siguiente propiedades:

    ANombrele damos Bienvenida

    A Ttulole damos Bienvenido

    AMensajele damos Bienvenido al proceso de matriculacin.

    AEtiqueta de Botn 1escribimos Aceptar AEtiqueta de Botn 2y aEtiqueta de Botn 3lo dejamos en blanco

    Ya slo nos queda llamar a la alerta, para ello, en el disparadorWHEN_NEW_FORM_INSTANCE, escribimos el cdigo:

    DECLAREboton NUMBER;

    BEGIN/*Mostramos la alerta BIENVENIDA yguardamos 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;

    De esta forma, al ejecutar el formulario nos debera salir, algo parecido a

    La funcin Show_alert devuelve el nmeroALERT_BUTTON1, ALERT_BUTTON2,

    ALERT_BUTTON3dependiendo de que botn haya sido pulsado

  • 8/11/2019 OracleForms Tutorial

    31/44

    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 paramovernos 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 elsiguiente aspecto:

    Lo primero ser crear un lienzo, para ello, en el navegador de objetos vete a lienzos y pulsa

    el botn de crear . Abre la paleta de propiedades del lienzo creado y cambia lassiguientes propiedades:

    ANombrele damos Botones

    A Tipo de Lienzole damos Barra de Herramientas Horizontal

    A Ventanale damos WINDOWS1 (o la que tengas si tienes otra, pero slo deberastener una)

    AAlturale 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 aspectoparecido a lo que estamos buscando. Inicialmente, tendr este aspecto:

  • 8/11/2019 OracleForms Tutorial

    32/44

    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 propiedadEtiquetaa los

    valores , Guardar y Cerrar y la propiedadNombrea losvalores anterior,posterior, salva y salida.

  • 8/11/2019 OracleForms Tutorial

    33/44

    Ahora mismo si ejecutamos el formulario, nos aparecer la barra de herramientas pero los

    botones no hacen nada. Para el botnanteriorcreamos un nuevo disparador deltipo WHEN-BUTTON-PRESSED, con el siguiente cdigo:

    do_key('up');

    e igualmente para el botnposterior, pero con el cdigo:do_key('down');

    para el botnsalva, el cdigo es:commit_form;

    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 sunombre) cuando se pulsa un botn. Ahora nos quedan el otro botn que es un poco mscomplicados. En el botn de salir, usaremos una alerta que pregunte si se quierenalmacenar 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). Paraello, lo primero, ser crear una Alerta con las siguientes propiedades:

    ANombrele damos Salir

    A Ttulole damos Salir AMensajele damos Quieres almacenar los cambios antes de salir?

  • 8/11/2019 OracleForms Tutorial

    34/44

    AEstilo de Alertale damos Precaucin

    AEtiqueta de Botn 1escribimos S AEtiqueta de Botn 2escribimos No

    AEtiqueta de Botn 1escribimos Cancelar

    Para terminar al botn Salidapara su disparador WHEN-BUTTON-PRESSED leasignamos el siguiente cdigo:

    DECLAREboton 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;

    El aspecto del formulario ser:

  • 8/11/2019 OracleForms Tutorial

    35/44

    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 quesea 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 Totalmatrcula) 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 ledamos los siguientes valores:

    ANombrele damos Pagado

    A Tipo de Datole damos Number

    AModo de Clculole escogemos Frmula EnFrmulaescribimos :pago.abonado*:pago.cantidad EnElemento de Base de datoselegimos No

    ALienzole asignamos el lienzo tabular (el segundo creado) EnPgina con Pestaale damos la pgina con la pestaa de pagos (la segunda creada) APromptle damos el valor Pagado

    EnJustificacin del Promptnos quedamos con Centro EnBorde del anexo del Promptescogemos Superior

  • 8/11/2019 OracleForms Tutorial

    36/44

    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 concambiar el valor de Abonado.

    En el editor de diseo creamos dos nuevos campos de texto , tal y como muestra lafigura.

    Si los campos de texto creados nos aparecen en el bloque de datos Pago (Nos saldrndobles!), no hay ningn problema, pero si nos salen en el bloque de datos Matrcula (comoen el ejemplo), los arrastraremos hasta el bloque de datos Pago que es donde queremoshacer los clculos.

    Al campo situado ms a la izquierda, mediante la paleta de propiedades, le modificamoslos siguiente atributos:

    ANombrele damos Total

    A Tipo de Datole damos Number A

    Modo de Clculole escogemos Total

    EnFuncin totalizarseleccionamos Sum

    EnBloque de Totalelegimos Pago EnElemento de Totalponemos Cantidad

    EnNmero de elementos visualizadosescribimos 1

    EnElemento de Base de datoselegimos No

    APromptle damos el valor Precio Total Matrcula En Grosor de la Fuente del Promptnos quedamos con Negrita

    Al campo situado ms a la derecha, mediante la paleta de propiedades, le modificamos los

    siguiente atributos:

  • 8/11/2019 OracleForms Tutorial

    37/44

    ANombrele damos TotalPagado

    A Tipo de Datole damos Number AModo de Clculole escogemos Total

    EnFuncin totalizarseleccionamos Sum EnBloque de Totalelegimos Pago EnElemento de Totalponemos Pagado EnNmero de elementos visualizadosescribimos 1

    EnElemento de Base de datoselegimos No APromptle damos el valor Total Pagado

    En Grosor de la Fuente del Promptnos quedamos con Negrita

    Al bloque de datos Pago le cambiamos la propiedad Consultar todos los registrosa S y lapropiedadPrecalcular TotalescomoNo. 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)

    6 Mens

    Cualquier formulario tiene un men por defecto que permite ejecutar las rdenes

    habituales, algunas de ellas las vimos al principio cuando ejecutamos nuestro primer

    formulario. El men por defecto no se puede modificar, pero si se puede cambiar por un

    men personalizado, para ello, es conveniente partir de un men previamente definido,nosotros usaremosmenudef.mmb.

    http://flanagan.ugr.es/docencia/2005-2006/2/developer/developer/menudef.mmbhttp://flanagan.ugr.es/docencia/2005-2006/2/developer/developer/menudef.mmbhttp://flanagan.ugr.es/docencia/2005-2006/2/developer/developer/menudef.mmbhttp://flanagan.ugr.es/docencia/2005-2006/2/developer/developer/menudef.mmb
  • 8/11/2019 OracleForms Tutorial

    38/44

    Empezamos con el formulario para matriculaciones con el que hemos estado trabajando.

    En el navegador de objetos, seleccionamosMensy pulsamos el botn de abrir ,seleccionamos el ficheromenudef.mmb(ten en cuenta en la ruta donde lo has guardado).

    Seleccionamos el men incorporado y pulsando el botn derecho del ratn, nos vamos al

    Editor de Mens.

    Lo primero que haremos para familiarizarnos con el editor de mens es traducir lasentradas del ingls al castellano, quedando con el siguiente aspecto:

    Lo siguiente que vamos a hacer en crear una opcin del men que llame al formulario de

    alumnos. Para ello vamos a crear una entrada nueva en la opcin de men Consulta.Debajo de Sig. Grupo, vamos a crear un separador, para ello nos vamos a Consulta-

    >Sig.Grupoy pulsamos el botn de Crear debajo . Al nuevo elemento del men lecambiamos las siguiente

    propiedades:Nombre:SeparadorForms,Etiqueta: SeparadorForms, Tipo de Elemento deMen: Separador.

    http://flanagan.ugr.es/docencia/2005-2006/2/developer/developer/menudef.mmbhttp://flanagan.ugr.es/docencia/2005-2006/2/developer/developer/menudef.mmbhttp://flanagan.ugr.es/docencia/2005-2006/2/developer/developer/menudef.mmbhttp://flanagan.ugr.es/docencia/2005-2006/2/developer/developer/menudef.mmb
  • 8/11/2019 OracleForms Tutorial

    39/44

    Debajo del separador creado creamos la entrada Formularios pulsando el botn de Crear

    debajo . Al nuevo elemento le damos:Nombre: Formularios,Etiqueta: Formularios, Tipode Elemento de Men: Normal.

    Con la opcin Formularios seleccionada pulsamos el botn de Crear a la derecha . Alnuevo elemento le damos:Nombre:Alumnos,Etiqueta: Alumnos, Tipo de Elemento de

    Men: Normal.

    Para ejecutar el formulario Alumnos cuando se elija la opcin Alumnos del men,

    tendremos que modificar su propiedad Cdigo del Elemento de Men con el siguientecdigo:

    DECLAREparametros Paramlist;BEGIN/*Creamos la lista de parametros vaca*/parametros := Create_Parameter_List('nada');

    /*Llamamos al formulario de Alumnos*/Run_PRODUCT(FORMS,'Alumno',SYNCHRONOUS, RUNTIME, FILESYSTEM,parametros ,NULL);

    END;

  • 8/11/2019 OracleForms Tutorial

    40/44

    La funcin Run_PRODUCTnos servir para ejecutar cualquier elemento de Developer, el

    primer parmetro sera FORMSsi llamamos a un formulario y REPORTSsi llamamos a

    un informe, el segundo parmetros ser el formulario o informe que queremos usar y elpenltimo ser una lista de parmetros que le pasamos al formulario o informe, en esteejemplo, est vaca. Para ms informacin acerca del procedimiento Run_PRODUCT,

    puedes consultar la ayuda interactiva de Developer.

    En el navegador de objetos, seleccionamos el objeto men con el que estamos trabajando ynos vamos a Fichero -> Guardar Como. Lo guardamos como mimenu.mmb. Ya slo nos

    queda compilarlo (mantenindolo seleccionado, nos vamos a Fichero ->Administracin ->

    Compilar Fichero) e incorporar el men compilado al formulario. Para ello, abrimos lapaleta de propiedades del formulario (el nico elemento de Pantallas en el navegador de

    objetos) y cambiamos la propiedadMdulo de Mensa mimenu.mmx. Ejecutamos yprobamos si funciona la opcin de ver el formulario de alumnos.

  • 8/11/2019 OracleForms Tutorial

    41/44

    7 Formularios con parmetros

    Un formulario puede tener parmetros de forma que, cuando lo invoquemos (por ejemplo,

    desde un men o un botn), tenga un comportamiento distinto dependiendo de losparmetros. Un parmetro ser una variable asociada a un Formulario o a un Informe.

    Vamos a crear un formulario donde se visualicen los datos de un alumno en particular y lo

    vamos a invocar desde nuestro formulario de Matriculacin. Primero, copiamos nuestroformulario Alumno.fmb a otro fichero, por ejemplo, AlumnoP.fmb y abrimos el nuevo

    formulario creado. Para crear un parmetro, en el navegador de objetos seleccionamos

    Parmetros y pulsamos el botn de crear . Al nuevo parmetro creado le damos elnombre Seleccionado, ser de tipo numrico (Number) y el valor Inicial ser 1.

  • 8/11/2019 OracleForms Tutorial

    42/44

    El siguiente paso que daremos ser cambiar la clusula WHERE del bloque de datos

    Persona, de forma que se muestre el registro cuyo PID se le pasa como parmetro. Para ellole damos a la propiedad Clusula WHEREel valor pid = :Parameter.seleccionado

    Si ejecutamos el formulario creado nos mostrar la persona con PID igual a 1 (recuerda el

    valor inicial del parmetro). Cerramos el formulario y abrimos el formulario matrcula, en

    ste formulario vamos a aadir un botn nuevo en la barra de herramientas que nos va aservir para abrir el formulario AlumnoP.fmb con el alumno del que estamos visualizandosu matrcula. Para ello, abrimos la barra de herramientas en el Editor de diseo y le

    aadimos un botn , redimensionamos los que tenemos para que quepa correctamente.Abrimos la paleta de propiedades del botn creado y ponemos Alumno en las

    propiedadesNombreyEtiqueta.

  • 8/11/2019 OracleForms Tutorial

    43/44

    Ya tenemos el nuevo botn que ahora mismo no hace nada, para que abra el formularioAlumnoP, le vamos a aadir un disparador del tipo WHEN-BUTTON-PRESSED con elsiguiente cdigo:

    DECLAREparametros Paramlist;

    BEGIN/*Creamos la lista de parmetros*/parametros := Create_Parameter_List('Param');

    /*Le aadimos el alumno a visualizar*/Add_parameter(parametros,'seleccionado',

    TEXT_Parameter,:matricula.IDAlumno);

    /*Llamamos al formulario de Alumnos*/Run_PRODUCT(FORMS,'AlumnoP',SYNCHRONOUS, RUNTIME,

    FILESYSTEM,parametros ,NULL);

    /*Limpiamos la la lista de parmetros creados*/Destroy_Parameter_List(parametros);

    END;

  • 8/11/2019 OracleForms Tutorial

    44/44

    Con el procedimiento Add_parameterse pueden aadir tantos parmetros como haga

    falta, primero tendr la lista de parmetros, despus el nombre del parmetros, el tipo de

    parmetro (normalmente, TEXT_Parameter) y finalmente el valor del parmetro. Observaque aqu escogemos el atributoIDAlumnodel bloque de datosMatricula

    Guardamos y ejecutamos el formulario para ver que el nuevo botn funcionacorrectamente.