Вы находитесь на странице: 1из 38

CONTENIDO DEL CURSO

Dia 1

3

ORACLE FORMS

3

El entorno de Oracle Forms

3

El Navegador de Objetos

3

Disparadores Alertas Bibliotecas Incorporadas Bloques Elementos Relaciones Vistas-Lienzo Editores LOV (Listas de Valores) Grupos de Objetos Parámetros Unidades de Programa Clases de Propiedad Grupos de Registros Atributos Visuales Ventanas Hojas de propiedades de objetos

 

4

4

4

5

5

5

5

5

6

6

6

6

6

6

7

7

7

 

8

El editor Layout Editor Personalizar el entorno Forms

9

Creación de nuevos módulos de formularios

13

Construir un formulario sencillo por

defecto.

.13

Dia 2

19

Usar texto fijo y gráficos para realzar las

aplicaciones de formularios Personalizar impresos con propiedades

19

21

Dia 3

23

Implementar disparadores y unidades de programa

23

Dia 4

26

Usar grupos de registros y listas de valores para

la validación de los datos

26

Usar relaciones para enlazar bloques separados

en un formulario

32

 

34

Eventos de ratón, temporizadores y otras cuestiones avanzadas

34

 

34

Trabajar con el ratón Trabajar con alertas

35

Dia 5

36

Consideraciones para aplicaciones de formularios múltiples

Bibliotecas, clases de objetos y atributos visuales

37

36

Consideraciones de calidad para Oracle Forms

37

Dia 1

ORACLE FORMS

Oracle Forms 6.0 es una herramienta de desarrollo que puede ser usada para crear aplicaciones para introducir, acceder a, modificar o eliminar datos desde una base de datos Oracle en un entorno basado en formularios en línea. Forms ha proporcionado muchos objetos para desarrollar un módulo de aplicación efectivo. Acoplado con el concepto de extensibilidad de usuario, Forms puede ser usado para servir virtualmente para cualquier necesidad en línea en un entorno de bases de datos de Oracle.

Este capítulo explora muchos de los conceptos relacionados con el desarrollo de Oracle Forms. Los ejemplos comienzan con unos primeros pasos iniciales y agregan gradualmente información suficiente de forma que el lector puede seguir sus propios pasos. Con cada avance en la complejidad, las aplicaciones se van haciendo más potentes. Al final, seremos capaces de hurgar dentro de conceptos avanzados y quizás agregar innovaciones propias.

El entorno de Oracle Forms

Oracle Forms 6.0 opera en un entorno de interfaz gráfica de usuario como Windows 3.x de Microsoft. Las herramientas primarias usadas para desarrollar formularios personalizados son el Navegador de Objetos, el Layout Editor (Editor de Diseño) y las hojas de propiedades de objetos. Además de los formularios en línea, Oracle Forms 6.0 es utilizado también para crear y mantener menús de aplicaciones y bibliotecas de unidades de programas.

El Navegador de Objetos

El Navegador de objetos (que se muestra en la figura 1) presenta todos los elementos que se combinan para crear un módulo de aplicación de Oracle Forms. Se pueden manipular esos elementos (u objetos) usando los botones en forma de iconos y las opciones de los menús. Dentro del Navegador de Objetos, los componentes de la aplicación se presentan en formato de esquema jerárquico indicando la organización de los elementos individuales.

Figura 1. El Navegador de Objetos de Oracle Forms y las hojas de propiedades. Disparadores

Figura 1. El Navegador de Objetos de Oracle Forms y las hojas de propiedades.

Disparadores

Los disparadores son funciones PL/SQL que son ejecutadas basadas en alguna actividad o condición específicas del formulario. Estas actividades, llamadas eventos, son la base de la característica de la extensibilidad de usuario de Oracle Forms. Aunque muchos de los eventos disparadores realizan una función particular por defecto, se puede escribir un disparador para desactivar, modificar o mejorar las capacidades de procesamiento por defecto asociadas con el evento. Se pueden definir los disparadores como el nivel de campo de formulario, bloque, registro o individual. Además, un disparador puede hacer que se “dispare” otro disparador, así como ejecutar, otra unidad del programa relacionado.

Alertas

Las alertas proporcionan información adicional o bien otros mensajes que requieran respuesta o acuse de recibo desde el usuario. Una alerta puede contener de uno a tres botones que se pueden usar para definir la acción que el usuario desea que se ejecute basada en la condición.

Bibliotecas Incorporadas

Las bibliotecas son módulos especiales de Oracle Forms que pueden ser definidos para contener procedimientos y funciones reutilizables. Vinculando bibliotecas de unidades de programa a un formulario, se puede mantener el código del programa en un único archivo en luegar de en cada

módulo de formulario individual. Las bibliotecas ayudan a asegurar la calidad de una aplicación comprobando que todos los módulos siguen las mismas reglas del tema.

Bloques

Un bloque de un formulario corresponde generalmente a una entidad individual (table, vista o instantánea) de la base de datos. Adicionalmente, se pueden crear bloques que no corresponden a ninguna tabla. Esos bloques, llamados bloques de tabla no base, contienen usualmente información de control genérica, tal como criterios de consulta, contadores, indicadores condicionales y otra información que puede estar relacionada con más de un registro o actividad. (Los bloques que se relacionan con una entidad son denominados bloques de tabla base).

Elementos

Los elementos (que no se muestran en la figura 1) son agrupados en el Navegador de Objetos dentro de sus bloques respectivos. Un elemento corresponde a un elemento de datos o un campo único. Esos elementos pueden contener columnas de base de datos o pueden ser usados como contenedores para otros datos relacionados.

Relaciones

Las relaciones (que no se muestran en la figura 1) son definidas de acuerdo con la forma en que se relacionan entre sí los bloques independientes de un formulario. Generalmente en un formulario de varios bloques, un bloque es definido como tabla primaria o maestra y el otro bloque muestra información de detalle asociada con el registro actual del bloque maestro. Un ejemplo de formulario de detalle maestro es una aplicación de registro de empleados en la que el bloque maestro muestra el Departamento y el bloque del detalle muestra Las personas que pertenecen a ese departamento.

Vistas-Lienzo

Un lienzo es la estructura virtual en la que se disponen los objetos del formulario. Para la mayor parte, los lienzos son definidos como lienzos de contenido o apilados. Un lienzo de contenido se muestra en su totalidad dentro de la ventana del formulario. Siempre que se muestra por primera vez un lienzo de contenido, todos los demás lienzos son ocultados en la ventana. Un lienzo apilado, por otra parte, se muestra “por encima” de todos los lienzos existentes dentro de la ventana del formulario. Además de esos dos tipos de lienzos, se ha incluido en Forms un tercer tipo de lienzo. Una barra de botones aparece en la parte superior de todos los lienzos que se muestran y es utilizada usualmente para contener botones en forma de iconos para los comandos del usuario. Existe un lienzo nulo especial para contener los objetos que se muestran.

Editores

Un editor es una ventana para visualizar y mantener campos de datos grandes. Estos campos están algunas veces incluidos para la entrada de comentarios del usuario o para otra información que no quepa normalmente en un elemento que se muestre.

LOV (Listas de Valores)

Los LOV (list of values, listas de valores) proporcionan al usuario una lista de entradas válidas para un campo. Una lista de valores presenta datos contenidos dentro de un objeto llamados un grupo de registros mediante los cuales el usuario selecciona un valor desde la lista para poblar un elemento del formulario. También se puede utilizar la lista de valores para validar la entrada del usuario con el fin de garantizar que se ha introducido un valor válido.

