domingo, 2 de abril de 2017

Las Listas de Valores (LOVs) y los Editores (Editors) en Forms

Objetivos:
 Describir los LOVs y los Editors de Oracle Forms.
 Crear, Diseñar y asociar los LOVs con Text Items en un módulo Forms.
 Crear Editors y asociarlos con Text Items en un módulo Forms

NOTA: Usamos como ejemplo la Base de Datos: ORCL, la cual viene por defecto en cualquier versión de ORACLE.
______________________________________________________________________________________
¿Qué son LOVs y los Editores?
Las listas de valores (LOV) y los Editores son objetos en un módulo Forms que tienen la particularidad de abrir una ventana en tiempo de ejecución cada vez que son invocados. Se definen en el nivel de Forms, lo que significa que puede utilizarlas para pasar datos a los Text Items en cualquier bloque de un módulo.
______________________________________________________________________________________
Los LOVs.
Un LOV es una ventana emergente desplazable que permite al usuario escoger el valor de de una lista multicolumna. El usuario puede reducir las líneas mostradas en la lista mediante simples técnicas de reducción automática o mediante cadenas de búsqueda.

Cada línea en un LOV puede presentar varios valores de campo, con encabezados de columna arriba. Puede diseñar su LOV para recuperar algunos o todos los valores de campo de la línea elegida por el usuario y colocarlos en elementos de formulario o variables.

Cualidades de los LOVs:
 Son Dinámicos: Si por alguna razón la fuente de datos cambia, las listas se pueden actualizar para reflejar dichos cambios.
 Son Independientes: Puede invocar un LOV desde cualquier Text Item o incluso desde fuera de un Text Item.
 Ofrecen Flexibilidad: Si es necesario, puede utilizar un mismo LOV para alimentar varios Items.
Eje: codigo_producto, nombre_producto.
 Son Eficientes: puede diseñar LOVs para reutilizar datos ya cargados en un Form, en lugar de acceder a la Base de Datos para cada llamada. Esto es útil cuando los datos son relativamente estáticos.

Los LOV en Tiempo de Ejecución.
Cuando un Tex Item tiene un LOV adjunto, el indicador Lista de valores aparece en la línea de estado mientras el cursor está en el Item.

Para ejecutar el LOV:
1. Coloque el Cursor en el Item asociado con el LOV.
2. Presione la tecla Lista de valores o seleccione Edit>Display List...
3. Seleccione un valor de la lista. Puede usar el campo Buscar (Find) para filtrar los registros.
4. Haga clic en Aceptar para recuperar el valor de la línea.
Nota: La reducción automática funciona comparando la cadena de búsqueda introducida con los valores mostrados en la primera columna del LOV. Si inicia los criterios de búsqueda con un símbolo%, Forms realiza una búsqueda en todas las columnas LOV.
______________________________________________________________________________________
Los Editores.
Con un editor de texto, el usuario puede ver varias líneas de un Text Item simultáneamente, puede buscar y reemplazar texto en el mencionado Item  y, en general, modificar el valor contenido en él de forma mas fácil.
Tipos de Editores:
 Editor predeterminado de Forms Builder.
 Editor definido por el usuario.
Cada Text Item tiene disponible un editor por defecto, pero puede diseñar su propio editor de reemplazo para aquellos Items que requieren elementos especiales como una ventana de edición mas grande, en cierta posición, con color y con título.

Al sobreescribir el editor predeterminado de un Text Item, puede proporcionar una ventana de edición más grande para Items que contengan valores con abundante texto.

Los Editores en Tiempo de Ejecución.
Para invocar el Editor, siga estos pasos:
1. Coloque el Cursor en el Campo que contiene el Editor.
2. Presione Edit>Edit.
3. Edite el texto en la ventana del Editor. Los editores de Forms Builder proporcionan un botón Buscar  (Find) que permite localizar y reemplazar texto con facilidad y rapidez.
4. Haga clic en Aceptar para aplicar los cambios en el Text Item en cuestión.
______________________________________________________________________________________
Los LOVs y los Record Group.
Al crear un LOV, considere los siguientes objetos:
 Record Group: es un objeto de Forms Builder que se utiliza para almacenar la matriz de valores representados por un LOV (el Record Group puede ser creado previamente o durante el proceso de creación del LOV si este último es basado en una Consulta/Query).
 LOV: Es la lista en sí, la cual contiene uno o más valores de columna del Record Group en la ventana LOV (permite al usuario seleccionar valores y, a continuación, volver a escribir valores en elementos o variables especificados).
• Text Item: Text Item principal adjunto al LOV, al cual son retornados los valores. Puede invocar dicho LOV desde el Item y así asignar valores a este último. Tengo en cuenta que un LOV es capaz de retornar valores a multiples Items. Puede adjuntar un mismo LOV a todos los Text Items que manejen datos similares.

Los Record Groups.
Un Record Group es una estructura de columna y fila almacenada en memoria en tiempo de ejecución la cual es similar a la estructura de una tabla de base de datos. Contiene registros que pueden ser reutilizados por otras aplicaciones Oracle Forms e Oracle Reports, reduciendo así el acceso repetido a datos externos.

