Creando y Usando Informes Interactivos en Oracle Application Express 5.0

Por Clarisa Maman Orfali Oracle ACE
Publicado en Enero 2016

Una de las grandes características que presenta Oracle APEX y que lo hace una herramienta muy completa a la hora de desarrollar aplicaciones web basadas en la base de datos Oracle, es la gran facilidad con que Apex nos permite, por su entorno declarativo, desarrollar Informes modernos y de diferentes alcances para la presentación de la información almacenada logrando con mínimo esfuerzo aplicaciones web muy robustas.

El objetivo de este artículo es mostrar al lector algunas de las diferentes funcionalidades que dispone en la creación de Informes Interactivos usando Oracle Application Express.

Informes Clásicos Vs Informes Interactivos


Al crear una aplicación de base de datos, se puede incluir dos tipos de informes: Informes Interactivos o Informes Clásicos. La principal diferencia entre ambos es que el interactivo permite al usuario personalizar la apariencia de los datos a través de la búsqueda, filtrado, ordenamiento, selección de columnas, resaltado de columnas y otras formas de tratamiento de datos en tiempo de ejecución, mientras que en el Informe Clásico no disponemos de esas funcionalidades.

Informe Clásico

Los informes clásicos tienen la funcionalidad de búsqueda de palabras claves en general, además de la posibilidad de especificar el número de filas que se muestran y la columna de ordenamiento básica.
Cuando se utiliza un informe clásico podemos ver 100 columnas empleando las columnas del informe y podemos editar columnas adicionales utilizando la vista de árbol o a través de la paginación del informe en Atributos de Columna.

Informe Interactivo

Los informes interactivos permiten a los usuarios finales crear informes altamente personalizados, por eso es que se trabaja en tiempo de ejecución para crear dichas personalizaciones. Podemos modificar el diseño del informe al ocultar o mostrar columnas específicas, resaltar y ordenar las mismas o aplicar filtros. También podemos definir puntos de control, agrupaciones, gráficos y añadir nuestros propios cálculos. Una vez personalizado, el informe se puede guardar como un informe primario, alternativo, privado o público.
Cada informe interactivo incluye una barra de búsqueda, un menú Acciones, un menú de Encabezado de columna y una serie de iconos para editar en la primera columna de cada fila.
Cuando se utiliza un informe interactivo se puede:

  • Incluir múltiples informes interactivos por página. (nueva característica)
  • Mostrar 100 columnas usando columnas del informe. Podemos editar las columnas adicionales utilizando la vista de árbol o la paginación a través de los atributos del informe de columnas.
  • Mostrar un millón de filas usando el filtro de encabezado de columna (si no hay un elemento LOV especificado en los atributos de columna).
  • Incluir 999 filas usando el filtro de encabezado de columna (si no hay un elemento LOV especificado en los atributos de columna). 

Crear Aplicación Web de tipo Escritorio


Para este ejemplo vamos a crear una aplicación de Base de Datos en Apex, haciendo lo siguiente:

  1. Hacemos clic en el icono Creador de Aplicaciones.
  2. Se abre la página del Creador de Aplicaciones y hacemos clic en el icono Crear
  3. Se inicia el asistente de creación de la aplicación:
    1. En la pantalla ¿Qué tipo de Aplicación desea Crear? hacemos clic en el icono Escritorio y hacemos clic en el botón azul Siguiente.
    2. En la pantalla Nombre, ingresamos el nombre de la aplicación, para el resto de los valores lo dejamos por defecto.
      • Nombre: Informes Interactivos Personalizados
      • Hacemos clic en el botón azul Siguiente.
    1. En la pantalla Páginas, eliminamos la página de Inicio haciendo clic en el botón de la cruz (+) y creamos una página de tipo Informe:
      • Origen de la Tabla: Tabla
      • Nombre de la Tabla: DEMO_PRODUCT_INFO (tabla de la aplicación demo)
      • Tipo de Informe: Interactiva
      • Hacemos clic en el botón azul Agregar Página
      • Luego, hacemos clic en el botón azul Siguiente
    1. En la pantalla Componentes Compartidos, aceptamos el valor por defecto y hacemos clic en el botón azul Siguiente.
    2. En la pantalla Atributos, asignamos:
      • Idioma de preferencia: Español (Estados Unidos) (es-us) [Indicar el idioma que corresponda]
      • Preferencia de Idioma de Usuario Derivada de: Idioma Primario de la Aplicación
      • Hacemos clic en el botón azul Siguiente.
    1. En la pantalla Confirmar, verificamos los datos ingresados y hacemos clic en el botón azul Crear Aplicación. 