Grupos de Objetos

Un grupo de objetos es un mecanismo especial para empaquetar varios objetos de formulario dentro de un contenedor, que pueda ser usado después en otros formularios con un mínimo de programación. Una vez que se ha creado un grupo de objetos en un formulario, se puede copiar cualquiera de los objetos del formulario dentro del grupo de objetos. Por ejemplo, un formulario puede contener un paquete secundario que muestre una plantilla de un horario. Se pueden copiar los componentes de este módulo secundario al grupo de objetos y otros formularios pueden hacer referencia al grupo de objetos, que se comporta como si fuera parte del mismo formulario segundo. Esta es otra característica de Forms que promueva el planteamiento orientado a objetos a la vez que garantiza la calidad por medio de la consistencia.

Parámetros

Podemos definir parámetros para un formulario para proporcionar un entrada de inicio para el formulario. Generalmente, los parámetros pasan valores desde un formulario hasta otro formulario recién llamado en una aplicación de varios formularios. Antes de las herramientas de Developer/2000, la única forma de pasar valores entre formularios era por medio del uso de variables globales que tendían a consumir la memoria disponible. Aunque las variables globales están aún disponibles, se deben usar parámetros en los casos en que los datos sean específicos para los formularios individuales en lugar de ser universales para todos los formularios de una aplicación.

Unidades de Programa

Las unidades de programa son procedimientos y funciones PL/SQL que pueden llamar los disparadores del formulario. Una unidad de programa es equivalente al concepto de programación de tercera generación de las subrutinas. Un candidato típico para su definición es un segmento de código de programa usado por más de un disparador. Se deben usar también unidades de programa para modularizar segmentos de código grandes.

Clases de Propiedad

Una clase de propiedad define las propiedades de una clase de objetos. En los casos en los que muchos objetos de formulario tienen propiedades idénticas, una clase de propiedad beneficia al desarrollador garantizando que los objetos son consistentes. Adicionalmente, se pueden usar las clases de propiedad para hacer cumplir los estándares y para acelerar el tiempo de desarrollo de un módulo de formulario.

Grupos de Registros

Se puede considerar un grupo de registros como una tabla virtual en la memoria. Los grupos de registros son conjuntos de datos estructurados que se pueden usar para pasar datos entre módulos de aplicaciones o para poblar listas de valores o de otros elementos de listas.

Atributos Visuales

Un atributo visual de un objeto define el color, la fuente y las características de estilo de un elemento. Aunque se puede ver cada uno de los valores individualmente para cada objeto, el atributo visual proporciona un mecanismo para definir una combinación válida de características visuales para un formulario. Una aplicación de alta calidad no debe usar muchos atributos visuales diferentes dentro de los elementos. Adhiriéndose a un conjunto de atributos visuales, los formularios pueden usar una característica particular de un elemento para expresar un sentido específico.

Ventanas

Una ventana es el marco dentro del cual aparece un formulario sobre la pantalla de un usuario. Cada lienzo es asignado a una ventana específica en el formulario y varios lienzos pueden ser asignados a la misma ventana. Un único formulario puede contener varias ventanas o consistir en sólo una ventana.

Hojas de propiedades de objetos

Las características de cada elemento de un formulario son definidas por sus diversas propiedades. Existe una hoja de propiedades sensible al contexto para cada componente, basada en el tipo de objeto que es definido. Las propiedades están agrupadas lógicamente dentro de la hoja de propiedades y cada tipo de objeto tiene una hoja de propiedades diferente. En este capítulo se describen más adelante varias de las propiedades más importantes.

La barra de desplazamiento en el lado derecho de la hoja de propiedades permite navegar por la hoja de propiedades y los botones en forma de iconos de la parte superior controlan las actividades de la hoja.

Los dos primeros botones copian y pegan todas las propiedades entre la hoja de propiedades y el portapapeles. Los dos botones siguientes agregan y eliminan propiedades personalizadas de la hoja de propiedades. El botón siguiente crea una nueva clase de propiedad basada en las propiedades del objeto.

El botón Inherit (Heredar) hace que la propiedad seleccionada en la actualidad herede desde la clase de propiedad del objeto. Si no se define ninguna clase para el objeto, el botón Inherit hace que la propiedad sea restaurada al valor por defecto de Forms 6 para la propiedad.

El siguiente botón se usa cuando se selecciona un objeto desde el Navegador de Objetos. El botón cambia entre mostrar la unión de todas las propiedades asociados con todos los objetos seleccionados o sólo las propiedades asociadas con todos los objetos (intersección). Cuando se seleccionan varios objetos en el Navegador de Objetos, un sencillo cambio a una propiedad en la hoja de propiedades es propagado a todos los objetos.

Se usa el último botón para congelar (freeze) o descongelar (unfreeze)el modo de sincronización de la hoja de propiedades . Cuando la ventana está descongelada (por defecto), siempre que se

selecciona un objeto nuevo, la hoja de propiedades está sincronizada para mostrar el nuevo objeto. Sin embargo, si está congelada no se produce la sincronización hasta que se descongele.

Truco: Se pueden maximizar las diversas ventanas de Oracle Forms dentro de la ventana del diseñador. Pero, en la práctica, usando varias ventanas simultáneamente (véase figura 1) se puede acelerar la fase de programación del módulo. Conforme nos movemos por el Navegador de Objetos, se muestra la hoja de propiedades adecuada y, al seleccionar varios elementos del Navegador, veremos las propiedades comunes. Esta es una cuestión de preferencia personal y podemos encontrar que tiene varias ventanas es demasiado confuso.

El editor Layout Editor

El Layout Editor (Editor de Diseño), véase figura 2, presenta el lienzo sobre el que se disponen los objetos del formulario. Esta herramienta es manejada poro medio del uso de botones en forma de iconos y de opciones de menús. Se usan los botones situados en el lado izquierdo de la ventana del Layout Editor para crear y manipular los objetos de la disposición del formulario. La tabla 1 describe estos botones (de arrriba abajo y de izquierda a derecha).

Botón

Uso

Seleccionar

Selecciona objetos en el lienzo. Hace zoom acercando/alejando sobre el lienzo. Se hace clic en el lienzo para acercar. Se hace clic manteniendo pulsada la tecla de mayúsculas para alejar. El nivel de ampliación actual se muestra en la zona inferior izquierda de la ventana del Layout Editor. Dibuja un rectángulo en el lienzo. Dibuja un círculo o una elipse. Dibuja un objeto de varios lados. Dibuja un rectángulo con las esquinas redondeadas. Agrega texto fijo al lienzo. Crea un elemento de casilla de verificación. Crea un campo de elemento de texto. Crea un elemento de Oracle Graphics. Crea un elemento de control VBX Crea un elemento de lista desplegable. Gira el elemento seleccionado. Remodela el elemento seleccionado, Dibuja una línea. Dibuja una línea curva. Dibuja una serie de líneas conectadas. Dibuja en el modo de mano alzada. Crea un elemento de botón para pulsar. Crea un elemento de botón de radio. Vincula un elemento de imagen al lienzo Crea un elemento de contenedor de OLE. Crea un elemento sólo para fines de visualización.

Ampliar

Rectángulo Elipse Polígono Rectángulo Redondeado Texto Check Box Text Item Chart Item VBX Control List Item Rotar Remodelar Línea Arco Línea segmentada Mano Alzada Push Button Radio Button Image Item OLE2 Object Display Item

Tabla 1 Botones del Layout Editor