Los Record Groups se pueden diseñar para contener valores estáticos. Como alternativa, se pueden rellenar mediante programación en tiempo de ejecución o, mediante una consulta SQL.

Los Record Groups pueden ser usados para.
Proporcionar Datos a los LOVs,
Proporcionar Datos a los List Items Dinámicos,
Otros usos específicos de la aplicación.

Nota: Debido a que LOVs y los Record Groups son objetos separados, puede crear varios LOVs basados en el mismo Record Group.

Creando un LOV manualmente.
Forms Builder proporciona un Asistente para crear LOVs el cual le permite a su vez crear sus Record Groups asociados, por esta razón es posible que nunca necesite crear un LOV manualmente. Sin embargo, saber cómo hacerlo le ayudará a comprender cómo establecer las propiedades del Record GroupLOV y del Item al cual está asociado.

Los pasos para crear un LOV manualmente son:
1. Cree el Record Group. Para ello deberá escribir la Consulta/Query en cual estará basado.
2. Cree el LOV y establezca su propiedad Record Group con el creado en el paso anterior.
3. En el LOV, establezca la propiedad Column Mapping. Debe especificar las columnas y sus encabezados y, a continuación, seleccionar el/los Items de retorno (Return Item) que desee rellenar con dicho LOV.
4. Asigne el LOV a cualquier Text Item del cual desea que el LOV esté disponible.
Nota: un LOV puede estar disponible o puede ser invocado desde cualquier Item, pero esto no implica que alimente dicho Item. Esto es 2 Items pueden tener en la propiedad List of Values un LOV que alimente a un tercer Item.

Usando el Asistente para crear un LOV.
Si no recuerda o no esta seguro de como crear un LOV mediante los pasos manuales, puede evitar cometer errores utilizando el Asistente para LOVs, el cual le guía a través del proceso.

Para crear un LOV con el asistente, realice los pasos siguientes:
1. Inicie el asistente. En la página de bienvenida, haga clic en Siguiente.
2. Cuando aparezca la página Fuente LOV, especifique el origen del LOV. Elija Existing Record Group o New Record Group based on a query. La opción predeterminada es la de crear uno nuevo basado en una consulta. Haga clic en Siguiente para seleccionar el valor predeterminado.
3. En la página Consulta SQL (SQL Query) especifique la consulta que se utilizara para el Record Group. Tenga en cuenta que no puede incluir una columna de un tipo de dato complejo. Utilice una de las tres opciones siguientes para construir la consulta:
--Haga clic en Build SQL Query para utilizar Query Builder.
--Haga clic en Import SQL Query para importar la consulta de un archivo.
--Escriba la sentencia SQL en el campo SQL Query Statement. Luego, haga clic en Check Syntax.
4. En la página Column Selection, seleccione las columnas que desea incluir en el LOV. Haga clic en Siguiente.
5. En la página Column Properties, especifique el título, el ancho y el Return Value para cada columna del LOV. Puede utilizar el botón Look up return item... para establecer la propiedad Return Value con el Item donde desea retornar el valor del LOV; también puede dejar dicha propiedad en blanco ya que es opcional. Luego haga clic en Siguiente.
6. En la página LOV Display, especifique el título, el ancho y la altura de la ventana LOV. Puede especificar la posición manualmente o puede dejar que Forms lo posicione automáticamente. Haga clic en Siguiente.
7. En la página Opciones Avanzadas, establezca las propiedades avanzadas adicionales. Especifique:
--El número de registros a traer de la base de datos por cada llamada.
--Si los registros LOV deben ser consultados cada vez que se invoca el LOV.
--Si se debe presentar al usuario un cuadro de diálogo para agregar criterios antes de que se muestre LOV.
8. En la página Assign to Item, seleccione el/los Items a los que quiere adjuntar su LOV. En tiempo de ejecución, el LOV estará disponible desde estos Items, de modo que los usuarios deben colocar el cursor en ellos para así invocar ese LOV. Haga clic en Siguiente.
9. Luego aparece la última página, el ella haga clic en Finalizar para completar el proceso de creación del LOV.

