Professional Documents
Culture Documents
CURSO
BASE DE
DATOS FORMS
El entorno de FORMS consiste de una pantalla con una barra de herramientas, un navegador
de objetos y una paleta de propiedades.
Lienzo
Bloque
El bloque es una agrupación lógica de ítems. Los bloques pueden estar asociados o no con
la base de datos en cuyo caso se llamarán bloques de datos. También pueden ser usados
para controlar la ejecución del módulo, en cuyo caso se llamarán bloques de control. Estos
no están asociados directamente con objetos de la base de datos.
Ítem
Si vamos a utilizar elementos de la base de datos, lo primero será realizar la conexión sobre
ésta.
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.
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.
Hay dos formas de llegar al Asistente de Diseño, a través del menú herramientas y a través del
submenú asociado al botón derecho del ratón, el cual aparece al ubicarse sobre un bloque.
Escribimos el texto que acompañará (Prompt) cada columna y el ancho y la altura del campo.
Para poder ejecutar el formulario, tenemos que tener iniciada la instancia OC4J.
Guardar: Este botón 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.
Ejecutar consulta: Con este botón ejecutamos una consulta sobre la base de datos en
función del contenido del formulario, si no tienen ningún 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 condición.
Bloque anterior: Sirve para irnos al anterior bloque de datos, cuando hay más de uno.
Registro anterior: Nos permite irnos al anterior registro, cuando hay más de uno.
Registro siguiente: Sirve para irnos al siguiente registro, cuando hay más de uno.
Bloque siguiente: Nos permite irnos al siguiente bloque de datos, cuando hay más de uno.
Insertar registro: Este botón sirve para añadir un nuevo registro a la tabla.
Suprimir registro: Con este botón podemos borrar el registro que se muestra.
Al crear un segundo bloque basado en otra tabla o vista, el asistente de creación de bloque,
nos pregunta sobre la posible relación maestro detalle de un bloque respecto a otro.
Donde seleccionamos las columnas que unen el bloque maestro con el bloque detalle.
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 información que dependiera de una consulta SQL
compleja.
Una variable de cursor (REF CURSOR) apunta a una fila específica de un conjunto de datos
resultantes de una consulta. Cuando deseemos realizar una consulta, tenemos que declarar el
cursor REF CURSOR y crear una función que recupere las filas en la variable de cursor.
Una variable cursor REF CURSOR es una referencia a cursores, más exactamente es un puntero
a un área de trabajo, donde Oracle almacena los datos resultantes de una selección múltiple
de registros. Estos punteros almacenan la dirección de memoria del objeto apuntado y por lo
tanto, se pueden pasar como parámetros de entrada y/o salida entre procedimientos
almacenados y funciones.
Los cursores se deben definir antes de la ejecución, pero se podrán modificar con el uso de
variables de acoplamiento.
Un cursor REF CURSOR sólo puede ver un origen de datos y no un destino de datos, lo que
significa que no es posible devolver información 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.
END;
PROCEDURE seleccionar(
<PARAMETRO_CURSOR> IN OUT <NOMBRE_REF_CURSOR> ,
<PARAMETRO_CONSULTA> IN <TIPO> );
Módulo de Formularios
Disparadores
Los disparadores y su estructura lógica constituyen la mayor parte del diseño de un formulario.
En el editor de PL/SQL bastará con escribir la orden EXECUTE_QUERY, siempre y cuando sólo
exista un bloque en la pantalla. En el caso de existir más 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 jerarquía 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 ejecutarán el trigger.
Para ver los triggers aplicables a un objeto basta con usar el menú asociado con el botón
derecho del ratón en la opción Disparadores Smart.
Para controlar los errores presentados en un disparador y no permitir que el usuario avance a
los ítems siguientes se debe invocar la excepción predefinida FORM_TRIGGER_FAILURE.
Developer tiene un tipo especial de ventanas para enviar avisos al usuario. Básicamente
mostrará un mensaje y puede tener hasta tres botones (por ejemplo, "Si" "No" y "Cancelar").
Hay tres tipos de estilos de alerta: Parar, Atención y Nota.
PARAR
ATENCIÓN
NOTA
Por ejemplo creamos una alerta que nos muestre un mensaje informativo de bienvenida
cuando se ejecute el formulario de Proveedores por zonas.
DECLARE
ALERTA NUMBER;
BEGIN
ALERTA := SHOW_ALERT('A_PRESENTACION');
GO_BLOCK('B_PROVEEDORES');
EXECUTE_QUERY;
END;
Bibliotecas conectadas
Es un área donde se pueden definir enlaces a librerías o bibliotecas pll, donde se encuentren
las funciones, procedimientos o paquetes.
Un bloque de datos se puede ver de dos formas, como una colección de elementos o como
una colección de registros, cada uno de los cuales tiene la misma estructura.
Un bloque de datos tabla base corresponde a una tabla o una vista de la base de datos
y controla un número de registros que corresponden a las filas de la tabla o vista.
Por ejemplo, si es necesario conocer en todo momento los valores añadidos 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. También 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.
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). También
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 función 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.
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 verificación, Imagen, Lista, botón, etc.
Se puede especificar un valor por defecto par el elemento o especificar el nombre de otro
elemento del cual copiar el valor inicial.
Se pueden crear campos que muestren cálculos elaborados en función de otros campos o que
realicen agregaciones para grupos de registros. Estos campos no almacenan el resultado en la
Base de Datos.
Elementos de Lista
Permiten elegir entre una lista de valores. Los valores pueden establecerse a través de las
propiedades del elemento o a partir de un Grupo de Registros mediante programación.
El siguiente procedimiento, es genérico, sirve para rellenar cualquier lista con cualquier grupo
de registros.
Permite trabajar con imágenes, 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, imágenes, sonidos, etc.
Casi siempre es preferible guardar la ruta del archivo en la base de datos en lugar del propio
archivo en modo binario.
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 explícitamente el acceso al directorio al usuario que ejecutará el código PL/SQL.
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 función 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 función BFILENAME devuelve un objeto BFILE que representa la ruta del fichero <art1.jpg>
que queremos almacenar en la tabla.
Loadfromfile lee un determinado número de bytes del fichero definido por BFILE(v_bfile) en un
objeto de tipo BLOB (v_blob).
Permite crear elementos para ser accionados y producir una tarea. Estos elementos suelen
asociarse a disparadores como WHEN-BUTTON-PRESSED.
Elemento Mostrado
Una relación es un elemento especial que Forms utiliza para estructurar formularios maestro-
detalle. El elemento relación, que pertenece al bloque de datos maestro, expresa la relación
del registro maestro con sus registros detallados.
Las propiedades principales de la relación son el nombre del bloque de datos detallado y la
condición de unión que Forms utiliza para gestionar la relación.
No todas las formas contienen un único bloque sobre el cual interactuar. Muchas de ellas
contienen más de uno, algunos maestro detalle, los cuales están relacionados entre sí. Para
crear una relación entre dos bloques se debe situarse sobre el bloque maestro y crear una
nueva relación. Seleccionar el bloque detalle en la ventana de creación de relaciones y
seleccionar las operaciones de eliminación 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 coordinación 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 automática para traer los registros hijos
automáticamente cuando se navega al bloque detalle y prevención de operaciones sin registro
maestro para prevenir que se opere sobre registros hijos cuando no hay un maestro
seleccionado.
Es posible crear las relaciones de forma automática. 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 relación.
Un lienzo es la base sobre la que se sitúa 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.
Hay varios tipos de lienzo, de contenido, que muestran el contenido básico de una ventana, de
separador, que muestran el contenido básico de una ventana en una serie de lienzos
superpuestos con solapas de etiqueta, apilado, que se muestra sobre otros lienzos para
mostrar información 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
Los editores permiten definir y diseñar nuestras propias ventanas de edición, para asociar con
los elementos del formulario y utilizarlos cuando se soliciten.
Las listas de valores son objetos desplegables que muestran una serie de valores, los cuales,
proceden de un Grupo de Registros.
Podemos elegir entre un Grupo de Registros ya existente, o bien, crearlo basándonos en una
consulta.
Se pueden agrupar diversos objetos, con objetivo común, bajo el mismo nombre de un Grupo
de Objetos. Si el grupo creado se añade a un nuevo formulario, los objetos componentes se
restablecen cada uno en su apartado.
Parámetros
Se pueden crear objetos de tipo Parámetros, para aceptar valores de una llamada desde otro
formulario.
Menús Emergentes
Permite crear menús contextuales asociados a un elemento. Son menús flotantes, que
emergen cuando se pulsa el botón derecho del ratón en el elemento seleccionado
Las unidades programables se utilizan para estructurar programas. Estos elementos son
igualmente aplicables a módulos de formularios y de menús.
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 Información de Subclase, desde esta propiedad también se
pueden heredar las propiedades de cualquier objeto existente.
Los elementos que deseemos que hereden las propiedades de la clase, debemos indicarlo a
partir de Información de Subclase, eligiendo el Módulo donse se encuentra, pudiendo ser el
mismo Formulario, o bien, una Biblioteca de Objetos.
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 estáticos. Los grupos de registros se pueden utilizar en LOV, en
parámetros de datos, como estructuras de datos PL/SQL.
En el caso de elegir Valores Estáticos, debemos de poner nombre a las columnas, tipo de dato
y sus valores correspondientes.
Podemos basar un informe en un bloque, lo que hará que se ejecute Report Builder para crear
un nuevo informe.
Podemos elegir entre tres tipos, el Común, para los elementos de texto, botones, listas;
Prompt, para las etiquetas de los elementos; y Título, para el encabezado de los marcos.
Ventanas
Son el objeto que visualiza los lienzos, las barras de herramientas, los menús.
Bibliotecas Conectadas
Menús
Grupo de Objetos
Unidades de Programa
Clases de Propiedades
Atributos Visuales
Si deseamos que un formulario trabaje con un menú que hayamos diseñado, lo haremos saber
a través de la propiedad Módulo de Menús en la paleta de propiedades del Módulo.