Los cuadros de lista de la parte superior del Layout Editor permiten al usuario navegar entre los diversos lienzos (Canvas) y bloques del formulario, mientras que los botones en forma de iconos se usan para el control de los comandos dentro del editor. Estos botones son, en orden:

Herramientas de Desarrollo Oracle Forms

8

Open

Abre un módulo existente.

Save

Guarda el módulo actual.

Run

Ejecuta el módulo actual.

Cut

Corta los objetos seleccionados.

Copy

Copia los objetos seleccionados.

Paste

Pega los objetos desde el Portapapeles.

Copy Properties

Copia las propiedades en el Portapapeles.

Paste Propierties

Pega las propiedades desde el Portapapeles.

Propierties Pega las propiedades desde el Portapapeles. Figura 2 El Layout Editor de Oracle Forms Personalizar

Figura 2

El Layout Editor de Oracle Forms

Personalizar el entorno Forms

Oracle Forms 6 permite al programador modificar el entorno de desarrollo seleccionando el menú Tools, Options (Herramientas, Opciones). Se usa el cuadro de diálogo Designer Options (véase figura 3) para ver el comportamiento del Oracle Forms Designer.

3) para ver el comportamiento del Oracle Forms Designer. Figura 3.1 El cuadro de diálogo de

Figura 3.1 El cuadro de diálogo de Preferencias

Designer. Figura 3.1 El cuadro de diálogo de Preferencias Figura 3.2 El cuadro de diálogo de

Figura 3.2 El cuadro de diálogo de Preferencias (Access)

Figura 3.3 El cuadro de diálogo de Preferencias (Wizards) Las cuatro casillas de verificación establecen

Figura 3.3 El cuadro de diálogo de Preferencias (Wizards)

Las cuatro casillas de verificación establecen el modo operativo de Oracle Forms Designer. Si está activada, la primera casilla (Guardar antes de generar) hace que el módulo actual sea guardado automáticamente siempre que se genere un formulario y la segunda casilla (Generar antes de ejecutar) hace que el formulario sea generado (compilado) siempre que sea ejecutado desde el diseñador. (El efecto neto de tener las dos casillas activadas es que todos los formularios son guardados y generados haciendo clic en el botón Run (Ejecutar).

Nota: Muchas de las versiones anteriores de Oracle Forms eran famosas por producir fallos de protección general, lo que daba como resultado pérdida de trabajo. Se ha hecho una práctica común usar esas casillas de verificación universalmente en la práctica. Desafortunadamente, a menos que se guarde una copia de seguridad de un módulo, las modificaciones pueden destruir las versiones anteriores de un formulario si se usan esas opciones.

Por defecto, Oracle Forms muestra una sugerencia en la zona inferior izquierda de la pantalla basada en el contexto del diseñador. Seleccionando la casilla siguiente, Suppress Hints (Suprimir Sugerencias), se suprime la aparición de sugerencias. Si se activa la opción siguiente, Run Modules Asynchronously (Ejecutar módulos en forma asíncrona) el Forms Designer permite ejecutar un módulo de formulario y trabajar simultáneamente en el diseñador. De otro forma, es necesario salir del formulario en tiempo de ejecución antes de usar posteriormente el diseñador. La última casilla de verificación define el editor que debe ser usado en el diseñador. La última casilla de verificación define el editor que debe ser usado en el diseñador. Activando esta casilla, hace que el diseñador use un editor del sistema operativo en lugar del de formularios por defecto. (En entornos de Windows 3.x o de Windows 95/NT, el editor de formularios por defecto opera de forma similar a notepad.exe)

La paleta de colores determina los colores que deben ser usados en un formulario. Se recomienda que se use la paleta de 16 colores de Oracle, como se ve en la figura 3 para garantizar la capacidad de correspondencia de colores entre los objetos del formulario. Se

utiliza el Modo de la paleta de colores para definir la forma en que deben ser manejadas las paletas de colores en Oracle Forms. Las opciones del cuadro de lista son: Editable, Read Only- Shared (Sólo lectura-compartido) y Read Only-Private (Sólo lectura-privado). Editable significa que la paleta de color del formulario activo reemplaza a la paleta de color del sistema, haciendo que el formulario activo sea mostrado con exactitud mientras que la apariencia de todos los formularios inactivos puede no ser exacta, Read Only-Shared significa que cada paleta de colores del formulario es agregada a la paleta del sistema hasta que el espacio reservado para la paleta quede lleno. Si se abre cualquier formulario que use una paleta de colores diferente, puede que no aparezca exacta. Finalmente, Read Only-Private opera lo mismo que el modo compartido excepto que Oracle Forms garantiza que la paleta usada es siempre válida para el formulario activo y que cualquier formulario inactivo puede no aparecer correctamente debido a que sus paletas de colores han sido borradas para dejar espacio para el nuevo formulario.

Las opciones Module Access (Acceso al módulo) definen si los módulos deben ser abiertos desde la base de datos (Database) o desde el sistema de archivos (File), o desde ambos (File/Database) o desde el sistema de ser incluidos en la selección. La última opción define la impresora que debe ser utilizada para cualquier necesidad de impresión del Forms Designer.

Se usa la segunda pestaña de esta ventana (véase figura 4) para definir las opciones a usar cuando se ejecuta un módulo desde el Oracle Forms Designer. La primera opción, Buffer Records in File (Registros de búferes en el archivo) , hace que Forms registre en un búfer en la memoria solamente el número mínimo de registros (el número de registros que se muestran más tres). Todas las filas adicionales recuperadas son almacenadas en un archivo temporal. La siguiente opción hace que el formulario sea ejecutado en un modo de depuración. Esta opción permite insertar instrucciones de interrupción en los segmentos PL/SQL para observar los valores de los elementos del formulario y para seguir la evolución del código del programa.

Las cuatro opciones siguientes están relacionadas con la puesta a punto del rendimiento de Oracle Forms. Array Processing (Procesamiento matricial) permite que el formulario devuelva varias filas desde la base de datos en un único ciclo búsqueda en lugar de una cada vez puede tener impacto en el uso de la memoria en el formulario. Para mantener compatibilidad hacia atrás, Oracle Forms permite usar en el formulario disparadores del estilo de la version 2 (pasos de procesamiento independientes). La opción Optimize Transaction Mode Processing (Optimizar el procesamiento del modo de transacción) hace que estos disparadores sean procesados utilizando una técnica de optimización para aprovechar las capacidades más “modernas” que están incorporadas en PL/SQL. Optimize Transaction Mode disparadores de confirmación) para optimizar el uso del cursor en forma que el cursor pueda ser compartido dentro del formulario. La opción Statistics (Estadísticas) devuelve las estadísticas relativas a la utilización de cursores y de otros recursos cuando se ejecuta el formulario. El otro efecto de esta opción es que es generada una sesión de SQL*Trace, que se puede analizar con TKPROF o con una herramienta de análisis del rendimiento para que sirva de ayuda en la puesta a punto.

Figura 4. Opciones del tiempo de ejecución de Oracle Forms. La siguiente opción, Display Block

Figura 4. Opciones del tiempo de ejecución de Oracle Forms.

La siguiente opción, Display Block Menu, muestra el menú del bloque de un formulario, en lugar del formulario en sí, tan pronto como se inicial el formulario.

Este menú permite navegar directamente a un bloque particular en lugar de al inicial por defecto. Query Only Mode (Modo de solo consulta) desactiva todas las inserciones, eliminaciones o actualizaciones de un formulario. Finalmente, Quiet Mode (Modo silencioso) “desconecta” el pitido audible que se produce siempre que se genera un mensaje en el formulario.

