Archive for December, 2008

Exportando reportes Apex a Excel

Saturday, December 20th, 2008

Son varias las solicitudes que me han hecho para que explique cómo exportar un reporte desde Apex a Microsoft Excel, por esto, en este artículo voy a definir un paso a paso de cómo lograr esto, con el uso de un paquete desarrollado por mi amigo Denes Kubicek para tal propósito.

Existen dos versiones de este paquete, una para realizar la exportación desde Apex y otra para hacerlo desde Oracle XE, al final de este artículo podrán encontrar los enlaces para descargar ambos paquetes, los cuales muy gentilmente han sido puestos a disposición de todos por mi amigo Denes.

Antes de entrar en materia , debo mencionar que Apex tiene definidos procedimientos estándar para realizar la exportación de reportes a formatos variados como Excel, Word y PDF, sin embargo, para poder utilizar esas funcionalidades, se hace necesario contar con el componente BI Publisher de Oracle, el cual requiere de una licencia válida, la que a su vez tiene un costo elevado y no todos podrán contar con ella, por lo que esta alternativa que les propongo, puede resultarles de mucha utilidad.

El procedimiento para instalar el paquete y poder exportar reportes a Excel es el siguiente:

  1. Descargue el paquete desde el enlace que se proporciona al final de este artículo.
  2. Descomprima el contenido del archivo.
  3. Instale el paquete en el esquema del usuario que desea utilizarlo:
    1. Ejecute una instancia de SQL: DRIVE: sqlplus usuario/clave@conexion
    2. @export_to_excel_pkg.sql
  4. Ingrese a la aplicación Apex
  5. Si no cuenta con una “Página 0” definida, créela.
  6. Ingrese a Componentes Comunes y luego a Procesos de Aplicación
  7. Haga clic en el botón “Crear >” y cree un proceso con las siguientes características:
    1. Nombre: DOWNLOAD_EXCEL
    2. Secuencia: 1
    3. Punto: En carga: Antes de cabecera (cabecera de plantilla de página)
    4. Crear procedimiento de aplicación

    5. Haga clic en el botón “Siguiente >”
    6. En el texto de proceso ingrese el siguiente segmento de código:
    7. BEGIN
      export_excel_pkg.print_report (:t_region_id, :t_excel_name, :t_page);
      END;

    8. En el Mensaje de error escriba el mensaje que desee que aparezca en caso de que se produzca un error
    9. Haga clic en el botón “Siguiente >”
    10. Haga clic en el botón “Crear Proceso”
  8. Cree los siguientes elementos de aplicación: T_EXCEL_NAME, T_PAGE y T_REGION_ID:
    1. Ingrese a Componentes compartidos y a Elementos de aplicación
    2. Para cada uno de los elementos haga clic en el botón “Crear >”
    3. Ingrese el nombre de cada elemento
    4. Haga clic en el botón “Crear”
  9. Ingrese al reporte que desea exportar y diríjase a la sección de Regiones
  10. En la región del reporte deseado, haga clic en el enlace Informe
  11. Allí, en la sección de Exportación de Informe, seleccione “Sí” en el campo “Activar Salida de CSV”
  12. En el campo “Etiqueta de enlace”, ingrese el siguiente código:
  13. <a href="f?p=&APP_ID.:0:&SESSION.:DOWNLOAD_EXCEL:NO::T_REGION_ID,
    T_EXCEL_NAME,T_PAGE:#REGION_ID#,my_report,&APP_PAGE_ID.">
    Exportar a Excel</a>
  14. Haga clic en la pestaña Atributos de Impresión y seleccione “Sí” en el campo “Activar Impresión de Informe”
  15. Haga clic en el botón “Aplicar Cambios”

