Marzo - 2009

CURSO BASE DE DATOS

FORMS

Developer - FORMS
Resumen - SQL

Curso Base de Datos
Página 1

Introducción
El componente Forms de Developer es la parte del entorno de desarrollo en la que se construyen los módulos de formularios.

También proporciona el entorno de trabajo para desarrollar menús y módulos 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

Página 2

Para agregar un nuevo objeto se debe ubicar el cursor sobre este y presionar el botón con el símbolo más (+) de la barra de herramientas izquierda. Para eliminarlo se debe presionar el botón con el símbolo equis (X) en la misma barra de herramientas.

El módulo de formularios es el componente principal de las aplicaciones interactivas. También es el módulo más complejo en términos 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 módulo es necesario reconocer los objetos que lo componen: Lienzo El Lienzo es el área de la ventana en la cual se ubicarán los ítems.

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 El ítem es el objeto de interfaz que despliega información. Cada pequeño objeto susceptible de ser incluido en un lienzo se considera como un ítem. Como por ejemplo campos de texto, listas de valores, imágenes, botones de chequeo, botones comunes, sonidos, controles de Visual Basic y contenedores OLE, entre otros.

Developer Forms

Página 3

Creación de formulario con el asistente
Si vamos a utilizar elementos de la base de datos, lo primero será realizar la conexión sobre ésta.

Para crear un formulario debemos crear un nuevo módulo y posteriormente invocar al asistente de bloques que se encuentra en el menú herramientas.

Developer Forms

Página 4

Adicionalmente se debe chequear la casilla forzar integridad referencial si se desea que FORMS use las restricciones definidas en la base de datos. Elegir tablas o vistas y columnas del bloque. Si se selecciona tabla o vista posteriormente se deben ingresar las columnas y tablas usadas. Developer Forms Página 5 . Si se elige procedimiento se deben seleccionar los procedimientos utilizados para las operaciones de la base de datos.Seleccionaremos el tipo de bloque que deseamos crear. Se puede seleccionar entre tabla o vista y procedimiento almacenado.

Developer Forms Página 6 . Si se desea se puede modificar. Una vez creado el bloque este aparecerá en el navegador de objetos con el mismo nombre de la tabla base o vista.Si hemos seleccionado tablas o vistas. podemos indicar qué columnas deseamos que compongan el bloque.

Al iniciar el Asistente de Diseño se debemos seleccionar el lienzo (Canvas) existente o crear uno nuevo. el cual aparece al ubicarse sobre un bloque. Developer Forms Página 7 . Si elegimos ésta última opción. se nos guiará para presentar los elementos seleccionados. a través del menú herramientas y a través del submenú asociado al botón derecho del ratón. y el tipo de lienzo apropiado.Crear sólo el bloque de datos o crearlo y llamar al Asistente de Diseño. Hay dos formas de llegar al Asistente de Diseño.

Seleccionamos el estilo tabular o formulario. Developer Forms Página 8 .Seleccionamos el bloque de datos y las columnas que aparecerán en el mismo. Escribimos el texto que acompañará (Prompt) cada columna y el ancho y la altura del campo.

Una vez finalizado el asistente visualizaremos los registros ubicados en el lienzo. También se puede seleccionar si se deseamos una barra de desplazamiento de registros. el número de registros a mostrar y la distancia entre los mismos. Developer Forms Página 9 .Introducimos un título para el marco.

procederemos a la ejecución. tenemos que tener iniciada la instancia OC4J. Para poder ejecutar el formulario. Developer Forms Página 10 .Ejecución de un formulario Una vez creado el formulario y guardado.