Creación de nuevos módulos de formularios

Se puede crear un formulario seleccionando File, New, Form (Archivo, Nuevo, Formulario) o bien usando la combinación de teclas de acceso rápido (Control+Y). El nuevo formulario es agregado al Navegador de Objetos. Adicionalmente, siempre que se inicia Oracle Forms Designer, se crea automáticamente un formulario nuevo vacío. Similarmente, se pueden crear desde el menú bibliotecas de unidades de programas (File, New, Library) (Control+I) y módulos de menú (File, New, Menu) (Control+E). A su vez, se pueden guardar esos módulos o bien ejecutándolos (con las opciones apropiadas seleccionadas) o seleccionando explícitamente File, Save (Archivo, Guardar) o usando el botón en forma de icono de las ventanas del diseñador.

Construir un formulario sencillo por defecto

La característica de Oracle Forms de tomar los valores por defecto de forma inteligente permite crear un formulario básico en pocos minutos. Como ejemplo, podemos crear el formulario de Empleados de la figura 5 sin escribir una sola línea de código del programa.

Figura 5. Formulario de Empleados. Para construir este formulario, se crea primero un formulario nuevo

Figura 5. Formulario de Empleados.

Para construir este formulario, se crea primero un formulario nuevo en el Navegador de Objetos (debe iniciarse la sesión en la base de datos si no se ha hecho antes) y se selecciona el grupo Bloques dentro del nuevo formulario. Aparecerá el cuadro de diálogo de definición de bloque de la Figura 6. Este formulario está basado en la tabla EMP;, por consiguiente, se introduce en el campo de la tabla base y se navega hasta el campo siguiente usando el botón Select situado a la derecha del campo del nombre de la tabla. Al pulsar ese botón se presenta un cuadro de diálogo que se puede utilizar para obtener una lista de todas las tablas disponibles en la base de datos.) Obsérvese que por defecto cambia el nombre del bloque para coincidir con el nombre de la tabla, aunque el nombre puede ser cualquier valor que se desee. Pulsando de nuevo la techa Tab para pasar al campo Canvas (Lienzo) que por defecto tiene un valor como CANVAS1.

Figura 6.1 Data Block Wizard (Selección de tabla y columnas) Figura 6.2 Data Block Wizard

Figura 6.1 Data Block Wizard (Selección de tabla y columnas)