Una vez realizado esto, en el pie de página de la región del reporte le aparecerá un enlace con la leyenda “Exportar a Excel”, el cual le permitirá exportar a Excel su reporte, sin embargo, hay algunas consideraciones a tomar en cuenta:

  1. Los puntos 1 al 8 del procedimiento anterior, se deben realizar una única vez para cada espacio de trabajo en que desee implementar esta funcionalidad, sin embargo, si los espacios de trabajo pertenecen a un mismo esquema (usuario de base de datos), la instalación del paquete (puntos 1 al 3) se realizan una sola vez.
  2. En el código del punto 12, el segmento que dice “my_report”, es el nombre con que se exportará el reporte a Excel, por tanto, lo puede cambiar a su antojo, para que este nombre refleje el contenido del reporte exportado.
  3. El segmento del punto 12 que dice “Exportar a Excel”, es el texto que se muestra para el enlace de exportación y también lo puede manejar a su antojo, puede poner el texto que desee, o aún incluir alguna imagen.
  4. No utilice el sufijo “#OWNER#” en el código del query del reporte, esto le producirá un error y no obtendrá el resultado deseado.
  5. El esquema (Usuario de base de datos) que ejecute este procedimiento, necesita derechos o permisos de ejecución sobre el paquete DBMS_SQL.
  6. El paquete NO FUNCIONARÁ para reportes del tipo “Función retornando SQL”.
  7. Si los reportes incluyen una cláusula “group by”, necesita modificar el paquete y utilizar la sintaxis v(‘ITEM’) en lugar de (select v(‘ITEM’) from dual)

Con esto es suficiente para que pueda exportar sus reportes a Excel, lo único que le resta por hacer es bajar el paquete, instalarlo y empezar a exportar sus reportes.

Suerte y espero tenerlos de regreso pronto con sus comentarios, preguntas y sugerencias. A continuación los enlaces de descarga de los paquetes para exportar a Excel.

Paquete exporta reportes desde Apex
Paquete exporta reportes desde Oracle XE

Listas de valores en cascada

Tuesday, December 9th, 2008

Una de las cosas que más causan curiosidad a la hora de realizar aplicaciones con Oracle Apex, es el poder definir listas de valores en cascada, donde el valor de la segunda lista o aún una tercera o cuarta listas, dependan del valor seleccionado en la primera lista.

En realidad, es una tarea que al final resulta sencilla de realizar, lo importante es conocer el concepto de como funcionan las páginas HTML y cómo se pueden implementar de manera sencilla.

Para este artículo me voy a centrar en la creación de una página sencilla con dos campos del tipo “Lista de Selección”, que van a estar definidos por dos listas de valores; una para los datos contenidos en la tabla “DEPT” del esquema “SCOTT”, y otra para los datos de la tabla “EMP”, pero que va a mostrar solo los datos de esta tabla que correspondan con el departamento seleccionado en la lista de departamentos.

Para realizar esto:

  1. Ingrese a su área de trabajo.
  2. Seleccione la aplicación en la que va a crear la página.
  3. Cree una nueva página en blanco, haciendo clic en el botón “Crear Página”.
  4. Cree una bifurcación incondicional direccionada al mismo número de página que acaba de crear.
  5. Ahora cree una región de tipo “HTML”.
  6. Cree un campo llamado Px_LOV_DEPTO del tipo “Lista de Selección con Ejecución”, donde ‘x’ corresponde al número de página creada.
  7. Incluya el siguiente código en la definición de lista de valores del campo:

select DNAME display_value, DEPTNO return_value
from DEPT
order by 1

  1. Cree un nuevo campo, ahora del tipo “Lista de Selección”, con el nombre Px_LOV_EMP y agréguele el código siguiente en la definición de lista de valores:

select ENAME display_value, EMPNO return_value
from EMP
where deptno = :Px_LOV_DEPTO
order by 1

  1. Ejecute la página, experimente y observe lo que sucede con los valores de la lista de empleados cada vez que es seleccionado un nuevo departamento.

Puede observar esta funcionalidad ejecutándose en mi área de trabajo de OTN en la siguiente dirección: apex.oracle.com/pls/otn/f?p=56897

Suerte y los espero de nuevo pronto con otro tip más.