Nota: El Asistente de LOV es reentrante, por lo que puede utilizarlo para modificar el LOV después de su creación. En el Navegador de objetos, haga clic en el LOV que se va a modificar y elija Menú> Herramientas (Tools)> Asistente de LOV (LOV Wizard).
______________________________________________________________________________________
Estableciendo las Propiedades de los LOVs.
Después de crear un LOV, use la Paleta de Propiedades para definirlas. Algunas de estas propiedades son las siguientes:
 X and Y Position: Especifique coordenadas de pantalla para la ventana LOV en las unidades de coordenadas del Form.
 Width and Height: Defina el tamaño de la ventana LOV en las unidades de coordenadas actuales; Puede ser ajustado por el operador Form.
 Column Mapping: Haga clic en el botón "More ..." para abrir la ventana LOV Column Mapping.
 Filter Before Display: Determina si el usuario debe recibir un cuadro de diálogo que le permite ingresar un valor de búsqueda antes de invocar el LOV; Ese Valor se utilizará como restricción adicional en la primera columna de la consulta.
 Automatic Display: Especifica si el LOV debe invocarse automáticamente cuando el usuario accede a un Item al cual el LOV está asociado.
 Automatic Select: Especifica si LOV debe cerrar y devolver valores automáticamente cuando se reduce a un solo registro.
 Automatic Skip: determina si el cursor salta al siguiente Item navegable cuando se selecciona un valor de LOV para ser retornado a un Text Item.
 Automatic Refresh: Si esta propiedad contiene Si (Yes), el Record Group re-ejecuta la consulta cada vez que se invoca LOV; Si no, la consulta se activa sólo la primera vez que el LOV se invoca en la sesión.
 Automatic Position: Determina si Form debe posicionar automáticamente el LOV cerca del Item desde el cual se invocó.
 Automatic Column Width: determina si Form define automáticamente el ancho de cada columna para que se muestre el título completo; esto si el título es más largo que el ancho de visualización de columna.

Nota: Más de un LOV puede basarse en un mismo Record Group. Cuando este es el caso y establece la propiedad Automatic Refresh en No, Forms Builder no volverá a ejecutar la consulta  una vez que se invoque cualquiera de los LOVs asociados.

Las Propiedades Column Mapping.
Al hacer clic en More... en la propiedad Column Mapping Properties, se abre el cuadro de diálogo LOV Column Mapping con los elementos siguientes:
 Column Names: le permite seleccionar una columna LOV para asignar.
 Return Item: Especifica el nombre del Item o variable al cual se debe asignar el valor de la columna. Si es nulo, el valor de la columna no se retorna desde el LOV. Si desea devolver un valor, especifique uno de los siguientes:
---Block_name.Item_name.
---GLOBAL.variable_name.
---PARAMETER.parameter_name.
 Display Width: Ancho de la columna mostrada en el LOV; Si el valor es 0, la columna se oculta, pero el valor está de todos modos disponible para retorno.
 Column Title: Título de columna en la ventana de LOV.

Para establecer las propiedades de una columna en este cuadro de diálogo, seleccione primero la columna de la lista Column Names y, a continuación, establezca los otros valores, según sea necesario.

Nota: Las columnas del Record Group y las columnas del LOV deben mantenerse compatibles.
Puede modificar la consulta del Record Group desde su propia lista de propiedades.

Asociar un LOV con un Text Item.
Para que el usuario pueda invocar un LOV desde un Text Item, debe especificar el nombre del LOV en la propiedad List of Values (Grupo LOV) de dicho Item.
1. Seleccione el Text Item desde el cual el LOV debe estar accesible.
2. En la Paleta de Propiedades, localice la propiedad List of Values y establezcala con el nombre del LOV.
Recuerde que el indicador Lista de Valores se muestra cuando el usuario navega a este Text Item, indicando que el LOV está disponible mediante la tecla Lista de valores o el comando de menú.
______________________________________________________________________________________
Definiendo un Editor.
Si el usuario necesita utilizar un editor de texto, el editor predeterminado de Forms Builder suele ser suficiente para la mayoría de los Items. Sin embargo, puede diseñar su propio editor personalizado como un objeto en un módulo Form y, a continuación, adjuntarlo a los Text Item que lo necesitan.

Creando un editor personalizado:
1. Seleccione el nodo Editor en el Navegador de Objetos y, a continuación, haga clic en Crear. Un nuevo objeto de editor se muestra en la lista.
2. Seleccione el nuevo editor y, a continuación, acceda a su Paleta de propiedades, donde puede establecer su nombre y otras propiedades.
Configurando las Propiedades del Editor.
Las propiedades siguientes le permiten personalizar su propio Editor:
 Title/Bottom Title: Titulo mostrado en la parte superior/inferior de la ventana del editor.
 Width/Height: Tamaño de la ventana del editor (área de edición).
 X/Y Position: Posición de la pantalla en el cual se visualizara el editor; Puede ser anulada por una propiedad del Text Item.
 Wrap Style: cómo se ajusta el texto en la ventana: None, Character, o Word.
 Show Vertical Scrollbar: especifique Sí para agregar la barra de desplazamiento vertical a la ventana del editor.

Asociar un Editor con un Text Item.
Para asociar un editor a un Text Item, debe especificar el editor en la paleta de propiedades del mismo.
Seleccione el Text Item desde el que debe estar accesible el editor.
Establezca la propiedad Editor en una de las siguientes opciones:
 Null: El Text Item utiliza el editor de Forms Builder predeterminado.
 Nombre del Editor: El Text Item utiliza el editor que ha creado y personalizado en este módulo.

______________________________________________________________________________________
Ajunto el Módulo Form creado para esta práctica: Link.
______________________________________________________________________________________
Fuente: Oracle Forms Developer 10g: Build Internet Applications.