Figura 6.1 Data Block Wizard (Selección de tabla y columnas) Figura 6.2 Data Block Wizard (Selección

Figura 6.2 Data Block Wizard (Selección del Canvas)

Figura 6.3 Data Block Wizard (Selección del bloque y sus elementos) Figura 6.4 Data Block

Figura 6.3 Data Block Wizard (Selección del bloque y sus elementos)

Data Block Wizard (Selección del bloque y sus elementos) Figura 6.4 Data Block Wizard (Etiquetas y

Figura 6.4 Data Block Wizard (Etiquetas y tamaño de los elementos)

Figura 6.5 Data Block Wizard (Selección del Estilo del bloque) Figura 6.6 Data Block Wizard

Figura 6.5 Data Block Wizard (Selección del Estilo del bloque)

6.5 Data Block Wizard (Selección del Estilo del bloque) Figura 6.6 Data Block Wizard (Selección del

Figura 6.6 Data Block Wizard (Selección del Título y cantidad de registros)

Una vez que se haya completado lo anterior, se hace clic en la pestaña Items para mostrar el cuadro de diálogo de definición de elemento que se muestra en las Figura 6.3 y 6.4. Para seleccionar las columnas de esa tabla se hace clic en el botón Select Columns y se presentará una lista de todas las columnas de la tabla. Un signo más delante de una columna indica que la

columna es utilizada en el formulario. Para excluir una columna, se hace doble clic en el nombre de la columna en el cuadro de la lista. Para cada columna de la lista, se modifica la etiqueta en el cuadro Label y el ancho de la columna en el cuadro With. El tipo de elemento se modifica en el cuadro de lista Type.

Después de completar este cuadro de diálogo, se hace clic en OK para terminar de construir el formulario. Para comprobar el formulario se hace clic en el icono Run (Ejecutar) o bien se selecciona File, Run (Archivo, Ejecutar) en el menú. Obsérvese que este capítulo supone que se han seleccionado las opciones del diseñador Save Before Generate (Guardar antes de generar) y Generate Before Run (Generar antes de ejecutar). En caso contrario, deben realizarse esos pasos manualmente antes de ejecutar el formulario. Aparecerá el formulario, tal como se ha mostrado antes en la Figura 5, con todos los cuadros de datos vacíos. Para presentar una lista de los datos existentes, se selecciona Consultar, Ejecutar. Se pueden introducir datos en los campos y después guardarlos usando Acción, Salvar. Para cerrar el formulario se selecciona Acción, Salir.

Dia 2

Usar texto fijo y gráficos para realzar las aplicaciones de formularios.

El ejemplo anterior no proporciona el aspecto y acabado tridimensional que es común en la mayor parte del software de Windows. Utilizando algunos de los objetos gráficos y efectos visuales de Oracle Forms, se puede transformar en una aplicación más agradable, como se muestra en la figura 9

aplicación más agradable, como se muestra en la figura 9 Figura 9. Utilización de objetos fijos

Figura 9. Utilización de objetos fijos para realzar la aplicación

Para modificar este formulario, lo abrimos el Layout Editor y seleccionamos el título del bloque y lo eliminamos con la tecla Supr. Hacemos lo mismo con el cuadro que rodea la cuadrícula de datos. Ahora, usando la herramienta de selección (pulsando sobre el icono en forma de flecha) se seleccionan todas las cabeceras de las columnas de la pantalla. Para modificar la fuente, se selecciona, Format, Fuente para mostrar el cuadro de diálogo de la figura 10. En este caso seleccionamos la Fuente, Arial; Estilo de Fuente, Negrita cursiva y tamaño 9. En el cuadro Ejemplo se ve una muestra de la selección. Al terminar se hace clic en Aceptar para aplicar las modificaciones.

Figura 10. El cuadro de diálogo de selección de fuentes. Ahora, situamos las cabeceras de

Figura 10. El cuadro de diálogo de selección de fuentes.

Ahora, situamos las cabeceras de las columnas centradas sobre las columnas seleccionando Arrange, Align Objects (Organizar, Alinear objetos). Para ello se hace clic en el texto de la cabecera de la primera columna de la izquierda para seleccionarlo y, después, manteniendo pulsada la tecla Mayúscula, se hace clic en el campo de esa columna. Seleccionando Arrange, Align Objects se seleccionan las opciones de alineación de la Figura 11. Se repetirá esta operación para las demás columnas.

Ahora seleccionaremos la herramienta Rectángulo y dibujaremos un rectángulo como se ve en la Figura 9 de forma que bordee ambos lados y la parte inferior de la cuadrícula de datos. (Se pueden usar los pequeños marcadores en forma de cuadrados negros para ajustar el tamaño y cambiará la posición del rectángulo, si fuera necesario.) Para crear el efecto tridimensional, seleccionaremos Format, Bevel (Formato, Bisel) y después del efecto Lowered (Rebajado) para crear el aspecto de un bloque rebajado sobre la pantalla. Se puede ajustar la profundidad utilizando Format, Line. Se crea otro rectángulo más pequeño para el rótulo de la pantalla, que se solape con el rectángulo anterior. Usando la herramienta Texto, crearemos él rótulo de la pantalla (EMP) utilizando una fuente apropiada. Debe tenerse en cuenta que puede ser necesario seleccionar el rectángulo mayor y a continuación Arrange, Send to Back (Organizar, Enviar atrás) para llevarlo a un segundo plano si han desaparecido las cabeceras de las columnas al insertar este rectángulo. Usando el ratón, podemos organizar los objetos para que aparezcan en la pantalla como se muestra en el ejemplo.

Figura 11. El cuadro de diálogo Alinear Objetos Nota: Algunas veces, la característica de valores

Figura 11. El cuadro de diálogo Alinear Objetos

Nota: Algunas veces, la característica de valores por defecto en forma inteligente de Oracle Forms hace que los objetos aparezcan de forma diferente a lo que se desea, especialmente en lo relativo a los atributos visuales de las líneas de los bordes y al relleno del objeto. Se pueden corregir esos atributos usando los botones de la paleta de atributos que se encuentran debajo de la presentación de los atributos visuales actuales en el Layout Editor. Igualmente el menú Arrange proporciona opciones para mover objetos hacia delante y hacia atrás de otros objetos.

Personalizar impresos con propiedades

Como hemos mencionado antes, se pueden utilizar las capacidades de las propiedades inteligentes por defecto de Oracle Forms para crear aplicaciones útiles. Sin embargo, en muchos casos es necesario definir características especiales para objetos de aplicaciones. Se puede hacer esto modificando las propiedades de los objetos del formulario usando la hoja de propiedades del objeto.

Para examinar las propiedades, cargaremos de nuevo el formulario de la sección anterior. Cada objeto del formulario (incluyendo el formulario en sí) tiene una hoja de propiedades asociada sensible al contexto. Las propiedades de los objetos están organizadas en grupos lógicos basados en su utilización. Para cambiar una propiedad, se selecciona el objeto en el Navegador de Objetos. Si la hoja de propiedades está visible en la organización de ventana dividida, la hoja de propiedades se muestra automáticamente para el objeto. Si la hoja de propiedades no

está visible, haciendo doble clic sobre el icono que se encuentra a la izquierda del nombre del objeto en el Navegador de Objetos se verá la hoja de propiedades.

Usualmente, solamente son visibles algunas de las propiedades en la ventana y se dispone de barras de desplazamiento para ver las demás propiedades. Para modificar una propiedad, se hace clic en la propiedad en la hoja de propiedades. El valor de la propiedad es copiado en la línea superior de la ventana de la hoja de propiedades. Para modificar la propiedad, se editará esta línea y se pulsará Intro.

La primera modificación personalizada que se haga afectará a la apariencia global de la aplicación. Seleccione la hoja de propiedades para la ventana del formulario (Ventanas).

Cambie el título de la ventana “EMP” por “EMPLEADOS” y después cambie el ancho de la ventana a 400 y la altura a 200. Para impedir que un usuario utilice la función Windows para cambiar el tamaño del marco de la ventana o para minimizar, actualice la propiedad Tamaño Fijo como TRUE (Verdadero) y la propiedad Iconificable como FALSE para la ventana del formulario. Adicionalmente, repita las propiedades del tamaño para el lienzo CANVAS1 (o

bien el número de CANVAS que resulte, CANVAS2

, etc.).

Ahora selecciones el elemento EMPNO y cambie la propiedad Actualización Permitida a FALSE. Este cambio protege de los cambios a la clave primaria de la tabla de empleados. Finalmente seleccione a la vez los campos EMPNO y ENAME. Obsérvase que la hoja de propiedades común muestra que se han seleccionado varios objetos y que, en los casos en que las propiedades son diferentes, se muestra un conjunto de asteriscos. Después de completar todos los cambios, guarde y ejecute el nuevo formulario. El resultado debe tener un aspecto como el de la Figura 12. Compare este formulario con el credo en la sección anterior para ver la forma en que los cambios de las propiedades afectan al módulo del formulario resultante.

propiedades afectan al módulo del formulario resultante. Figura 12. Formulario de ejemplo de las propiedades

Figura 12. Formulario de ejemplo de las propiedades personalizadas

Dia 3

Implementar disparadores y unidades de programa

Se pueden personalizar todavía más las aplicaciones de Oracle Forms desarrollando procedimientos y funciones PL/SQL llamados disparadores. Estos disparadores están vinculados para especificar actividades en el formulario llamados eventos. Los eventos están definidos generalmente como antes de (PRE-FORM, PRE-QUERY, PRE-INSERT), después de (POST-FORM, POST-QUERY, POST-INSERT) o bien durante (WHEN-NEW-FORM- INSTANCE, WHEN-BUTTON-PRESSED) las actividades comunes de la base de datos. Adicionalmente, se pueden asociar los disparadores con determinadas actividades del teclado (por razones de compatibilidad hacia atrás con aplicaciones basadas en caracteres), aunque la tendencia es reducir al mínimo los disparadores clave.

El formulario de Mantenimiento de empleados de la Figura 13 utiliza un disparador PRE- INSERT para determinar un número exclusivo de empleados basado en un generador de secuencias.

Adicionalmente, los disparadores son definidos por los botones de la parte inferior del formulario.

Para construir este formulario, se crea un bloque para la tabla EMPLEADOS usando un estilo de formulario en la definición de la disposición del bloque.

Se organizan los elementos y los objetos de texto fijo como se muestra en la figura y, usando la herramienta Push Button, se crean tres botones como se ve en la pantalla. (Esos botones tendrán en sus propiedades la Etiqueta PUSH_BUTTON.) Usando las herramientas Size Objects y Align Objects del menú Arrange, se colocan y se ajusta el tamaño de los objetos del formulario

y se colocan para que aparezcan como muestra la figura.

Ahora definiremos las propiedades de los objetos según sea necesario definiendo los tamaños de

la ventana y del lienzo y de los títulos. A continuación, puesto que el número de empleado debe

estar protegido contra las actualizaciones, cambiaremos las propiedades Actualización Permitida

y Navegable de EMPNO a False. Modificaremos las propiedades de los rótulos para que los botones reflejen el texto que se muestra en la figura.

En este punto, podemos agregar al formulario la lógica de procesamiento adicional. En primer lugar, EMPLEADOS en el Navegador de Objetos. Haremos clic en el botón Create (Crear) y aparecerá una lista de todos los nombres de disparadores válidos que pueden ser construidos para el formulario. El disparador que va a ser construido determina el número de empleado para un empleado nuevo antes de insertar basado en el generador de secuencia de la base de datos. Mientras se muestra esta lista, se puede o bien usar la barra de desplazamiento para encontrar el disparador PRE-INSERT o bien teclear el nombre del disparador dentro del cuadro de entrada.

Figura 13. Impreso de Mantenimiento de Empleados Nota: Generalmente las listas de Oracle Forms usan

Figura 13. Impreso de Mantenimiento de Empleados

Nota: Generalmente las listas de Oracle Forms usan un algoritmo para estrechar una lista cuando se pulsan las teclas. En este caso, después de teclear P y R la lista muestra todos los disparadores PRE-x y la línea de entrada sigue adelante debido a que no existen otros disparadores que comiencen con esas letras. Si se teclea una I y el disparador PRE-INSERT será el único disparador de la lista.

El editor PL/SQL, que se muestra en la Figura 14 aparece, indicando el nivel del disparador y el nombre del disparador con una zona que puede ser usada para introducir el procedimiento del disparador como se ha mostrado. Una vez que se introduce el texto, se hace clic en el botón Compilar para asegurarse de que no hay errores de código después se hace clic en el botón Cerrar para completar la definición del disparador. Obsérvese el signo de dos puntos usado para hacer referencia desde los campos. Se pueden usar otros botones para Retroceder a la versión anterior a la del último cierre o compilación, para crear un disparador Nuevo o para Borrar el disparador existente.

Finalmente, se debe crear disparadores WHE-BUTTON-PRESSED para los tres botones que han sido creados en el lienzo del formulario como se indica a continuación:

Save:

begin

commit-form;

 

end;

Clear

begin

clear_form;

end;

Exit

begin do_key (‘EXIT_FORM’); end;

end; Exit begin do_key (‘EXIT_FORM’); end; Figura 14. Editor PL/SQL para la creación de disparadores

Figura 14. Editor PL/SQL para la creación de disparadores

Los dos primeros disparadores usan procedimientos incorporados estándar, mientras que el tercero usa el procedimiento incorporado DO_KEY para simular la pulsación de la tecla Exit.

Nota: La tecla Exit (Salir) es definida por el mapeado del teclado para el dispositivo de presentación en pantalla. En el teclado del PC de IBM, esto es por defecto la tecla Esc pero puede ser modificado usando Oracle Terminal. Para visualizar el mapeado real de las teclas durante el tiempo de ejecución de Oracle Forms, se teclea Control+K o se selecciona Ayuda, Teclas en el menú del formulario.

Siempre que se usa un botón de la pantalla para realizar la misma función que sería realizada al pulsar una tecla específica, es generalmente una buena práctica usar el procedimiento incorporado DO_KEY. Se puede codificar cualquier lógica específica que necesita ser realizada antes de salir del formulario en un disparador KEY-EXIT para asegurar la consistencia

Dia 4

Usar grupos de registros y listas de valores para la validación de los datos

Un grupo de registros es una estructura interna que es análoga a una tabla en la memoria. Los grupos de registros contienen columnas y filas con datos basados en una estructura definida por una definición de consulta o de columna.

Los usos de los grupos de registros incluyen parámetros, matrices estructuradas y entidades de validación. Este último uso de los grupos de registros es demostrado en el Mantenimiento de empleados de la Figura 15.

demostrado en el Mantenimiento de empleados de la Figura 15. Figura 15. Formulario de mantenimiento de

Figura 15. Formulario de mantenimiento de Empleados.

Para construir este formulario, se comienza con un bloque por defecto para la tabla de elementos usando la disposición de estilo de formulario. A continuación, se cambia Lienzo mostrado a <Null> y la propiedad Mostrado a False para los elementos que se desee ocultar de la vista. Estos elementos son ocultados de la vista y son actualizados por las validaciones de la lista de valores que son construidos para este formulario. También se hará que el campo EMPNO sea no actualizable y no navegable. Los campos deben ser poblados con datos siempre que se

Herramientas de Desarrollo Oracle Forms

26

consulte un registro de elementos. del ejemplo:

Begin

Para hacerlo se crea un disparador POST-QUERY similar

select dname into :emp.descrip_depar from dept where deptno = :emp.deptno; exception when no_data_found then :emp.descrip_depar := 'Dept no Existe'; RAISE FORM_TRIGGER_FAILURE

End;

Nota: Este disparador ha sido escrito de esta forma puesto que en una aplicación cliente/servidor, una consulta única es mucho más efectiva que varias consultas independientes. Debido a que cada uno de los campos que deben ser cargados pueden obtenerse a través de una consulta. Otro planteamiento ( y probablemente mejor) es crear una vista que recupere esos valores en la consulta inicial. Siempre se puede usar una vista como tabla base para un bloque. El paso de la excepción introduce unos pocos conceptos nuevos con relación a los disparadores la campana incorporada (bell) realiza un sonido audible desde el terminal del usuario. También la excepción FORM_TRIGGER_FAILURE que es lanzada antes de salir del disparador hace que se aborte el todo el procesamiento cuando se produzca un fallo.

Ahora deben definirse las listas de valores para el departamento. Para crear una lista de valores, se selecciona LOV en el Navegador de Objetos y se hace clic en el botón Create. Aparecerá el cuadro de diálogo de la Figura 16. En el cuadro permite escojer que tipo de creación desea hacer, Manualmente o Wizard, una vez que escoja presiona OK.

La primera pantalla le pedirá si tiene un record group ya creado, caso contrario se realizará un nuevo LOV con un record group tambien nuevo (Fig. 16.1). Como un LOV es información de ayuda, se tiene que armar un query el cual recupere esa información. (Fig. 16.2)

Las pantallas que siguen, es para verificar cuales campos en el LOV vamos a presentar, a que campos de la forma se le asigna ese valor una vez que se recupere los valores, titulo, ancho columnas etc.

una vez que se recupere los valores, titulo, ancho columnas etc. Herramientas de Desarrollo Oracle Forms

Figura 16. Creación de una nueva lista de valores

Figura 16. Creación de una nueva lista de valores Figura 16.1 Nuevo grupo de registros o

Figura 16.1 Nuevo grupo de registros o uno ya existente

Figura 16.1 Nuevo grupo de registros o uno ya existente Figura 16.2 Query que recupera los

Figura 16.2 Query que recupera los datos en el LOV

Figura 16.3 Correspondencia de columnas para una lista de valores Figura 16.4 Formato y asignación

Figura 16.3 Correspondencia de columnas para una lista de valores

16.3 Correspondencia de columnas para una lista de valores Figura 16.4 Formato y asignación de valores

Figura 16.4 Formato y asignación de valores

Figura 16.5 Titulo, Tamaño y Coordenadas de la pantalla del LOV Figura 16.6 Cantidad de

Figura 16.5 Titulo, Tamaño y Coordenadas de la pantalla del LOV

16.5 Titulo, Tamaño y Coordenadas de la pantalla del LOV Figura 16.6 Cantidad de Registros a

Figura 16.6 Cantidad de Registros a Presentarse

Figura 16.7 Campos a Asignarse en la forma Figura 16.8 Propiedades del campo que contiene

Figura 16.7 Campos a Asignarse en la forma

Figura 16.7 Campos a Asignarse en la forma Figura 16.8 Propiedades del campo que contiene la

Figura 16.8 Propiedades del campo que contiene la lista de valores

Para culminar la creación del LOV, debemos verificar si el campo de la forma tiene asignado un LOV, esto lo podemos visualizar en las propiedades del campo, en las propiedades de lista de valores. Si nosotros queremos que cuando un usuario digite un dato erroneo aparezca el LOV, la propiedad de VALIDATE FROM LIST debe estar en YES

Finalmente, para conseguir completar el formulario, se crea el disparador PRE-INSERT en el bloque de elementos para seleccionar el valor siguiente de S_EMP desde el generador de secuencia como el valor de un nuevo EMPNO. Entonces se debe guardar y generar el formulario para comprobar este concepto.

SELECT S_EMP.NEXTVAL INTO :EMP.EMPNO FROM DUAL;

Una característica a tener en cuenta es que la lista puede ser activada usando la tecla de Lista de Valores (F9 en la mayor parte de las configuraciones estándar de PC; para ver una lista de las teclas definidas, se puede seleccionar Ayuda, Teclas desde el menú). La característica de validación permite al usuario teclear solamente parte del nombre del campo para reducir la lista.

Usar relaciones para enlazar bloques separados en un formulario

Hasta ahora, los ejemplos que se han descrito aquí solamente utilizan un único bloc de datos. La característica clave de Oracle (o de otras bases de datos relacionales) es que las tablas están relacionadas entre sí por los campos clave.

Podemos construir un formulario maestro-detalle, para el cual vamos a necesitar dos bloques, uno que contengan datos referentes a los departamentos y el otro que contengan datos de los empleados.

Ahora vamos a crear una relación entre los bloques, el cual me ayude en el momento de presentar los datos, saber cuales empleados pertenecen a un departamento especifico (Ver fig 18).

Figura 18. Pantalla con dos bloques relacionados. Para crear las relaciones debemos de ubicarnos en

Figura 18. Pantalla con dos bloques relacionados.

Para crear las relaciones debemos de ubicarnos en el bloque que va a ser maestro (en el caso del ejemplo el que contiene la información de los departamento) y en la clausula relations Crear una relación. Acontinuación debemos llenar los datos de la caja de dialogo con el nombre del bloque que va a ser el detalle (EMP) y la condición que va a relacionar los bloques (EMP.DEPTNO = DEPT.DEPTNO) y automaticamente va a crear Triggers en el bloque de Cabecera y triggers a nivel del forms (ver Fig 19.)

Figura 19. Creación de relaciones entre bloques. Eventos de ratón, temporizadores y otras cuestiones avanzadas

Figura 19. Creación de relaciones entre bloques.

Eventos de ratón, temporizadores y otras cuestiones avanzadas

La interfaz estándar de Windows usa varios controles gráficos y otros objetos para controlar el funcionamiento de los componentes de las aplicaciones. Oracle Forms proporciona acceso a muchas de esas características a través del uso de disparadores del ratón, temporizadores y controles VBX. Además la mensajería de la mayor parte del software de Windows se realiza a través de un objeto llamado cuadro de alerta que ha sido implantado en Oracle Forms.

Trabajar con el ratón

El puntero del ratón es el dispositivo principal de las entradas del usuario para la navegación y la selección de la mayor parte de las aplicaciones de Windows. Oracle Forms proporciona disparadores para detectar y actuar en varias de las actividades con el ratón.

Oracle Forms 6.0 usa el ratón para la navegación y para la entrada de comandos. Además, el ratón puede ser usado para disparar eventos específicos. Un evento puede ser disparado cuando el ratón pasa sobre un elemento de la pantalla (WHEN-MOUSE-ENTER) o cuando sale del elemento (WHEN-MOUSE-LEAVE). Puede producirse un tercer estado del ratón si el ratón se mueve dentro de un elemento (WHEN-MOUSE-MOUVE).

La tabla 23.2 describe los disparadores adicionales que han sido agregados para las actividades con los botones del ratón.

Nombre del

Uso

WHEN_MOUSE_DOWN

El operador pulsa y mantiene pulsado el botón del ratón El operador suelta el botón del ratón El Operador pulsa el botón y lo suelta rapidamente El operador hace click dos veces sucesivas en el ratón Devuelve 1 para el botón izquierdo; 2 para el botón central o derecho Devuelve nulo, Mayus+ ,Control+, o Mayus+Control+, dependiendo de la tecla pulsada Elemento actual en el que está localizado el cursor del ratón Lienzo actual en el que esta localidaco el cursor del ratón Posición X actual del ratón dentro del elemento Posición Y actual del ratón dentro del elemento Registro dentro del bloque en el que está localizado el cursor del ratón Registro en el que está localizado el cursor del ratón con ralación al primer registro que se muestra Formulario actual en el que está localizado el cursor del ratón

WHEN_MOUSE_UP

WHEN_MOUSE_CLICK

WHEN_MOUSE_DOUBLECLICK

MOUSE_BUTTON_PRESSED

MOUSE_BUTTON_SHIFT_STATE

MOUSE_ITEM

MOUSE_CANVAS

MOUSE_X_POS

MOUSE_Y_POS

MOUSE_RECORD

MOUSE_RECORD_OFFSET

MOUSE_FORM

Tabla 23.2. Disparadores del ratón

La instalación por defecto de Oracle Forms incluye varias bibliotecas y programas de ejemplo que se pueden usar para el desarrollo de los formularios.

Una de esas bibliotecas, DRAG.PLL, proporciona funciones que pueden ser usadas para la funcionalidad de arrastrar y soltar de Oracle Forms. Para usar esa biblioteca, seleccione el grupo Bibliotecas incorporadas en el formulario y haga clic en el botón Create. Seleccione después DRAG.PLL en la ventana Biblioteca del cuadro de diálogo Incorporar Biblioteca.

Trabajar con alertas

Las alertas son dispositivos que pueden ser incluidos en un formulario para proporcionar al usuario la información que requiere una respuesta. Una alerta puede ser de tres estilos: de Parada (usualmente errores fatales), de Precaución (mensajes de aviso) y de Observación (informativa). Dependiendo del estilo que se escoja, aparecerá un icono diferente en el cuadro de alerta. Además, se pueden definir hasta tres botones rotulados para determinar la respuesta del usuario. La asignación por defecto es un cuadro de alerta de dos botones con los títulos OK (Aceptar) y Cancel (Cancelar). Para mostrar esta alerta, una función incorporada usa la sintaxis siguiente:

Button_no := SHOW_ALERT (nombre_alerta);

Button_no es definida como una variable numérica PL/SQL. Usando la SET_ALERT_PROPERTY incorporada, se puede cambiar dinámicamente la propiedad ALERT_MESSAGE_TEXT en el tiempo de ejecución. Usando el disparador estándar, ON- MESSAGE, se puede crear un cuadro de alerta que presente al usuario todos los mensajes en un cuadro de alerta en lugar de la línea de estado, que a veces es ignorada por el usuario. Se puede escribir un ON-MESSAGE que utiliza el cuadro de diálogo MSG_ALERT de Parada, un botón con el rótulo OK (Aceptar) como sigue:

declare

msgtext

VARCHAR(80) := message_text;

bno

number;

begin set_alert_property (‘MSG_ALERT’, ALERT_MESSAGE_TEXT, msgtext); bno := show_alert (‘MSG_ALERT’); end;

Dia 5

Consideraciones para aplicaciones de formularios múltiples

Oracle Forms proporciona tres procedimientos incorporados que permiten que el usuario acceda

a otros formularios desde un formulario original de llamada. Estos procedimientos son NEW_FORM,CALL_FORM y OPEN_FORM.

NEW FORM termina la ejecución del formulario original e inicia el nuevo formulario. Si se han realizado cambios en los datos de la base de datos, se le solicitará al usuario si desea confirmar los datos. Si selecciona no confirmar los cambios, estos se pierden. Una llamada NEW_FORM se usa generalmente cuando el usuario navega a un módulo de aplicación sin relacionar.

Por otra parte, CALL_FORM pasa la ejecución al formulario siguiente, a la vez que mantiene

una pila de llamada que regresa al formulario que llama cuando se sale del formulario llamado.

Si quedan pendientes cambios en el formulario que llama, se ejecuta el formulario llamado en el

modo POST_ONLY. Si el usuario intenta guardar los cambios realizados en el formulario llamado, los cambios son enviados a la base de datos (una anulación pierde todos los cambios) y son guardados cuando se confirma el formulario original. Generalmente, se usa CALL_FORM cuando los dos formularios son dependientes entre sí y los valores pueden ser pasados o bien en variables globales o como parámetros. Una utilización de CALL_FORM es agregar un botón a un formulario de introducción de pedidos que puede ser usado para crear un nuevo registro de empleado. El segundo formulario puede ser usado después para crear el registro del empleado

y, después de que se inserta un registro nuevo y se entrega o se confirma, puede devolverse el

número del empleado dentro de una variable global para ser usado para la entrada de pedidos.

Finalmente, se usa OPEN_FORM para cargar un segundo formulario a la vez que se mantiene la funcionalidad del primero. Por defecto, el segundo formulario se convierte en el formulario activo; sin embargo, el usuario puede activar el primer formulario haciendo clic dentro de su marco. Si el segundo formulario no debe ser convertido en el formulario activo, puede definirse el segundo parámetro de la llamada al procedimiento como NO_ACTIVATE. Además, el nuevo formulario es abierto en la misma sesión como formulario original de llamada. Es posible, sin embargo, llamar al segundo formulario con una sesión independiente definiendo el tercer parámetro de la llamada como SESSION. Esto conecta al usuario en una segunda (o tercera, y así sucesivamente) sesión. La ventaja de tener abierta la segunda sesión es que se pueden hacer modificaciones dentro del primer formulario y se las puede confirmar sin afectar a las modificaciones pendientes en el primer formulario. Se puede desarrollar una aplicación interesante en la que el primer formulario ejecute una consulta basada en un temporizador (por ejemplo, cada dos minutos). Entonces se puede usar el segundo formulario para mantener registros sobre la base de datos y las modificaciones se mostrarían en el formulario original. (Esta es una forma tosca aunque eficaz de pasar datos entre dos áreas de aplicaciones.

Bibliotecas, clases de objetos y atributos visuales

Una de las principales características de los entornos de programación orientados a objetos es el concepto de la reutilización. Al crear objetos reutilizables, podemos hacer cumplir los estándares en forma global y desarrollar aplicaciones con un ritmo sin precedentes. Los usuarios se encuentran más cómodos con una aplicación que aparece y opera de forma uniforme. Se han incluido varios objetos en Oracle Forms para proporcionar esta capacidad de reutilización. Como se ha descrito antes, las bibliotecas son repositorios de unidades de programas PL/SQL reutilizables. Para trabajar con una biblioteca se crea la biblioteca en el Navegador de Objetos lo mismo que se hace para un formulario. Una biblioteca puede estar relacionada con tres bibliotecas y puede contener unidades de programas PL/SQL. Para usar esas unidades de programas en otros formularios, se relaciona la biblioteca con el formulario y se hace referencia a los procedimientos y funciones como si fuera parte del formulario en sí. Si se hacen cambios en la biblioteca, debe regenerarse cada formulario que use la biblioteca para reflejar el cambio.

Por otra parte, los atributos visuales son definidos como parte del formulario en sí. Un atributo visual define las características de la fuente y los colores del objeto. Existe un atributo visual especial llamado Default (por defecto) para todos los formularios basados en el valor del parámetro FORMS45_DEFAULTFONT del archivo oracle.ini del sistema. Se pueden diseñar atributos visuales para definir el significado del elemento. Por ejemplo, una aplicación financiera puede mostrar valores negativos en rojo o se pueden usar características especiales para indicar errores o extremos estadísticos. Otro uso valioso de un atributo visual es indicar el registro seleccionado en la actualidad. El atributo de registro actual está disponible tanto en el nivel del bloque como en el del formulario y es usado con frecuencia en aplicaciones de varias filas. Finalmente, se puede cambiar el atributo visual para una instancia de un elemento en forma dinámica en el tiempo de ejecución usando el procedimiento incorporado DISPLAY_ITEM.

La última característica que proporciona reutilización dentro de un formulario es una clase de propiedad. Una clase de propiedad toma la funcionalidad presentada por el atributo visual y la expande más definiendo todas las propiedades de una clase de objetos. Esto permite definir un conjunto de clases de propiedades válidas y usar estas propiedades a través de las aplicaciones sin definir cada propiedad individual para cada objeto.

Consideraciones de calidad para Oracle Forms

Oracle Forms puede manejar una amplia serie de funciones de procesamiento. Como en el caso de una herramienta poderosa, hay muchas formas de realizar la misma tarea. Es responsabilidad del desarrollador crear aplicaciones que devuelvan la calidad más alta para el coste global más reducido. La calidad de un sistema Oracle puede ser clasificada de acuerdo con varios atributos clave:

Fiabilidad: el sistema debe entregar resultados fiables y seguros.

Rendimiento: el sistema debe entregar los resultados rápidamente.

Características: el sistema debe entregar la funcionalidad necesaria.

Durabilidad: el sistema debe sostener el crecimiento.

Capacidad de servicio: el sistema debe poder ser modificado fácilmente.

Capacidad de cumplir con las normas: el sistema debe adherirse a los estándares.

Estética: el sistema debe tener buen aspecto al realizar las tareas anteriores.

Oracle Forms proporciona muchas herramientas para garantizar la calidad de una aplicación Oracle. Los disparadores proporcionan las construcciones necesarias para garantizar la fiabilidad de un formulario al adherirse a las reglas según son establecidas. Acoplando estos conceptos con los disparadores y procedimientos de la base de datos, el proceso de desarrollo del sistema puede hacer cumplir la conformidad con todas las reglas. Además, las bibliotecas de las unidades de programas y los impresos de referencia son clases de objetos y con atributos visuales definidos pueden ayudar a entregar un sistema fiable que cumpla con el formato de presentación estándar que esté establecido para la organización. Estos componentes hacen también que un sistema sea más fácil de modificar para reflejar las modificaciones de las reglas o interfaces deseadas recientemente.

Tales modificaciones son inevitables en prácticamente todas las aplicaciones de bases de datos Oracle y, si se usan principios orientados a objetos desde el primer momento, las modificaciones son más fáciles de realizar en el futuro.

El concepto final que es clave en el desarrollo de las aplicaciones de bases de datos Oracle es el rendimiento. Desafortunadamente, en muchos casos, el rendimiento es una ocurrencia tardía en el desarrollo de las aplicaciones. Muchos sistemas terminan finalmente en producción sin que se les haya realizado ninguna puesta a punto del rendimiento. Como mucho, la mayor parte de las aplicaciones reciben sólo esfuerzos mínimos de puesta a punto. Esto no es completamente culpa del desarrollador, aunque éste debe estar más preocupado por el rendimiento del sistema. Después de todo, siempre que un sistema se comporte pobremente, el dedo acusador apunta siempre al desarrollador.

Además de asegurarnos de que todas las instrucciones SQL son eficientes, hay otras varias “reglas” que se pueden seguir cuando se construye un formulario, especialmente en un entorno cliente/servidor. Entre ellas se encuentran las siguientes:

Reducir al mínimo el número de consultas. Si se llama a un disparador POST-QUERY para cada fila, devuelta por la consulta inicial, crear una vista que contenga toda la información en la primera consulta.

Combinar consultas no relacionadas si es posible. Varias consultas que devuelven todas una fila usando un índice único pueden ser combinadas en una única consulta. Esto ahorra viajes de ida y vuelta sobre la red.

Usar disparadores y procedimientos de bases de datos siempre que sea posible. Estas construcciones garantizan que todo el mantenimiento de la base de datos utiliza las mismas reglas. Además, se reducen al mínimo las comunicaciones con la base de datos.

Finalmente, antes de pasarla a producción, debe someterse la aplicación a una prueba de resistencia con un gran volumen de datos con muchos usuarios. Estas pruebas agitan los cuellos de botella e indican dónde puede ser necesario revisar las estrategias de bloque.