cuando hay más de uno. Insertar registro: Este botón sirve para añadir un nuevo registro a la tabla. Registro siguiente: Sirve para irnos al siguiente registro. Botones de Oracle Forms Runtime: Guardar: Este botón nos permite almacenar las modificaciones hechas en un registro. tenemos la opción Depurar Módulo. Bloque siguiente: Nos permite irnos al siguiente bloque de datos. nos permite consultar todos los registros. Ejecutar consulta: Con este botón ejecutamos una consulta sobre la base de datos en función del contenido del formulario. Developer Forms Página 11 . Bloque anterior: Sirve para irnos al anterior bloque de datos. Introducir consulta: Nos permite introducir una consulta para traernos aquellas tuplas de la base de datos que cumplan una determinada condición. cuando hay más de uno. cuando hay más de uno. Y obtenemos el resultado. las nuevas tuplas creadas y las entradas eliminadas.Dentro del menú Depurar. si no tienen ningún valor. cuando hay más de uno. Salir: Con este botón nos salimos de la ejecución del formulario. Suprimir registro: Con este botón podemos borrar el registro que se muestra. Registro anterior: Nos permite irnos al anterior registro. Es un commit en la base de datos.

Donde seleccionamos las columnas que unen el bloque maestro con el bloque detalle. el asistente de creación de bloque. Al crear un segundo bloque basado en otra tabla o vista. En un tabla. Developer Forms Página 12 . en una consulta.Bloques Los bloques de un formulario pueden estar basados en diferentes orígenes. nos pregunta sobre la posible relación maestro detalle de un bloque respecto a otro. en un procedimiento. Un formulario puede estar compuesto por varios bloques. en una vista.

procedimiento y disparadores para visualizar los datos detalle en relación a los datos maestros. para establecer alguna condición sobre los datos a recuperar por el bloque y/o para indicar una ordenación específica. podemos modificar la cláusula WHERE o la cláusula ORDER BY. Mediante la paleta de propiedades. Developer Forms Página 13 . respecto a un bloque.El asistente se encarga de crear la relación entre bloques.

más exactamente es un puntero a un área de trabajo. se nos permite cambiar cualquier elemento de la consulta. lo que significa que no es posible devolver información al procedimiento por medio del cursor REF CURSOR. Mediante programación se podrá elegir que cursor se utiliza para rellenar el bloque. lo cual es útil cuando se desea que un bloque muestre información que dependiera de una consulta SQL compleja. rellenado por la sentencia SELECT. Los bloques los deberemos de basar en cursores REF CURSOR cuando se necesite el nivel de flexibilidad que este tipo de cursor proporciona. Estos punteros almacenan la dirección de memoria del objeto apuntado y por lo tanto. tenemos que declarar el cursor REF CURSOR y crear una función que recupere las filas en la variable de cursor. Procedimiento de tipo REF CURSOR Una variable de cursor (REF CURSOR) apunta a una fila específica de un conjunto de datos resultantes de una consulta. Procedimiento de tipo tabla PL/SQL Un bloque se puede basar en un procedimiento que devuelva una tabla PL/SQL. incluyendo las tablas de origen o de destino. donde Oracle almacena los datos resultantes de una selección múltiple de registros.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 más filas. Una variable cursor REF CURSOR es una referencia a cursores. Si basamos un bloque en un procedimiento. En un procedimiento PL/SQL puede haber almacenado uno o más cursores. se pueden pasar como parámetros de entrada y/o salida entre procedimientos almacenados y funciones. Developer Forms Página 14 . También se pueden utilizar estructuras de bucle y condicionales PL/SQL con el fin de manipular los valores antes de devolverlos al bloque. podemos interceptarlas e interpretarlas según las necesidades. que se usa como origen de datos para el bloque. Cuando deseemos realizar una consulta. Un cursor REF CURSOR sólo puede ver un origen de datos y no un destino de datos. Los cursores se deben definir antes de la ejecución. Un procedimiento almacenado devuelve una referencia a un cursor abierto. pero se podrán modificar con el uso de variables de acoplamiento. Cuando el bloque ejecuta ordenes DML.

Developer Forms Página 15 . Seleccionamos el procedimiento desarrollado para la sentencia SELECT.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.

