tema11 forms oracle

45
Marzo - 2009 Developer - FORMS Curso Base de Datos CURSO BASE DE DATOS F O R M S

Upload: trolmagic

Post on 26-Nov-2015

402 views

Category:

Documents


22 download

TRANSCRIPT

  • Resumen - SQL Pgina 1

    Marzo - 2009

    Developer - FORMS Curso Base de Datos

    CURSO

    BASE DE

    DATOS F O R M S

  • Developer Forms Pgina 2

    Introduccin

    El componente Forms de Developer es la parte del entorno de desarrollo en la que se

    construyen los mdulos de formularios.

    Tambin proporciona el entorno de trabajo para desarrollar mens y mdulos de biblioteca

    PL/SQL.

    El entorno de FORMS consiste de una pantalla con una barra de herramientas, un navegador

    de objetos y una paleta de propiedades.

  • Developer Forms Pgina 3

    Para agregar un nuevo objeto se debe ubicar el cursor sobre este y presionar el botn con el

    smbolo ms (+) de la barra de herramientas izquierda. Para eliminarlo se debe presionar el

    botn con el smbolo equis (X) en la misma barra de herramientas.

    El mdulo de formularios es el componente principal de las aplicaciones interactivas. Tambin

    es el mdulo ms complejo en trminos de estructura interna, ya que contiene clases distintas

    de elementos.

    Cada objeto tiene un conjunto de propiedades visibles en la paleta de propiedades. Para

    modificar una propiedad solamente se necesita ubicar el cursor en la celda junto al nombre de

    la misma y cambiar su contenido.

    Para crear un mdulo es necesario reconocer los objetos que lo componen:

    Lienzo

    El Lienzo es el rea de la ventana en la cual se ubicarn los tems.

    Bloque

    El bloque es una agrupacin lgica de tems. Los bloques pueden estar asociados o no con

    la base de datos en cuyo caso se llamarn bloques de datos. Tambin pueden ser usados

    para controlar la ejecucin del mdulo, en cuyo caso se llamarn bloques de control. Estos

    no estn asociados directamente con objetos de la base de datos.

    tem

    El tem es el objeto de interfaz que despliega informacin. Cada pequeo objeto

    susceptible de ser incluido en un lienzo se considera como un tem. Como por ejemplo

    campos de texto, listas de valores, imgenes, botones de chequeo, botones comunes,

    sonidos, controles de Visual Basic y contenedores OLE, entre otros.

  • Developer Forms Pgina 4

    Creacin de formulario con el asistente

    Si vamos a utilizar elementos de la base de datos, lo primero ser realizar la conexin sobre

    sta.

    Para crear un formulario debemos crear un nuevo mdulo y posteriormente invocar al

    asistente de bloques que se encuentra en el men herramientas.

  • Developer Forms Pgina 5

    Seleccionaremos el tipo de bloque que deseamos crear. Se puede seleccionar entre tabla o

    vista y procedimiento almacenado. Si se selecciona tabla o vista posteriormente se deben

    ingresar las columnas y tablas usadas. Si se elige procedimiento se deben seleccionar los

    procedimientos utilizados para las operaciones de la base de datos.

    Elegir tablas o vistas y columnas del bloque. Adicionalmente se debe chequear la casilla forzar

    integridad referencial si se desea que FORMS use las restricciones definidas en la base de

    datos.

  • Developer Forms Pgina 6

    Si hemos seleccionado tablas o vistas, podemos indicar qu columnas deseamos que

    compongan el bloque.

    Una vez creado el bloque este aparecer en el navegador de objetos con el mismo nombre de

    la tabla base o vista. Si se desea se puede modificar.

  • Developer Forms Pgina 7

    Crear slo el bloque de datos o crearlo y llamar al Asistente de Diseo. Si elegimos sta ltima

    opcin, se nos guiar para presentar los elementos seleccionados.

    Hay dos formas de llegar al Asistente de Diseo, a travs del men herramientas y a travs del

    submen asociado al botn derecho del ratn, el cual aparece al ubicarse sobre un bloque.

    Al iniciar el Asistente de Diseo se debemos seleccionar el lienzo (Canvas) existente o crear

    uno nuevo, y el tipo de lienzo apropiado.

  • Developer Forms Pgina 8

    Seleccionamos el bloque de datos y las columnas que aparecern en el mismo.

    Escribimos el texto que acompaar (Prompt) cada columna y el ancho y la altura del campo.

    Seleccionamos el estilo tabular o formulario.

  • Developer Forms Pgina 9

    Introducimos un ttulo para el marco, el nmero de registros a mostrar y la distancia entre los

    mismos. Tambin se puede seleccionar si se deseamos una barra de desplazamiento de

    registros.

    Una vez finalizado el asistente visualizaremos los registros ubicados en el lienzo.

  • Developer Forms Pgina 10

    Ejecucin de un formulario

    Una vez creado el formulario y guardado, procederemos a la ejecucin.

    Para poder ejecutar el formulario, tenemos que tener iniciada la instancia OC4J.

  • Developer Forms Pgina 11

    Dentro del men Depurar, tenemos la opcin Depurar Mdulo. Y obtenemos el resultado.

    Botones de Oracle Forms Runtime:

    Guardar: Este botn nos permite almacenar las modificaciones hechas en un registro,

    las nuevas tuplas creadas y las entradas eliminadas. Es 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.

  • Developer Forms Pgina 12

    Bloques

    Los bloques de un formulario pueden estar basados en diferentes orgenes. En un tabla, en una

    vista, en una consulta, en un procedimiento.

    Un formulario puede estar compuesto por varios bloques.

    Al crear un segundo bloque basado en otra tabla o vista, el asistente de creacin de bloque,

    nos pregunta sobre la posible relacin maestro detalle de un bloque respecto a otro.

    Donde seleccionamos las columnas que unen el bloque maestro con el bloque detalle.

  • Developer Forms Pgina 13

    El asistente se encarga de crear la relacin entre bloques, procedimiento y disparadores para

    visualizar los datos detalle en relacin a los datos maestros.

    Mediante la paleta de propiedades, respecto a un bloque, podemos modificar la clusula

    WHERE o la clusula ORDER BY, para establecer alguna condicin sobre los datos a recuperar

    por el bloque y/o para indicar una ordenacin especfica.

  • Developer Forms Pgina 14

    Bloques basados en procedimientos

    Los bloques se pueden basar en procedimientos PL/SQL que devuelvan un cursor REF o una

    variable de tabla PL/SQL que contenga una o ms filas. Si basamos un bloque en un

    procedimiento, se nos permite cambiar cualquier elemento de la consulta, incluyendo las

    tablas de origen o de destino. Tambin se pueden utilizar estructuras de bucle y condicionales

    PL/SQL con el fin de manipular los valores antes de devolverlos al bloque. Cuando el bloque

    ejecuta ordenes DML, podemos interceptarlas e interpretarlas segn las necesidades.

    Procedimiento de tipo tabla PL/SQL

    Un bloque se puede basar en un procedimiento que devuelva una tabla PL/SQL, lo cual es til

    cuando se desea que un bloque muestre informacin que dependiera de una consulta SQL

    compleja.

    Procedimiento de tipo REF CURSOR

    Una variable de cursor (REF CURSOR) apunta a una fila especfica de un conjunto de datos

    resultantes de una consulta. Cuando deseemos realizar una consulta, tenemos que declarar el

    cursor REF CURSOR y crear una funcin que recupere las filas en la variable de cursor.

    Una variable cursor REF CURSOR es una referencia a cursores, ms exactamente es un puntero

    a un rea de trabajo, donde Oracle almacena los datos resultantes de una seleccin mltiple

    de registros. Estos punteros almacenan la direccin de memoria del objeto apuntado y por lo

    tanto, se pueden pasar como parmetros de entrada y/o salida entre procedimientos

    almacenados y funciones.

    Un procedimiento almacenado devuelve una referencia a un cursor abierto, rellenado por la

    sentencia SELECT, que se usa como origen de datos para el bloque.

    En un procedimiento PL/SQL puede haber almacenado uno o ms cursores. Mediante

    programacin se podr elegir que cursor se utiliza para rellenar el bloque.

    Los cursores se deben definir antes de la ejecucin, pero se podrn modificar con el uso de

    variables de acoplamiento.

    Un cursor REF CURSOR slo puede ver un origen de datos y no un destino de datos, lo que

    significa que no es posible devolver informacin al procedimiento por medio del cursor REF

    CURSOR.

    Los bloques los deberemos de basar en cursores REF CURSOR cuando se necesite el nivel de

    flexibilidad que este tipo de cursor proporciona.

  • Developer Forms Pgina 15

    Una variable de tipo REF CURSOR se utilizar como valor de retorno para el procedimiento de

    seleccionar y una tabla PL/SQL de registros para pasar valores desde y hacia los

    procedimientos de instrucciones DML y procedimientos de bloqueo.

    Seleccionamos el procedimiento desarrollado para la sentencia SELECT.

  • Developer Forms Pgina 16

    Seleccionamos el procedimiento desarrollado para la sentencia INSERT. A continuacin

    realizamos los mismos pasos para UPDATE, DELETE y BLOCK.

    Un ejemplo de sintaxis tpico de especificacin de paquete para un formulario basado en un

    procedimiento almacenado, podra ser el siguiente:

    create or replace PACKAGE AS

    type IS record(

    ,

    ,

    ..

    );

    type IS REF CURSOR RETURN ;

    type IS TABLE OF INDEX BY binary_integer;

    PROCEDURE seleccionar( IN OUT );

    PROCEDURE insertar( IN OUT NOCOPY );

    PROCEDURE borrar( IN OUT NOCOPY );

    PROCEDURE modificar( IN OUT NOCOPY );

    PROCEDURE bloquear( IN OUT NOCOPY );

    END;

  • Developer Forms Pgina 17

    CONSULTAS

    La funcin de consulta mediante ejemplo, permite al usuario poner la pantalla en el modo de

    introduccin de consulta, introducir algn valor y ejecutar la consulta para recuperar filas de la

    base de datos. Cuando basamos un bloque en una tabla el entorno de ejecucin de Forms

    genera una instruccin SELECT a partir de los elementos de bloque y crea una clusula WHERE

    basada en las condiciones de consulta que introduce el usuario.

    Si basamos un bloque en un procedimiento, el entorno de ejecucin de Forms no crea la

    instruccin SELECT normal, es decir, las condiciones de consulta que introduce el usuario no

    tendrn ningn efecto. Sin embargo, podemos escribir cdigo para emular parte de la

    funcionalidad de la caracterstica de la funcin de consulta mediante ejemplo.

    Debemos modificar el procedimiento de seleccin. Tenemos que pasar parmetros al

    procedimiento para incluirlos en la clusula WHERE de la consulta.

    PROCEDURE seleccionar(

    IN OUT ,

    IN );

    Tambin debemos aadir al procedimiento, dentro de la clusula WHERE de la consulta el

    parmetro pasado, para establecer una condicin.

    WHERE = ;

    Adems debemos cambiar la pantalla. Mediante el Asistente de Bloques, nos situaremos en la

    ficha de Consulta, pulsaremos el botn de Refrescar y aparecer abajo el nuevo parmetro.

    Hay que proporcionar un valor para el argumento en la columna Valor. Proporcionaremos el

    elemento de formulario donde escribiremos el contenido de la consulta, para ello, utilizaremos

    la sintaxis :BLOQUE.ELEMENTO .

  • Developer Forms Pgina 18

    CONTROL MEDIANTE PROGRAMA

    Podemos utilizar la funcin predefinida SET_BLOCK_PROPERTY para cambiar el destino DML y

    el origen de consulta del bloque mediante cdigo PL/SQL.

    SET_BLOCK_PROPERTY( , QUERY_DATA_SOURCE_NAME , ());

    La consulta deber escribirse entre parntesis.

  • Developer Forms Pgina 19

    Elementos

    Mdulo de Formularios

    El mdulo de formularios es el componente principal de las aplicaciones interactivas. Tambin

    es el mdulo ms complejo ya que contiene clases distintas de elementos.

    Disparadores

    Un disparador es un bloque de cdigo PL/SQL que se asocia a otro elemento: un formulario, un

    bloque de datos o un elemento de un bloque de datos. El disparador se dispara o se ejecuta,

    cuando se producen ciertos eventos.

    Los disparadores de una aplicacin de formularios contienen el cdigo que se aade a la

    aplicacin, aparte del cdigo que se introduce en las unidades de programa independientes o

    en bibliotecas.

    Los disparadores y su estructura lgica constituyen la mayor parte del diseo de un formulario.

    La mayora de los disparadores que se utilizan son disparadores incorporados, es decir,

    disparadores proporcionados por el entorno de trabajo de Developer.

    Cada disparador tiene un nombre especfico, por ejemplo, When-Button-Pressed, Post-Query,

    On-Delete que se puede seleccionar de una lista de nombres de disparador.

  • Developer Forms Pgina 20

    Por ejemplo si cuando ejecutemos un formulario queremos que se ejecute una consulta, lo

    vamos a hacer 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-NEW-FORM-INSTANCE y pulsamos aceptar.

    En el editor de PL/SQL bastar con escribir la orden EXECUTE_QUERY, siempre y cuando slo

    exista un bloque en la pantalla. En el caso de existir ms de un bloque, primero debemos de

    activar el bloque mediante la orden GO_BLOCK(NOMBRE_BLOQUE).

    En Developer los triggers se pueden definir a nivel de bloque, tem, registro o formulario. El

    alcance del trigger corresponde con el alcance del nivel de la jerarqua de objetos en que fue

    definido. Por ejemplo, si se asocia un trigger a nivel de bloque los eventos de todos los

    elementos de dicho bloque ejecutarn el trigger.

    Si existe ms de un trigger con el mismo nombre o funcionalidad, en un mbito particular

    Developer lanzar el que est asociado con el elemento ms bajo en la jerarqua. Por ejemplo,

    si existe un trigger WHEN_NEW_ITEM_INSTANCE asociado a un bloque y a un tem, Developer

    ejecuta el trigger del tem e ignora el del bloque. Este comportamiento se puede cambiar

    modificando la propiedad Jerarqua de Ejecucin del trigger.

  • Developer Forms Pgina 21

    Algunos triggers solo tienen validez cuando se definen a un nivel especfico. Por ejemplo

    WHEN_VALIDATE_RECORD no es aplicable a tems individuales, por lo que slo se puede

    definir a nivel de bloque y de formulario.

    Para ver los triggers aplicables a un objeto basta con usar el men asociado con el botn

    derecho del ratn en la opcin Disparadores Smart.

    Disponemos de distintos tipos de disparadores

    De uso de teclas: Los disparadores de teclas, se ejecutan cuando se pulsa una

    combinacin de teclas en la interfaz de usuario. Aadir disparadores de teclas permite

    reprogramar el teclado para realizar acciones diferentes de las definiciones estndar de las

    teclas. (KEY_CLRFRM, KEY_COMMIT, KEY_EDIT, KEY_ENTQRY, KEY_F1, KEY_EXIT).

    De comandos: (ON_CLOSE, ON_COMMIT, ON_ERROR, ON_PULATE_DETAILS,

    ON_ROLLBACK).

    De eventos posteriores al objeto: (POST_QUERY, POST_DELETE, POST_COMMIT,

    POST_UPDATE, POST_TEXT_ITEM, POST_BLOCK).

    De eventos anteriores al objeto: (PRE_DELETE, PRE_FORM, PRE_QUERY,

    PRE_TEXT_ITEM, PRE_BLOCK).

    De eventos inmediatos: (WHEN_BUTTON_PRESED, WHEN_CREATE_RECORD,

    WHEN_LIST_ACTIVATED, WHEN_NEW_ITEM_INSTANCE, WHEN_VALIDATE_ITEM).

    Para controlar los errores presentados en un disparador y no permitir que el usuario avance a

    los tems siguientes se debe invocar la excepcin predefinida FORM_TRIGGER_FAILURE.

  • Developer Forms Pgina 22

    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, Atencin y Nota.

    PARAR

    ATENCIN

    NOTA

    Por ejemplo creamos una alerta que nos muestre un mensaje informativo de bienvenida

    cuando se ejecute el formulario de Proveedores por zonas.

    En el Navegador de Objetos, seleccionamos Alertas y pulsamos el botn de crear. Abrimos la

    paleta de propiedades de la alerta creada.

  • Developer Forms Pgina 23

    Para llamar a la alerta, en el disparador WHEN_NEW_FORM_INSTANCE, escribimos el siguiente

    cdigo:

    DECLARE

    ALERTA NUMBER;

    BEGIN

    ALERTA := SHOW_ALERT('A_PRESENTACION');

    GO_BLOCK('B_PROVEEDORES');

    EXECUTE_QUERY;

    END;

    La funcin SHOW_ALERT devuelve el nmero ALERT_BUTTON1, ALERT_BUTTON2,

    ALERT_BUTTON3 dependiendo de qu botn haya sido pulsado.

    Bibliotecas conectadas

    Es un rea donde se pueden definir enlaces a libreras o bibliotecas pll, donde se encuentren

    las funciones, procedimientos o paquetes.

  • Developer Forms Pgina 24

    Bloques de datos

    El bloque de datos es la unidad de construccin intermedia de los formularios.

    Un bloque de datos se puede ver de dos formas, como una coleccin de elementos o como

    una coleccin de registros, cada uno de los cuales tiene la misma estructura.

    Se puede especificar el nmero de registros que se van a mostrar a la vez.

    Hay dos clases de bloques de datos:

    Un bloque de datos tabla base corresponde a una tabla o una vista de la base de datos

    y controla un nmero de registros que corresponden a las filas de la tabla o vista.

    Un bloque de control no corresponde a una tabla o vista y sus registros no se

    corresponden a filas de la base de datos.

    Normalmente los bloques de control representan un conjunto de elementos con valores

    nicos, que tienen slo un nico registro.

    Por ejemplo, si es necesario conocer en todo momento los valores aadidos a un conjunto de

    registros para calcular un total o una media, se puede crear un elemento en un bloque de

    control que represente dicho valor, existiendo un nico valor para ese elemento y bloque de

    control.

    El bloque de datos tiene una barra de desplazamiento que permite al usuario gestionar un

    conjunto de registros mayor que el que se puede mostrar en el lienzo. Tambin puede tener

    un conjunto especial de atributos visuales, elementos programables, que definen un aspecto

    diferente para el registro en curso, el registro en el que est el cursor.

    La navegacin dentro del bloque de datos se produce normalmente en el orden en el que se

    definen los elementos en un registro. El sistema en tiempo de ejecucin tiene funciones para

    moverse de registro en registro, de elemento en elemento y de bloque de datos en bloque de

    datos.

    Cuando se sale del ltimo elemento de un registro, se vuelve normalmente al primer elemento

    de ese registro. Forms permite volver a definir este comportamiento para poder pasar al

    siguiente registro (o al registro anterior si se retrocede desde el primer elemento). Tambin

    permite pasar al bloque de datos siguiente o anterior cuando el movimiento se realiza desde el

    ltimo o el primer elemento, respectivamente. Se puede especificar qu bloque de datos es el

    siguiente o el anterior.

    La funcin principal de un bloque de datos de tabla base es proporcionar una interfaz a una

    tabla o, un procedimiento almacenado en la base de datos.

  • Developer Forms Pgina 25

    Elementos

    Son las unidades bsicas de desarrollo de formularios. Un elemento tiene muchas

    propiedades. Cada tipo de elemento tienes sus propiedades.

    Se puede hacer referencia a los valores de un elemento utilizando un punto como parte de

    esta sintaxis especial:

    .

    Existen diferentes tipos de elementos: Cuadro de verificacin, Imagen, Lista, botn, etc.

    Se puede especificar un formato de mscara que establezca el formato de la salida o valide la

    entrada.

    Se puede especificar un valor por defecto par el elemento o especificar el nombre de otro

    elemento del cual copiar el valor inicial.

    Elementos con Resultados de Clculos

    Se pueden crear campos que muestren clculos elaborados en funcin de otros campos o que

    realicen agregaciones para grupos de registros. Estos campos no almacenan el resultado en la

    Base de Datos.

    Visualizamos las propiedades del campo y establecemos Modo de Clculo Frmula.

    Si elegimos Frmula, deberemos escribir la operacin deseada.

  • Developer Forms Pgina 26

    Si elegimos resumen, debemos de indicar en la propiedad Precalcular Resmenes del bloque a

    resumir que S.

    Posteriormente elegiremos en el Item a definir, el Tipo de Dato numrico (Number), la Funcin

    de Resumen, el Bloque Resumido y el Elemento Resumido.

    Grupo de Botones de Radio

    Podemos crear Botones de opcin para crear opciones excluyentes.

  • Developer Forms Pgina 27

    Casilla de control

    Permiten elegir entre dos valores.

    Elementos de Lista

    Permiten elegir entre una lista de valores. Los valores pueden establecerse a travs de las

    propiedades del elemento o a partir de un Grupo de Registros mediante programacin.

  • Developer Forms Pgina 28

    En el caso de rellenar el Elemento de Lista a partir de un Grupo de Registro, necesitamos un

    procedimiento que rellene la lista de valores a partir de los datos obtenidos por la seleccin. A

    dicho procedimiento lo podemos invocar al cargar el formulario.

    El siguiente procedimiento, es genrico, sirve para rellenar cualquier lista con cualquier grupo

    de registros.

  • Developer Forms Pgina 29

    Elementos Imagen

    Permite trabajar con imgenes, estas pueden ser independientes de una consulta, como un logotipo, o bien, pueden ser un campo perteneciente a una tabla.

    Los campos pueden ser de tipo BLOB, datos binarios en ORACLE. Los datos binarios nos van a

    permitir guardar en la base de datos archivos, imgenes, sonidos, etc.

    Casi siempre es preferible guardar la ruta del archivo en la base de datos en lugar del propio

    archivo en modo binario.

    Vamos a cargar un fichero existente en el servidor en un campo BLOB de una tabla.

    Lo que debemos hacer es crear un objeto directorio, esto es necesario ya que el fichero que

    queremos guardar se encuentra en el servidor (PL/SQL se ejecuta en el servidor), y debemos

    permitir explcitamente el acceso al directorio al usuario que ejecutar el cdigo PL/SQL.

    Debemos, como administrador, crear el directorio y otorgar permiso de lectura al usuario. El

    directorio fsico del servidor debe existir.

    CREATE OR REPLACE DIRECTORY FOTOS AS 'C:\imagenes' ;

    GRANT READ ON DIRECTORY FOTOS TO A01;

  • Developer Forms Pgina 30

    Ejecutaremos el siguiente bloque para guardar la imagen del fichero art1.jpg en el campo foto

    de la tabla de artculos.

    DECLARE v_bfile BFILE; v_blob BLOB; BEGIN update tarticulo set foto = empty_blob() where CODIGO_ART = 'S-710-MP' return foto into v_blob; v_bfile := BFILENAME('FOTOS', 'art1.jpg'); DBMS_LOB.fileopen(v_bfile, Dbms_Lob.File_Readonly); DBMS_LOB.loadfromfile(v_blob,v_bfile,DBMS_LOB.getlength(v_bfile)); DBMS_LOB.fileclose(v_bfile); COMMIT; EXCEPTION WHEN OTHERS THEN ROLLBACK; RAISE; END;

    Primero insertamos y/o actualizamos el campo BIN vacio con la funcin EMPTY_BLOB y al

    utilizar RETURN en la sentencia UPDATE se guarda una referencia al campo BIN que

    posteriormente asignamos al leer el archivo con DBMS_LOB.Loadfromfile.

    La funcin EMPTY_BLOB. Nos permite guardar un valor nulo en un campo BLOB.

    La funcin BFILENAME devuelve un objeto BFILE que representa la ruta del fichero

    que queremos almacenar en la tabla.

    El uso del paquete DBMS_LOB, permite trabajar con tipos binarios.

    Fileopen abre el archivo definido por BFILE (v_bfile) en el modo indicado.

    Loadfromfile lee un determinado nmero de bytes del fichero definido por BFILE(v_bfile) en un

    objeto de tipo BLOB (v_blob).

    Getlength devuelve el tamao del archivo en bytes.

    Fileclose cierra el archivo

  • Developer Forms Pgina 31

    Elementos Botn

    Permite crear elementos para ser accionados y producir una tarea. Estos elementos suelen

    asociarse a disparadores como WHEN-BUTTON-PRESSED.

    Elemento Mostrado

    Los elementos de formulario definidos de este tipo, no permiten la edicin, ni si quiera el

    posicionamiento sobre ellos.

  • Developer Forms Pgina 32

    Relaciones

    Una relacin es un elemento especial que Forms utiliza para estructurar formularios maestro-

    detalle. El elemento relacin, que pertenece al bloque de datos maestro, expresa la relacin

    del registro maestro con sus registros detallados.

    Las propiedades principales de la relacin son el nombre del bloque de datos detallado y la

    condicin de unin que Forms utiliza para gestionar la relacin.

    Tambin se puede especificar algn comportamiento especial respecto a la eliminacin de

    registros maestros, si se tienen que borrar, o no, los registros detallados, o la introduccin o

    actualizacin de registros detallados cuando no existe un registro maestro.

    No todas las formas contienen un nico bloque sobre el cual interactuar. Muchas de ellas

    contienen ms de uno, algunos maestro detalle, los cuales estn relacionados entre s. Para

    crear una relacin entre dos bloques se debe situarse sobre el bloque maestro y crear una

    nueva relacin. Seleccionar el bloque detalle en la ventana de creacin de relaciones y

    seleccionar las operaciones de eliminacin de registros: en cascada para eliminar los registros

    hijos junto con el padre, aisladas para no eliminar los registros hijos cuando se elimine el

    padre, no aisladas para evitar que se borre el registro maestro si hay registros hijos.

    Seleccionaremos la coordinacin entre los bloques: diferida para que los registros hijos no

    aparezcan cuando se hace la consulta sobre el bloque maestro; para verlos se necesita hacer la

    consulta sobre el bloque hijo, consulta automtica para traer los registros hijos

    automticamente cuando se navega al bloque detalle y prevencin de operaciones sin registro

    maestro para prevenir que se opere sobre registros hijos cuando no hay un maestro

    seleccionado.

    Adems debemos escribir la condicin de unin seleccionar un objeto comn existente en

    ambos bloques sobre el cual se basar la relacin.

  • Developer Forms Pgina 33

    Una vez creada la relacin FORMS aadir nuevas unidades de programa y disparadores para

    controlar las operaciones de coordinacin entre ambos bloques.

    Es posible crear las relaciones de forma automtica. Para ello se necesita crear primero el

    bloque maestro y luego el detalle usando el Asistente. Una de las opciones del asistente

    preguntar si hay o no un bloque maestro para crear la relacin.

  • Developer Forms Pgina 34

    Lienzos

    Un lienzo es la base sobre la que se sita el texto y los elementos. Cada elemento hace

    referencia a un nico lienzo en su hoja de propiedades. Los elementos de un bloque de datos

    se pueden dividir entre diferentes lienzos.

    Un lienzo no es un elemento de interfaz autnomo. Para mostrarlo y ver sus elementos es

    necesario mostrarlo en una ventana. La parte del lienzo que se puede ver a travs de la

    ventana es la vista. La ventana puede tener barras de desplazamiento que permiten moverse a

    travs del lienzo para ver diferentes vistas.

    Hay varios tipos de lienzo, de contenido, que muestran el contenido bsico de una ventana, de

    separador, que muestran el contenido bsico de una ventana en una serie de lienzos

    superpuestos con solapas de etiqueta, apilado, que se muestra sobre otros lienzos para

    mostrar informacin condicional o independiente, barra de herramientas vertical, que

    contiene iconos de herramientas que se muestran en una barra de herramientas vertical

    situada en el lado izquierdo de una ventana y barra de herramientas horizontal, que contiene

    iconos de herramientas que se muestran en una barra de herramientas horizontal situada en la

    parte superior de una ventana.

    Lienzo Separador

    Lienzo Apilado

  • Developer Forms Pgina 35

    Editores

    Los editores permiten definir y disear nuestras propias ventanas de edicin, para asociar con

    los elementos del formulario y utilizarlos cuando se soliciten.

  • Developer Forms Pgina 36

    Lista de Valores ( LOV )

    Las listas de valores son objetos desplegables que muestran una serie de valores, los cuales,

    proceden de un Grupo de Registros.

    Forms dispone de un asistente para este tipo de objeto.

    Podemos elegir entre un Grupo de Registros ya existente, o bien, crearlo basndonos en una

    consulta.

  • Developer Forms Pgina 37

    Podemos indicar si queremos devolver valores de la lista, cules y a donde.

  • Developer Forms Pgina 38

    Como resultado:

  • Developer Forms Pgina 39

    Grupos de Objetos

    Se pueden agrupar diversos objetos, con objetivo comn, bajo el mismo nombre de un Grupo

    de Objetos. Si el grupo creado se aade a un nuevo formulario, los objetos componentes se

    restablecen cada uno en su apartado.

    Parmetros

    Se pueden crear objetos de tipo Parmetros, para aceptar valores de una llamada desde otro

    formulario.

    Mens Emergentes

    Permite crear mens contextuales asociados a un elemento. Son mens flotantes, que

    emergen cuando se pulsa el botn derecho del ratn en el elemento seleccionado

    Existe un editor de men, para establecer las opciones deseadas.

  • Developer Forms Pgina 40

    Unidades de Programa

    Las unidades programables se utilizan para estructurar programas. Estos elementos son

    igualmente aplicables a mdulos de formularios y de mens.

    Clases de Propiedad

    Permite crearnos nuestro propio conjunto de propiedades. Una clase de propiedades puede

    heredar las propiedades de otra clase de propiedades.

    Para que un elemento herede las propiedades de una clase de propiedades hay que

    establecerla en su propiedad Informacin de Subclase, desde esta propiedad tambin se

    pueden heredar las propiedades de cualquier objeto existente.

    Las propiedades heredadas se pueden sobrescribir, poniendo el nuevo valor en la propiedad

    del objeto. Se puede recuperar el valor heredado.

    La utilizacin de disparadores en las clases de propiedades es posible, slo que es preciso

    generalizar su funcionamiento.

  • Developer Forms Pgina 41

    Las propiedades elegidas y sus correspondientes valores, podemos visualizarlos y modificarlos

    en la Paleta de Propiedades.

    Los elementos que deseemos que hereden las propiedades de la clase, debemos indicarlo a

    partir de Informacin de Subclase, eligiendo el Mdulo donse se encuentra, pudiendo ser el

    mismo Formulario, o bien, una Biblioteca de Objetos.

  • Developer Forms Pgina 42

    Grupos de Registros

    Un grupo de registros es una estructura de datos especial, como una tabla con filas y

    columnas. Un grupo de registros puede ser un grupo de registros procedentes de una consulta

    o un grupo de registros estticos. Los grupos de registros se pueden utilizar en LOV, en

    parmetros de datos, como estructuras de datos PL/SQL.

    En el caso de elegir Valores Estticos, debemos de poner nombre a las columnas, tipo de dato

    y sus valores correspondientes.

  • Developer Forms Pgina 43

    Informes

    Los objetos de informes contenidos en pantalla son referencias a archivos de informe

    almacenados en el sistema de archivos.

    Podemos basar un informe en un bloque, lo que har que se ejecute Report Builder para crear

    un nuevo informe.

  • Developer Forms Pgina 44

    Atributos Visuales

    Definen los colores y tipo de fuente de los objetos.

    Podemos elegir entre tres tipos, el Comn, para los elementos de texto, botones, listas;

    Prompt, para las etiquetas de los elementos; y Ttulo, para el encabezado de los marcos.

    Ventanas

    Son el objeto que visualiza los lienzos, las barras de herramientas, los mens.

  • Developer Forms Pgina 45

    Mens

    El mdulo de mens es ms sencillo que el mdulo de formularios. Se compone de los

    siguientes elementos:

    Bibliotecas Conectadas

    Mens

    Grupo de Objetos

    Unidades de Programa

    Clases de Propiedades

    Atributos Visuales

    Si deseamos que un formulario trabaje con un men que hayamos diseado, lo haremos saber

    a travs de la propiedad Mdulo de Mens en la paleta de propiedades del Mdulo.