Ejecutamos la aplicación y la página de inicio mostrará nuestro Informe Interactivo recién creado.

 

Personalizar Informe Interactivo


Desde el Diseñador de Página 1, en la ficha de Presentación:

  1. Hacemos clic con el botón derecho del ratón sobre la región de tipo Informe Interactivo

  2. En el panel derecho de propiedades de la Región, en la sección Identificación:
    • Título: Informe de Productos
    • Tipo: Informe Interactivo

  3. En la sección Origen:
  4. Consulta SQL

    select p.product_id,
    p.product_name, 
    p.product_description, 
    p.category, 
    decode(p.product_avail, 'Y','Yes','N','No') product_avail,
    p.list_price,
    (select sum(quantity) from demo_order_items where product_id = p.product_id) units,
    (select sum(quantity * p.list_price) from demo_order_items where product_id = p.product_id) sales,       
    (select count(o.customer_id) from demo_orders o, demo_order_items t 
    where o.order_id = t.order_id and t.product_id = p.product_id group by p.product_id) customers,
    dbms_lob.getlength("PRODUCT_IMAGE") "Product_Image"
    from demo_product_info p
    
    

    Sobre la Función dbms_lob.getlength()

    La función dbms_lob.getlength() se emplea para estimar el tamaño de la columna BLOB en la tabla, cuya selección se hace para facilitar la inclusión del enlace de descarga en el reporte. Si el length es 0, el BLOB es NULL y el enlace de descarga no se mostrará. Nosotros en este caso no lo vamos a usar.

    Sobre la Función DECODE

    DECODE (expression, search, result [, search, result]…[,default])
    
    

    De una expresión dada, la función busca el valor y lo traduce a un resultado. Podemos tomar como ejemplo la siguiente consulta SQL:

    SELECT DECODE (categoria_id,     1, 'Accesorios',
      2, 'Mujer',
      3, 'Hombre',
      4, 'Niños',
      5, 'Electrónicos',
      '-') result
    FROM demo_categorias
    
    

    Para mayor comprensión de la forma en que es empleada la función DECODE podemos decir que esta función puede ser escrita usando un conjunto de IF - THEN – ELSE. Aunque cabe aclarar que, dentro de una consulta SQL, no podemos utilizar las estructuras de control como el IF-THEN-ELSE. Por ello, la función DECODE es muy usada en las consultas SQL y permite traducir una expresión a un valor de retorno.

    IF categoria_id = 1 THEN
    result := 'Accesorios';
    ELSEIF categoria _id = 2 THEN
    result := 'Mujer';
    ELSEIF categoria _id = 3 THEN
    result := Hombre';
    ELSEIF categoria _id = 4 THEN
    result := 'Niños';
    ELSEIF categoria _id = 5 THEN
    result := 'Electrónicos';
    ELSE
    result := '-';
    END IF;
    
    
  5. Hacemos clic en el botón “Guardar”.

 

Editar Informe Productos en Tiempo de Ejecución


  1. Hacemos clic en el botón “Ejecutar” de la Página 1.
  2. Hacemos clic en el botón “Acciones” y luego seleccionamos la opción “Seleccionar Columnas”.

  3. Desde el recuadro Mostrar en Informe, movemos las columnas Product Id y Product Description al recuadro No Mostrar (de esta forma podemos ocultar/mostrar las columnas en el reporte interactivo).
  4. Usando las flechas podemos ordenar las columnas como por ejemplo subiendo la columna Product Image arriba de la lista.
  5. Hacemos clic en el botón “Aplicar”.

Si deseamos editar los nombres de columnas del Informe Interactivo para que se ajusten a nuestro idioma lo podemos hacer accediendo al Diseñador de Páginas y desde el panel de la izquierda de Presentación seleccionamos la región de tipo Informe Interactivo y expandimos las columnas para modificar los nombres de las columnas visibles, colocando su nombre en el atributo Cabecera en la sección de Cabecera del panel de la derecha en propiedades de la columna, por ejemplo: Nombre, Categoría, Producto Disponible, Lista de Precios, Unidades, Ventas, Clientes y Producto y guardamos los cambios haciendo clic en el botón Guardar en la parte superior derecha de la página.

Mostrar Imagen de Producto en el Informe Interactivo


Desde el Panel de la izquierda en el Diseñador de Páginas, estando en la vista árbol de Presentación, hacemos clic sobre la columna PRODUCT_IMAGE y pasamos al panel de la derecha en propiedades de la columna en la sección Identificación, en el atributo Tipo seleccionamos Mostrar Imagen.

