tema11 forms oracle
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.