Developer Forms Página 16 . PROCEDURE modificar( <PARAMETRO> IN OUT NOCOPY <NOMBRE_TABLA>). A continuación realizamos los mismos pasos para UPDATE. podría ser el siguiente: create or replace PACKAGE <NOMBRE_PAQUETE> AS type <REGISTRO> IS record( <CAMPO_1> <TIPO>.Seleccionamos el procedimiento desarrollado para la sentencia INSERT. PROCEDURE borrar(<PARAMETRO> IN OUT NOCOPY <NOMBRE_TABLA>). <CAMPO_2> <TIPO>. PROCEDURE bloquear(<PARAMETRO> IN OUT NOCOPY <NOMBRE_TABLA>). type <NOMBRE_REF_CURSOR> IS REF CURSOR RETURN <REGISTRO>. <CAMPO_N> <TIPO> ). PROCEDURE insertar(<PARAMETRO> IN OUT NOCOPY <NOMBRE_TABLA>).. DELETE y BLOCK. END. type <NOMBRE_TABLA> IS TABLE OF <REGISTRO> INDEX BY binary_integer. … … . PROCEDURE seleccionar( <PARAMETRO> IN OUT <NOMBRE_REF_CURSOR> ). Un ejemplo de sintaxis típico de especificación de paquete para un formulario basado en un procedimiento almacenado.