En la sección Atributos BLOB seleccionamos:

  • Nombre de Tabla: DEMO_PRODUCT_INFO
  • Columna BLOB: PRODUCT_IMAGE
  • Columna de Clave Primaria: PRODUCT_ID

Eliminar Columna de Enlace


Seleccionamos atributos del Informe en el panel de la izquierda y en propiedades de los atributos en el panel de la derecha en Columna de Enlace seleccionamos Excluir Columna de Enlace, del Informe Interactivo, posteriormente hacemos clic en el botón Guardar.

Guardar Informe como Informe Primario


Para guardar el informe como un informe primario, debemos ejecutar la aplicación para mostrar el informe en tiempo de ejecución y hacemos clic en el botón “Acciones”, luego en Guardar Informe > Como Valores de Informe por Defecto:

  • Seleccionar Primario
  • Hacemos clic en el botón “Aplicar”.

Cada vez que necesitemos realizar un cambio en el informe interactivo y queramos mantener dicho cambio tenemos que guardar el informe como un informe primario por defecto. Si no realizamos esta operación, para la próxima vez que iniciemos sesión se perderán todos los cambios.

Crear Reporte Alternativo


Los reportes alternativos nos permiten a los desarrolladores crear diferentes tipos de reportes y solo el desarrollador puede guardar, renombrar o eliminar estos informes.
En esta sección crearemos un informe alternativo llamado “Productos por Categorías” que tendrá tres tipos de visualizaciones utilizando diferentes herramientas para personalizar el Informe basado en el Informe Primario de Productos.

Vista Informe


Desde la página 1, en estado de ejecución:

  1. Hacemos clic en el botón “Acciones” y luego en Guardar Informe > Como Valores de Informe por Defecto.
    • Seleccionar Alternativo
    • Nombre: Productos por Categorías
    • Hacemos clic en el botón “Aplicar”.

  2. Hacemos clic en el botón “Acciones”, luego en “Formato” y seleccionamos División de Control:
    • Columna: Categoría
    • Estado: Activado
    • Hacemos clic en el botón “Aplicar”.

    La División de Control es una característica de agrupación que permite ser añadido a una o más columnas del informe. Como en este caso hemos creado una división de control en la columna de Categorías, en el informe se mostrará la agrupación de los productos divididos por categorías.


  3. Hacemos clic en el botón Acciones, luego en Formato y seleccionamos Resaltar
    • Nombre: Ventas <= $ 1000
    • Secuencia: 10
    • Activado: Sí
    • Tipo de Resaltado: Fila
    • Color de Fondo: #FFFF99 [amarillo]
    • Color de Texto: #000000 [negro]
    • Condición para Resaltar
      • Columna: Ventas
      • Operador: <=
      • Expresión: 1000
    • Hacemos clic en el botón “Aplicar”.

  4. Hacemos clic en el botón “Acciones”, luego en “Formato” y seleccionamos Resaltar:
    • Nombre: Ventas >= $ 3000
    • Secuencia: 20
    • Activado: Sí
    • Tipo de Resaltado: Fila
    • Color de Fondo: #99FF99 [verde]
    • Color de Texto: #000000 [negro]
    • Condición para Resaltar
      • Columna: Ventas
      • Operador: >=
      • Expresión: 3000
    • Hacemos clic en el botón “Aplicar”.

  5. Hacemos clic en el botón “Acciones”, luego en “Formato” y seleccionamos Resaltar:
    • Nombre: Ventas entre $ 1000 y $ 3000
    • Secuencia: 30
    • Activado: Sí
    • Tipo de Resaltado: Fila
    • Color de Fondo: #99CCFF [azul]
    • Color de Texto: #000000 [negro]
    • Condición para Resaltar
      • Columna: Ventas
      • Operador: entre
      • Expresión: 1000
      • Y 3000
    • Hacemos clic en el botón “Aplicar”.

  6. Hacemos clic en el botón “Acciones”, luego en “Formato” y seleccionamos Ordenar:
    • Columna: Ventas
    • Dirección: Descendente
    • Hacemos clic en el botón “Aplicar”.

El resultado del Informe Alternativo Productos por Categorías en la Vista Informe se muestra a continuación:

 

Vista Gráfico


Nosotros podemos generar gráficos en nuestros informes interactivos que estén basados en el resultado del informe.

En esta sección aprenderemos a crear un gráfico de barras que muestre los totales de las ventas por producto.

Desde la Página 1 en estado de ejecución:

  • Hacemos clic en el botón “Acciones”, luego en “Formato” y seleccionamos Gráfico:
    • Tipo de Gráfico: Columna Vertical
    • Etiqueta: Nombre
    • Título del Eje para Etiqueta: Productos
    • Valor: Ventas
    • Título del Eje para Valor: Ventas
    • Función: Suma de
    • Ordenar: Valor - Ascendente
    • Hacemos clic en el botón “Aplicar”.

Se ha creado el icono de la vista de Gráfico.

El resultado del Informe Alternativo Productos por Categorías en la Vista Gráfico se muestra a continuación:

Recordemos que para mantener los cambios realizados debemos guardar el informe desde Acciones > Guardar Informe.

Vista Ver Grupo por


Esta vista permite a los usuarios agrupar la información por una o más columnas. Una vez definida la o las columnas de agrupación aparecerá el icono “Ver Grupo por” en la barra de búsqueda del Informe Interactivo Alternativo.

Regresamos a la Vista Reporte del Informe Alternativo, haciendo clic en el icono “Ver Informe” que está al costado izquierdo del ícono “Ver Gráfico”

  1. Hacemos clic en el botón “Acciones”, seguidamente en “Formato” y seleccionamos la opción “Agrupar por”.
  2. En la grilla Agrupar por:
    • Agrupar Grupo por Columna: 1. Categoría

    • Fila 1
      • Funciones: Suma de
      • Columna: Ventas
      • Etiqueta: Ventas
      • Mascara de Formato: FML999G999G999G999G990D00

    • Fila 2
      • Funciones: Suma de
      • Columna: Unidades
      • Etiqueta: Cantidad de Productos
      • Mascara de Formato: 999G999G999G999G999G999G990

    • Hacemos clic en el botón “Aplicar”.

Se ha creado el icono de la vista Ver Grupo por

El resultado del Informe Alternativo Productos por Categoría en la vista Ver Grupo Por se muestra a continuación:

 

Crear Columna Calculada en el Informe


En las funcionalidades de los informes interactivos también disponemos de la creación de columnas por medio de cálculos a partir de otras columnas.

Veamos un ejemplo a continuación:

Seleccionamos el Informe Primario desde la lista de selección:

 

Vamos a crear una columna que muestre el total de ventas adicionado los impuestos de ventas.

  1. Hacemos clic en el botón Acciones, luego en Formato y seleccionamos Calcular
  2. Cabecera de Columna: Ventas con Impuestos
  3. Máscara de Formato: seleccionamos la moneda
  4. Expresión de Cálculo: AR + (7 * (AR/100)) Nota: AR representa la columna Ventas
  5. Hacemos clic en el botón Aplicar.

Podemos ver el resultado de la creación de la columna de cálculo en el Informe Primario.

Finalmente si queremos mantener los cambios realizados necesitamos volver a guardar el Informe como el Informe Primario.

Conclusión


Como podemos ver la personalización de los Informes Interactivos en Oracle Apex es muy sencillo e intuitivo y cualquier usuario sin conocimientos en programación puede crear informes altamente sofisticados para satisfacer y garantizar la toma de decisiones en el día a día mostrando la información almacenada en nuestra base de datos Oracle.

Hemos aprendido en este artículo:

  • Como crear y guardar Informes Interactivos
  • Cómo crear y guardar Informes Alternativos
  • Crear las diferentes vistas de los Informes Interactivos: Vista Informe, Vista Gráfico y la Vista Agrupar por
  • Personalizar los Informes Interactivos usando columnas resaltadas, columnas calculadas, filtros, formatos, etc.

 


Clarisa es fundadora y CEO de ClarTech Solutions Inc. Se ha convertido en Oracle ACE hace algunos años, tiene más de 15 años de experiencia en el desarrollo y la capacitación en tecnologías de la información. Hace unos años descubrió la belleza de Oracle Application Express (APEX) y se ha especializado en esa área. Ella también es una Co-Fundadora y Directora del Argentina Oracle User Group (AROUG) y ha participado activamente en la organización de grandes y populares eventos. Además ella es autora del primer libro en español sobre Oracle APEX titulado “Introducción a Oracle APEX 5”. Ella tiene una gran pasión por las tecnologías de Oracle y quiere ampliar esa pasión e influencia transfiriendo su conocimiento y experiencia a la totalidad de las comunidades de Oracle América Latina y en todo el mundo.

Este artículo ha sido revisado por el equipo de productos Oracle y se encuentra en cumplimiento de las normas y prácticas para el uso de los productos Oracle.