las condiciones de consulta que introduce el usuario no tendrán ningún efecto. Cuando basamos un bloque en una tabla el entorno de ejecución de Forms genera una instrucción SELECT a partir de los elementos de bloque y crea una cláusula WHERE basada en las condiciones de consulta que introduce el usuario. Sin embargo. dentro de la cláusula WHERE de la consulta el parámetro pasado. nos situaremos en la ficha de Consulta. <PARAMETRO_CONSULTA> IN <TIPO> ). Developer Forms Página 17 . Mediante el Asistente de Bloques. permite al usuario poner la pantalla en el modo de introducción de consulta. pulsaremos el botón de Refrescar y aparecerá abajo el nuevo parámetro. Tenemos que pasar parámetros al procedimiento para incluirlos en la cláusula WHERE de la consulta. Si basamos un bloque en un procedimiento. También debemos añadir al procedimiento. introducir algún valor y ejecutar la consulta para recuperar filas de la base de datos. para ello. Además debemos cambiar la pantalla. PROCEDURE seleccionar( <PARAMETRO_CURSOR> IN OUT <NOMBRE_REF_CURSOR> . utilizaremos la sintaxis :BLOQUE. para establecer una condición. Debemos modificar el procedimiento de selección. podemos escribir código para emular parte de la funcionalidad de la característica de la función de consulta mediante ejemplo.ELEMENTO . el entorno de ejecución de Forms no crea la instrucción SELECT normal. Proporcionaremos el elemento de formulario donde escribiremos el contenido de la consulta.CONSULTAS La función de consulta mediante ejemplo. Hay que proporcionar un valor para el argumento en la columna Valor. es decir. WHERE <CAMPO_1> = <PARAMETRO_CONSULTA> .

SET_BLOCK_PROPERTY(‘<NOMBRE_BLOQUE>’ . QUERY_DATA_SOURCE_NAME . La consulta deberá escribirse entre paréntesis. Developer Forms Página 18 . ‘(<CONSULTA>)’).CONTROL MEDIANTE PROGRAMA Podemos utilizar la función predefinida SET_BLOCK_PROPERTY para cambiar el destino DML y el origen de consulta del bloque mediante código PL/SQL.

Developer Forms Página 19 . Los disparadores y su estructura lógica constituyen la mayor parte del diseño de un formulario. El disparador se dispara o se ejecuta. cuando se producen ciertos eventos. Post-Query. La mayoría de los disparadores que se utilizan son disparadores incorporados.Elementos Módulo de Formularios El módulo de formularios es el componente principal de las aplicaciones interactivas. On-Delete … que se puede seleccionar de una lista de nombres de disparador. Cada disparador tiene un nombre específico. When-Button-Pressed. un bloque de datos o un elemento de un bloque de datos. es decir. También es el módulo más complejo ya que contiene clases distintas de elementos. disparadores proporcionados por el entorno de trabajo de Developer. Los disparadores de una aplicación de formularios contienen el código que se añade a la aplicación. Disparadores Un disparador es un bloque de código PL/SQL que se asocia a otro elemento: un formulario. aparte del código que se introduce en las unidades de programa independientes o en bibliotecas. por ejemplo.

si existe un trigger WHEN_NEW_ITEM_INSTANCE asociado a un bloque y a un ítem. ítem. En el editor de PL/SQL bastará con escribir la orden EXECUTE_QUERY. lo vamos a hacer de forma automática cuando cree el formulario. El alcance del trigger corresponde con el alcance del nivel de la jerarquía de objetos en que fue definido. Por ejemplo. Por ejemplo. siempre y cuando sólo exista un bloque en la pantalla. Developer Forms Página 20 . Para ello. en un ámbito particular Developer lanzará el que está asociado con el elemento más bajo en la jerarquía. En Developer los triggers se pueden definir a nivel de bloque. en el navegador de objetos. Este comportamiento se puede cambiar modificando la propiedad Jerarquía de Ejecución del trigger. Developer ejecuta el trigger del ítem e ignora el del bloque. si se asocia un trigger a nivel de bloque los eventos de todos los elementos de dicho bloque ejecutarán el trigger. seleccionamos el disparador WHEN-NEW-FORM-INSTANCE y pulsamos aceptar.Por ejemplo si cuando ejecutemos un formulario queremos que se ejecute una consulta. nos vamos a Disparadores y pulsamos el botón de crear. Si existe más de un trigger con el mismo nombre o funcionalidad. registro o formulario. En el caso de existir más de un bloque. primero debemos de activar el bloque mediante la orden GO_BLOCK(‘NOMBRE_BLOQUE’).

PRE_QUERY. WHEN_VALIDATE_ITEM). ON_PULATE_DETAILS. por lo que sólo se puede definir a nivel de bloque y de formulario. PRE_FORM. KEY_F1. De comandos: ON_ROLLBACK). De eventos inmediatos: (WHEN_BUTTON_PRESED. POST_DELETE. POST_COMMIT. (ON_CLOSE. De eventos posteriores al objeto: (POST_QUERY. POST_BLOCK). KEY_EXIT). Developer Forms Página 21 . WHEN_LIST_ACTIVATED. KEY_ENTQRY. KEY_COMMIT. 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. Añadir disparadores de teclas permite reprogramar el teclado para realizar acciones diferentes de las definiciones estándar de las teclas. ON_ERROR. se ejecutan cuando se pulsa una combinación de teclas en la interfaz de usuario. al objeto: (PRE_DELETE. Disponemos de distintos tipos de disparadores De uso de teclas: Los disparadores de teclas. WHEN_CREATE_RECORD. (KEY_CLRFRM. KEY_EDIT. POST_TEXT_ITEM. PRE_BLOCK).Algunos triggers solo tienen validez cuando se definen a un nivel específico. WHEN_NEW_ITEM_INSTANCE. POST_UPDATE. De eventos anteriores PRE_TEXT_ITEM. ON_COMMIT. Por ejemplo WHEN_VALIDATE_RECORD no es aplicable a ítems individuales. 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.

Abrimos la paleta de propiedades de la alerta creada. Básicamente mostrará un mensaje y puede tener hasta tres botones (por ejemplo. En el Navegador de Objetos. 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.Alertas Developer tiene un tipo especial de ventanas para enviar avisos al usuario. Developer Forms Página 22 . seleccionamos Alertas y pulsamos el botón de crear. Hay tres tipos de estilos de alerta: Parar. "Si" "No" y "Cancelar").

GO_BLOCK('B_PROVEEDORES'). EXECUTE_QUERY. en el disparador WHEN_NEW_FORM_INSTANCE. donde se encuentren las funciones. Developer Forms Página 23 . Bibliotecas conectadas Es un área donde se pueden definir enlaces a librerías o bibliotecas pll. ALERT_BUTTON3 dependiendo de qué botón haya sido pulsado.Para llamar a la alerta. procedimientos o paquetes. BEGIN ALERTA := SHOW_ALERT('A_PRESENTACION'). END. escribimos el siguiente código: DECLARE ALERTA NUMBER. La función SHOW_ALERT devuelve el número ALERT_BUTTON1. ALERT_BUTTON2.

También puede tener un conjunto especial de atributos visuales. 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 número de registros que corresponden a las filas de la tabla o vista. Se puede especificar qué bloque de datos es el siguiente o el anterior.Bloques de datos El bloque de datos es la unidad de construcción intermedia de los formularios. 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). elementos programables. como una colección de elementos o como una colección de registros. que definen un aspecto diferente para el registro en curso. 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. de elemento en elemento y de bloque de datos en bloque de datos. Se puede especificar el número de registros que se van a mostrar a la vez. Normalmente los bloques de control representan un conjunto de elementos con valores únicos. Por ejemplo. El sistema en tiempo de ejecución tiene funciones para moverse de registro en registro. Cuando se sale del último elemento de un registro. respectivamente. si es necesario conocer en todo momento los valores añadidos a un conjunto de registros para calcular un total o una media. un procedimiento almacenado en la base de datos. Developer Forms Página 24 . Un bloque de datos se puede ver de dos formas. Un bloque de control no corresponde a una tabla o vista y sus registros no se corresponden a filas de la base de datos. cada uno de los cuales tiene la misma estructura. que tienen sólo un único registro. La navegación dentro del bloque de datos se produce normalmente en el orden en el que se definen los elementos en un registro. La función principal de un bloque de datos de tabla base es proporcionar una interfaz a una tabla o. También permite pasar al bloque de datos siguiente o anterior cuando el movimiento se realiza desde el último o el primer elemento. existiendo un único valor para ese elemento y bloque de control. el registro en el que está el cursor. se puede crear un elemento en un bloque de control que represente dicho valor.

<nombre del elemento> Existen diferentes tipos de elementos: Cuadro de verificación. Elementos con Resultados de Cálculos Se pueden crear campos que muestren cálculos elaborados en función de otros campos o que realicen agregaciones para grupos de registros. Se puede especificar un formato de máscara 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. Developer Forms Página 25 . etc.Elementos Son las unidades básicas de desarrollo de formularios. Lista. Imagen. Se puede hacer referencia a los valores de un elemento utilizando un punto como parte de esta sintaxis especial: <Nombre del bloque de datos>. Un elemento tiene muchas propiedades. Estos campos no almacenan el resultado en la Base de Datos. Visualizamos las propiedades del campo y establecemos Modo de Cálculo Fórmula. Cada tipo de elemento tienes sus propiedades. deberemos escribir la operación deseada. Si elegimos Fórmula. botón.

el Bloque Resumido y el Elemento Resumido. el Tipo de Dato numérico (Number). Posteriormente elegiremos en el Item a definir. debemos de indicar en la propiedad Precalcular Resúmenes del bloque a resumir que Sí. Grupo de Botones de Radio Podemos crear Botones de opción para crear opciones excluyentes. Developer Forms Página 26 .Si elegimos resumen. la Función de Resumen.

Elementos de Lista Permiten elegir entre una lista de valores.Casilla de control Permiten elegir entre dos valores. Los valores pueden establecerse a través de las propiedades del elemento o a partir de un Grupo de Registros mediante programación. Developer Forms Página 27 .

El siguiente procedimiento. necesitamos un procedimiento que rellene la lista de valores a partir de los datos obtenidos por la selección. A dicho procedimiento lo podemos invocar al cargar el formulario. es genérico.En el caso de rellenar el Elemento de Lista a partir de un Grupo de Registro. sirve para rellenar cualquier lista con cualquier grupo de registros. Developer Forms Página 28 .

o bien. Los campos pueden ser de tipo BLOB. Casi siempre es preferible guardar la ruta del archivo en la base de datos en lugar del propio archivo en modo binario. imágenes. Los datos binarios nos van a permitir guardar en la base de datos archivos. El directorio físico del servidor debe existir. crear el directorio y otorgar permiso de lectura al usuario. Debemos. Developer Forms Página 29 . como administrador. y debemos permitir explícitamente el acceso al directorio al usuario que ejecutará el código PL/SQL. pueden ser un campo perteneciente a una tabla. como un logotipo. estas pueden ser independientes de una consulta. Lo que debemos hacer es crear un objeto directorio. GRANT READ ON DIRECTORY FOTOS TO A01. sonidos. esto es necesario ya que el fichero que queremos guardar se encuentra en el servidor (PL/SQL se ejecuta en el servidor). datos binarios en ORACLE. etc. CREATE OR REPLACE DIRECTORY FOTOS AS 'C:\imagenes' .Elementos Imagen Permite trabajar con imágenes. Vamos a cargar un fichero existente en el servidor en un campo BLOB de una tabla.

loadfromfile(v_blob. 'art1.jpg'). Dbms_Lob. El uso del paquete DBMS_LOB. v_blob BLOB. Nos permite guardar un valor nulo en un campo BLOB. RAISE. Fileclose cierra el archivo Developer Forms Página 30 . Loadfromfile lee un determinado número de bytes del fichero definido por BFILE(v_bfile) en un objeto de tipo BLOB (v_blob).fileclose(v_bfile).jpg> que queremos almacenar en la tabla. DECLARE v_bfile BFILE.jpg en el campo foto de la tabla de artículos. La función BFILENAME devuelve un objeto BFILE que representa la ruta del fichero <art1. DBMS_LOB. 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. BEGIN update tarticulo set foto = empty_blob() where CODIGO_ART = 'S-710-MP' return foto into v_blob. COMMIT. DBMS_LOB.File_Readonly). Getlength devuelve el tamaño del archivo en bytes. La función EMPTY_BLOB.DBMS_LOB.Loadfromfile.fileopen(v_bfile.getlength(v_bfile)). END. DBMS_LOB. Fileopen abre el archivo definido por BFILE (v_bfile) en el modo indicado.v_bfile. permite trabajar con tipos binarios. EXCEPTION WHEN OTHERS THEN ROLLBACK.Ejecutaremos el siguiente bloque para guardar la imagen del fichero art1. v_bfile := BFILENAME('FOTOS'.

Elemento Mostrado Los elementos de formulario definidos de este tipo. Estos elementos suelen asociarse a disparadores como WHEN-BUTTON-PRESSED. Developer Forms Página 31 . no permiten la edición.Elementos Botón Permite crear elementos para ser accionados y producir una tarea. ni si quiera el posicionamiento sobre ellos.

algunos maestro detalle.Relaciones Una relación es un elemento especial que Forms utiliza para estructurar formularios maestrodetalle. Seleccionaremos la coordinación entre los bloques: diferida para que los registros hijos no aparezcan cuando se hace la consulta sobre el bloque maestro. que pertenece al bloque de datos maestro. 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 aisladas para evitar que se borre el registro maestro si hay registros hijos. El elemento relación. Developer Forms Página 32 . 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. o no. los cuales están relacionados entre sí. Muchas de ellas contienen más de uno. Para crear una relación entre dos bloques se debe situarse sobre el bloque maestro y crear una nueva relación. Además debemos escribir la condición de unión ó seleccionar un objeto común existente en ambos bloques sobre el cual se basará la relación. 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. los registros detallados. o la introducción o actualización de registros detallados cuando no existe un registro maestro. También se puede especificar algún comportamiento especial respecto a la eliminación de registros maestros. si se tienen que borrar. expresa la relación del registro maestro con sus registros detallados. No todas las formas contienen un único bloque sobre el cual interactuar. aisladas para no eliminar los registros hijos cuando se elimine el padre.

Una vez creada la relación FORMS añadirá nuevas unidades de programa y disparadores para controlar las operaciones de coordinación entre ambos bloques. 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. Es posible crear las relaciones de forma automática. Developer Forms Página 33 .

que contiene iconos de herramientas que se muestran en una barra de herramientas horizontal situada en la parte superior de una ventana. La ventana puede tener barras de desplazamiento que permiten moverse a través del lienzo para ver diferentes vistas. Hay varios tipos de lienzo. que muestran el contenido básico de una ventana.Lienzos Un lienzo es la base sobre la que se sitúa el texto y los elementos. barra de herramientas vertical. Lienzo Separador Lienzo Apilado Developer Forms Página 34 . de contenido. Los elementos de un bloque de datos se pueden dividir entre diferentes lienzos. Cada elemento hace referencia a un único lienzo en su hoja de propiedades. que muestran el contenido básico de una ventana en una serie de lienzos superpuestos con solapas de etiqueta. apilado. Para mostrarlo y ver sus elementos es necesario mostrarlo en una ventana. de separador. La parte del lienzo que se puede ver a través de la ventana es la vista. que se muestra sobre otros lienzos para mostrar información condicional o independiente. 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. Un lienzo no es un elemento de interfaz autónomo.

Editores 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. Developer Forms Página 35 .

Forms dispone de un asistente para este tipo de objeto.Lista de Valores ( LOV ) Las listas de valores son objetos desplegables que muestran una serie de valores. los cuales. Developer Forms Página 36 . o bien. crearlo basándonos en una consulta. proceden de un Grupo de Registros. Podemos elegir entre un Grupo de Registros ya existente.

Developer Forms Página 37 . cuáles y a donde.Podemos indicar si queremos devolver valores de la lista.

Como resultado: Developer Forms Página 38 .

bajo el mismo nombre de un Grupo de Objetos. Si el grupo creado se añade a un nuevo formulario. Parámetros Se pueden crear objetos de tipo Parámetros. Son menús flotantes. para establecer las opciones deseadas.Grupos de Objetos Se pueden agrupar diversos objetos. para aceptar valores de una llamada desde otro formulario. los objetos componentes se restablecen cada uno en su apartado. con objetivo común. Menús Emergentes Permite crear menús contextuales asociados a un elemento. Developer Forms Página 39 . que emergen cuando se pulsa el botón derecho del ratón en el elemento seleccionado Existe un editor de menú.

Una clase de propiedades puede heredar las propiedades de otra clase de propiedades. Clases de Propiedad Permite crearnos nuestro propio conjunto de propiedades. Estos elementos son igualmente aplicables a módulos de formularios y de menús. La utilización de disparadores en las clases de propiedades es posible. Las propiedades heredadas se pueden sobrescribir. sólo que es preciso generalizar su funcionamiento. Para que un elemento herede las propiedades de una clase de propiedades hay que establecerla en su propiedad Información de Subclase. Developer Forms Página 40 . Se puede recuperar el valor heredado. desde esta propiedad también se pueden heredar las propiedades de cualquier objeto existente. poniendo el nuevo valor en la propiedad del objeto.Unidades de Programa Las unidades programables se utilizan para estructurar programas.

Los elementos que deseemos que hereden las propiedades de la clase. una Biblioteca de Objetos. eligiendo el Módulo donse se encuentra. debemos indicarlo a partir de Información de Subclase.Las propiedades elegidas y sus correspondientes valores. pudiendo ser el mismo Formulario. Developer Forms Página 41 . podemos visualizarlos y modificarlos en la Paleta de Propiedades. o bien.

En el caso de elegir Valores Estáticos. en parámetros de datos. tipo de dato y sus valores correspondientes. Los grupos de registros se pueden utilizar en LOV.Grupos de Registros Un grupo de registros es una estructura de datos especial. Developer Forms Página 42 . como una tabla con filas y columnas. como estructuras de datos PL/SQL. Un grupo de registros puede ser un grupo de registros procedentes de una consulta o un grupo de registros estáticos. debemos de poner nombre a las columnas.

Developer Forms Página 43 .Informes Los objetos de informes contenidos en pantalla son referencias a archivos de informe almacenados en el sistema de archivos. lo que hará que se ejecute Report Builder para crear un nuevo informe. Podemos basar un informe en un bloque.

las barras de herramientas. Podemos elegir entre tres tipos. para los elementos de texto. y Título. listas.Atributos Visuales Definen los colores y tipo de fuente de los objetos. botones. Prompt. para las etiquetas de los elementos. los menús. Ventanas Son el objeto que visualiza los lienzos. el Común. para el encabezado de los marcos. Developer Forms Página 44 .

Developer Forms Página 45 . lo haremos saber a través de la propiedad Módulo de Menús en la paleta de propiedades del Módulo. Se compone de los siguientes elementos: 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.Menús El módulo de menús es más sencillo que el módulo de formularios.

Sign up to vote on this title
UsefulNot useful