Prácticas probadas de IBM Cognos: Selección dinámica de una lista dentro de IBM Cognos 8 Report Studio

Naturaleza del documento: Consejo o técnica; Producto(s): IBM Cognos 8 BI; Área de interés: Generación de informes

Una técnica que aplica la selección dinámica de columnas en una lista utilizando elementos de caja de herramientas personalizados de IBM Cognos 8 Report Studio.

François DeGuire, Software Developer, IBM

François DeGuire trabaja para IBM Cognos en el equipo de integración de productos en el IBM Canada Lab en Ottawa. Ha participado en el diseño y la implementación de herramientas para satisfacer necesidades de integración específicas de clientes. En su tiempo libre, le gusta mirar jockey sobre hielo.



19-11-2010

Introducción

Propósito

Este documento describe una técnica que aplica la selección dinámica de columnas en una lista utilizando elementos de caja de herramientas personalizados de IBM Cognos 8 Report Studio.

Aplicabilidad

La técnica descrita en este documento se validó con:

  • IBM Cognos 8.4.102-18-0 usando el paquete Go Sales (consulta) enviado con las muestras.

Los pasos descritos en este documento sólo se aplican cuando se desea ordenar una lista individual dentro de un informe IBM Cognos 8 Report Studio con un tipo de salida HTML utilizando una ubicación de ejecución en inglés.

Capacidades no documentadas y no soportadas que se utilizaron

Esta técnica requiere el uso de capacidades no documentadas y no soportadas en IBM Cognos 8. Puede haber un riesgo relacionado con esta técnica en que el soporte de estas capacidades puede cambiar o se puede abandonar completamente en alguna versión futura.


Aplicar orden dinámico a un informe de lista

Actualizar los archivos de cuadro de herramientas

Antes de iniciar IBM Cognos 8 Report Studio, se deben actualizar algunos archivos de instalación de IBM Cognos 8 con los archivos adjuntos que contienen los nuevos elementos de cuadro de herramientas que se pueden arrastrar al lienzo para agregarse a la lógica de orden. Los elementos de cuadro de herramientas personalizados permiten al autor del informe agregar rápidamente todos los componentes necesarios al informe, en lugar de tener que hacer todo manualmente.

  1. Ubique el directorio <install_dir>/webcontent/pat/res, donde <install_dir> es el directorio raíz de su instancia IBM Cognos 8.
  2. Haga una copia de respaldo de los siguientes archivos:
    • reportstudio_en.xml
    • Toolbox.xml
    • ToolboxControls.xml
  3. Reemplace los archivos mencionados anteriormente (no las copias de respaldo) con los archivos que llevan el mismo nombre y que se adjuntan a esta técnica.

Aplicar orden a un informe de lista

En este ejemplo, crearemos un Nuevo informe desde los datos de muestra de GO Sales (consulta). Si tiene un informe existente, también puede aplicarle el orden siguiendo los pasos 3 en adelante.

  1. Abra una nueva instancia de Report Studio, y cuando se le solicite, cree un nuevo Informe de Lista.
  2. Arrastre y suelte los elementos de datos que quiere mostrar en el objeto lista que ya aparece en el lienzo. Para este ejemplo se utilizó la totalidad de Sales (query)/Retailer Query Subject [Ventas (consultas)/Tema de consulta de minorista].
    Figura 1. Captura de pantalla de IBM Cognos 8 Report Studio con Retailer Query Subject arrastrado a un Informe de Lista.
    Captura de pantalla de IBM Cognos 8 Report Studio con Retailer Query Subject arrastrado a un Informe de Lista.
  3. El siguiente paso es agregar la lógica de orden a cada columna. Para hacerlo, primero debemos desbloquear los objetos de página. Para desbloquear los objetos de página, vaya al menú Structure (Estructura), y haga clic en el elemento del menú Lock Page Objects (Bloquear elementos de página) para que no esté seleccionado.
    Figura 2. Imagen del menú Structure con Lock Page Objects no seleccionado.
    Imagen del menú Structure con Lock Page Objects no seleccionado.
    Alternativamente, puede hacer clic en el ícono de candado en la barra de herramientas para desbloquearlos (el ícono candado cambiará al ícono desbloqueado).
  4. Cuando se hayan desbloqueado los objetos de página, vaya al recuadro del lado izquierdo, y haga clic en la pestaña toolbox (cuadro de herramientas).
  5. En el panel Insertable Objects (Objetos insertables), baje hasta el final. Debería ver los objetos de cuadro de herramientas Column Sorting Function (Función de orden de columna) y Sortable Column Title (Título de columna ordenable) como se muestra a continuación.
    Figura 3. Imagen de cuadro de herramientas de IBM Cognos 8 Report Studio que muestra Column Sorting Function y Sortable Column Title como nuevos objetos del cuadro de herramientas.
    Imagen de cuadro de herramientas de IBM Cognos 8 Report Studio que muestra Column Sorting Function y Sortable Column Title como nuevos objetos del cuadro de herramientas.
  6. Arrastre y suelte "Sortable Column Title" a la celda de título de una columna que desea que tenga capacidades de ordenar. Su lienzo debe representar la siguiente imagen.
    Figura 4. Imagen de una columna de lista con el título de columna original resaltado como Elemento 2 y el nuevo título de columna resaltado como Elemento 1.
    Imagen de una columna de lista con el título de columna original resaltado como Elemento 2 y el nuevo título de columna resaltado como Elemento 1.
  7. Edite el texto para que contenga el encabezado de columna deseado, y elimine el contenido original de la celda. Cuando termine, la pantalla debe representar la siguiente captura de pantalla.
    Figura 5. Imagen de la columna de lista con un título de columna ordenable especificado y el título de la columna original eliminado.
    Imagen de la columna de lista con un título de columna ordenable especificado y el título de la columna original eliminado.
  8. Repita los pasos 5 a 7 para cada columna para cual quiera tener capacidades de orden.
  9. En este punto debemos volver a bloquear los objetos de página. Para hacerlo, vaya al menú Structure, y haga clic en el elemento de menú Lock Page Objects (Bloquear objetos de página) para que esté seleccionado. De otra manera, puede hacer clic en la barra de herramientas para bloquearlos (el ícono cambiará a bloqueado).
  10. Estos nuevos encabezados de columna requieren el establecimiento de ciertas variables de presentación para mostrarse correctamente en el informe. Para fijar esas variables, pase el cursor del mouse sobre la pestaña Condition Explorer (con el ícono Conditional Explorer, entre el panel Insertable Objects y el lienzo), y cuando se abra, haga clic en la carpeta Variables.
    El lienzo será reemplazado por la vista de variables que se ejemplifica a continuación.
    Figura 6. Vista Conditional Explorer de IBM Cognos 8 Report Studio
    Vista Conditional Explorer de IBM Cognos 8 Report Studio
  11. Desde el panel Insertable Objects En el lado izquierdo, arrastre y suelte las tres variables de “Column Sort” (Ordenar columna) (“Column Sort – Sorting Controls Rendering”, “Column Sort – Sorting Column Rendering” y “Column Sort – PDF Image Rendering” [“Ordenar columna – Ordenar representación de controles”, “Ordenar columna – Ordenar representación de columna” y “Ordenar columna – Representación imagen PDF”).
  12. Regrese al lienzo pasando el mouse sobre la pestaña Page Explorer (en el mismo lugar que Condition Explorer), y cuando se abra, haga clic en la página donde está su lista. Para este ejemplo la página será la Página1.
  13. Luego agregaremos las columnas de orden. Si no lo ha hecho aún, debe volver a bloquear los objetos de página (ver el paso 9). A continuación se describen dos alternativas, para que pueda escoger la que mejor se adapte a sus necesidades.

    Método A: Una columna ascendente, una columna descendente
    Probablemente el primer método sea el más simple y eficiente, pero se puede comportar de manera inesperada según el tipo de base de datos que esté utilizando. En este método crearemos dos columnas: una para el orden ascendente, la otra para el orden descendente.
    1. Vaya al recuadro izquierdo y haga clic en la pestaña toolbox (cuadro de herramientas).
    2. En el panel Insertable Objects ubique “Query Calculation” (Cálculo de consulta). Arrástrelo y suéltelo en el final de su lista (asegúrese de soltarlo sobre la lista, no después de ella).
    3. Se le presentará el cuadro de diálogo Create Calculation (Crear cálculo).
    4. En el diálogo Create Calculation Ingrese un nombre que signifique algo, como por ejemplo “Orden por ASC”, y haga clic en OK (Acepter). Aparece el diálogo Data Item Expression (Expresión de elemento de datos).
      Figura 7. Editor Data Item Expression de IBM Cognos 8 Report Studio
      Editor Data Item Expression de IBM Cognos 8 Report Studio
    5. Es donde definiremos qué columna se utilizará para ordenar.
    6. En el diálogo Data Item Expression haga clic en la pestaña funciones. Se actualizará el cuadro Available Components (Componentes disponibles). Haga clic en la carpeta “Constructs” (Construcciones), y arrastre y suelte el elemento “if then else” (si…entonces…sino) en el cuadro Expression Definition (Definición de expresión).
    7. En el cuadro Expression Definition reemplace <condition> por lo siguiente:
      ?OrderBy? = '1'
    8. Haga clic en la pestaña elementos de datos. Arrastre y suelte el elemento que represente la primera columna en el lugar de la primera <expression> en el cuadro Expression Definition (deberá eliminar manualmente el texto <expression>):
      Figura 8. Cuadro de diálogo Data Item Expression de IBM Cognos 8 Report Studio
      Cuadro de diálogo Data Item Expression de IBM Cognos 8 Report Studio
      Observe que si está utilizando una fuente de datos OLAP y tiene niveles que aparecen en el cuadro Available Components (Componentes disponibles), no podrá utilizarlos con éxito en la expresión. En dichos casos, deberá ir a la pestaña fuente y escoger el elemento de datos que desea utilizar para ordenar esas columnas particulares.
    9. Reemplace la <expression> restante por null o por cualquier valor estático (por ejemplo: ASC'). En este punto, su expresión debe verse así:
      IF ( ?OrderBy? = '1' ) THEN (
                                      [Retailer type code] ) ELSE ( null )

      Esto significa fundamentalmente que si el parámetro “OrderBy” tiene un valor de “1”, esta columna de orden se poblará con el contenido de la primera columna: “Retailer type code” (Código de tipo de minorista). Si no, se poblará con los valores nulo/vacío.
      Observe que al utilizar fuentes de datos OLAP, no podrá utilizar null en la instrucción else (si no), y deberá utilizar un valor estático.
    10. Para aplicar el orden a todas las columnas deberemos agregarlas a la instrucción if-then-else. Puede repetir los pasos anteriores para arrastrar y soltar elementos, o puede ingresar la expresión manualmente. Al final, su expresión debe verse más o menos así:
      IF (?OrderBy? = '1') THEN
                                      ([Retailer type code])
                                      ELSE IF (?OrderBy? = '2') THEN
                                      ([Retailer type])
                                      ELSE IF (?OrderBy? = '3') THEN
                                      ([Retailer code])
                                      ELSE IF (?OrderBy? = '4') THEN
                                      ([Retailer name])
                                      ELSE IF (?OrderBy? = '5') THEN
                                      ([Retailer name (multiscript)])
                                      ELSE IF (?OrderBy? = '6') THEN
                                      ([Retailer start date])
                                      ELSE (null)
    11. Valide su expresión utilizando el botón Validate Expression en la parte superior derecha del diálogo (puede que se le solicite ingresar un valor para el parámetro “OrderBy”, en cuyo caso puede ingresa cero y hacer clic en OK).
      Si se muestra “No errors” (Sin errores) en el cuadro de Información, haga clic en OK en el diálogo.
      Puede haber ciertas situaciones donde puede obtener un mensaje así:
      QE-DEF-0459 CCLException QE-DEF-0478 Invalid
                                      coercion from 'value' to
                                      'string' for '<data
                                      item>' in
                                      '<expression>'
      Figura 9. Cuadro de diálogo Data Item Expression de IBM Cognos 8 Report Studio con el cálculo completado y el error de coerción en el recuadro de Información
      Cuadro de diálogo Data Item Expression de IBM Cognos 8 Report Studio con el cálculo completado y el error de coerción en el recuadro de Información
      Si esto ocurre, intente reordenar sus condiciones en su expresión, agrupando elementos de tipos de datos similares (números, cadenas, fechas, etc.). Por ejemplo, en la expresión anterior, al agrupar elementos de datos enteros (“Retailer type code” y “Retailer code”), el mensaje de error desaparece.
      Figura 10. Cuadro de diálogo Data Item Expression de IBM Cognos 8 Report Studio con el cálculo reordenado para evitar el error
      Cuadro de diálogo Data Item Expression de IBM Cognos 8 Report Studio con el cálculo reordenado para evitar el error
      Observe cómo las condiciones(?OrderBy? = ‘2’)y(?OrderBy? = ‘3’)han cambiado de lugar. Si esto no resuelve el problema, puede que tenga que utilizar la segunda alternativa de orden.
    12. Cuando se hayan resuelto todos los errores, haga clic en OK para cerrar el diálogo. Notará que se agregó una nueva columna a la lista.
    13. Seleccione el título o el cuerpo de esa nueva columna.
    14. En la barra de herramientas de Report Studio haga clic en el ícono Sort (Ordenar), y seleccione Sort Ascending (Orden ascendente) desde el menú desplegable.
    15. Observe el ícono que aparece ahora en la columna, que indica que se ordenará de forma ascendente.
    16. Repita los pasos 14.A.1 a 14.A.15 para una columna de orden descendente, con los siguientes cambios:
      • Ponga un nombre diferente a la columna (por ej.: “Order By DESC”)
      • Cambie las condiciones en la Expression Definition para usar valores negativos, por ej.:
        enteros, la expresión

        Puede copiar y pegar la expresión de la columna ASC, y sólo tendrá que reemplazar los valores en las condiciones de positivo a negativo.
      • Seleccione Sort Descending (Orden descendente) del menú Sort.
    17. En este punto, debe tener dos columnas nuevas al final de su lista, así:
      Figura 11. Lista de IBM Cognos 8 Report Studio con los dos cálculos mostrados como dos columnas finales
      Lista de IBM Cognos 8 Report Studio con los dos cálculos mostrados como dos columnas finales
    Método B: Una columna ascendente por tipo de datos, una columna descendente por tipo de datos
    El segundo método requiere un poco más de trabajo y puede que no sea tan directo, pero es un poco más seguro. En este método crearemos dos columnas por tipo de datos en la consulta: una para el orden ascendente y otra para el orden descendente.
    1. Ya que la idea es la misma independientemente del método que escoja, siga los pasos 14.A.1 a 14.A.15 para crear una columna de orden ascendente para uno de los tipos de datos en su lista. Deberá considerar las siguientes diferencias:
      • Colóquele a la columna un nombre significativo. Algo como “Order By Int ASC” sería una buena práctica para una columna de orden ascendente entero.
      • Cambie la expresión para que contenga únicamente elementos del mismo tipo. Por ejemplo, para enteros, la expresión sería:
        IF (?OrderBy? = '1') THEN
                                    ([Retailer type code])
                                    ELSE IF (?OrderBy? = '3') THEN
                                    ([Retailer code])
                                    ELSE (null)

        Observe cómo los otros cuatro elementos de datos no se indican aquí.
    2. Cuando haya creado la columna de orden ascendente, cree la columna descendente para el mismo tipo de datos conforme al paso 14.A.16.
    3. Repita los pasos 14.B.1 a 14.B.2 para todos los tipos de datos de su lista. En nuestro ejemplo, terminamos agregando 6 columnas de orden:
      Orden por Ent. ASC
      Tipo de datos: Entero
      Dirección: Ascendente
      Expresión:
      IF (?OrderBy? = '1') THEN
      ([Retailer type code])
      ELSE IF (?OrderBy? = '3') THEN
      ([Retailer code])
      ELSE (null)
      Orden por Int DESC
      Tipo de datos: Entero
      Dirección: Descendente
      Expresión:
      IF (?OrderBy? = '-1') THEN
      ([Retailer type code])
      ELSE IF (?OrderBy? = '-3') THEN
      ([Retailer code])
      ELSE (null)
      Orden por Varchar ASC
      Tipo de datos: Varchar/Cadena
      Dirección: Ascendente
      Expresión:
      IF (?OrderBy? = '2') THEN
      ([Retailer type])
      ELSE IF (?OrderBy? = '4') THEN
      ([Retailer name])
      ELSE IF (?OrderBy? = '5') THEN
      ([Retailer name (multiscript)])
      ELSE (null)
      Orden por Varchar DESC
      Tipo de datos: Varchar/Cadena
      Dirección: Descendente
      Expresión:
      IF (?OrderBy? = '-2') THEN
      ([Retailer type])
      ELSE IF (?OrderBy? = '-4') THEN
      ([Retailer name])
      ELSE IF (?OrderBy? = '-5') THEN
      ([Retailer name (multiscript)])
      ELSE (null)
      Orden por Fecha ASC
      Tipo de datos: Fecha
      Dirección: Ascendente
      Expresión:
      IF (?OrderBy? = '6') THEN
      ([Retailer start date])
      ELSE (null)
      Orden por Fecha DESC
      Tipo de datos: Fecha
      Dirección: Descendente
      Expresión:
      IF (?OrderBy? = '-6') THEN
      ([Retailer start date])
      ELSE (null)
  14. Independientemente del método de orden elegido, ocultaremos las columnas de orden: seleccione una de las columnas de orden.
  15. En el panel Propiedades del recuadro izquierdo, en el área de títulos, haga clic en el ícono ancestors (antecesores).
  16. Desde el menú contexto, seleccione el objeto List Column.
  17. En el panel Properties, debajo de la sección Conditional, haga doble clic en Render Variable (Presentar variable).
  18. En el menú desplegable Variable, seleccione “Sorting Columns Rendering”, y haga clic en OK.
  19. Repita los pasos 15 a 19 para cualquier otra columna de orden.
  20. Finalmente podemos agregar la última pieza del rompecabezas, la lógica que permite a la lista ser ordenada sobre la marcha. Vaya al recuadro del lado izquierdo y haga clic en las pestaña Toolbox.
  21. En el panel Insertable Objects, baje hasta el final. Verá los elementos de cuadro de herramientas Column Sorting Function (Función de orden de columna) y Sortable Column Title (Título de columna ordenable).
  22. Arrastre y suelte “Column Sorting Function” justo arriba de la lista. El lienzo debe verse ahora de la siguiente manera.
    Figura 12. Imagen que describe el objeto de lista con las columnas ordenadas y el elemento html adicional sobre la lista.
    Imagen que describe el objeto de lista con las columnas ordenadas y el elemento html adicional sobre la lista.
  23. Para utilizar las capacidades de orden, se debe guardar el informe. Guarde el informe.
  24. Regrese al portal Cognos Connection (no cierre Report Studio), y navegue hasta el informe.
  25. Bajo la columna Actions (Acciones), seleccione el ícono Set properties (Establecer propiedades).
  26. En la ventana Set properties, bajo la pestaña General, bien a la derecha, haga clic en el enlace que diceView the search path, ID and URL (Ver ruta de acceso de búsqueda, ID y URL). Se debe abrir un nuevo diálogo.
  27. Seleccione el texto en el cuadro Default action URL (URL de acción predeterminada)y cópielo en el portapapeles.
  28. Regrese a Report Studio y haga doble clic en el elemento de texto que dice “Copy the Default action URL for the report here. Only the Default action URL should exist between these two HTML items.” (Sólo la URL de acción predeterminada debe existir entre estos dos elementos HTML). Esto debe abrir el diálogo Text (Texto).
  29. Reemplace la cadena existente con la acción URL predeterminada para el informe y cierre el diálogo Text haciendo clic en OK. Ahora su informe debe mostrar lo siguiente.
    Figura 13. Informe de lista de IBM Cognos 8 Report Studio con los órdenes en su lugar y los cálculos de consulta como las últimas dos columnas de la lista
    Informe de lista de IBM Cognos 8 Report Studio con los órdenes en su lugar y los cálculos de consulta como las últimas dos columnas de la lista
    Asegúrese de que el host del URL no sea “localhost”, si no otros usuarios pueden tener problemas con el orden.
    Además, observe que si vuelve a nombrar el informe, o lo mueve a otra ubicación, deberá actualizar la URL dentro del informe.
  30. Guarde el informe.

Utilizar las capacidades de orden dinámico

Esta sección le dará una descripción breve de cómo las capacidades de orden se incluyeron en el trabajo de informe.

  1. Desde IBM Cognos Connection o desde IBM Cognos 8 Report Studio, ejecute el informe como HTML.
  2. Debe aparecer una solicitud que pida el valor del parámetro “OrderBy”. Ingrese cero y haga clic en OK.
    Observe que puede fijar un valor predeterminado para este parámetro en la página de propiedades del informe e indicarle a Cognos Viewer que no solicite valores si lo desea.
  3. El contenido de su informe se debe ver así (observe que la primera página de los datos de salida se muestra aquí):
    Figura 14. Datos de salida de IBM Cognos 8 Report Viewer que muestra la lista en formato HTML
    Datos de salida de IBM Cognos 8 Report Viewer que muestra la lista en formato HTML
    Observe que las dos columnas de orden no están visibles.
  4. Pase el mouse sobre cualquier encabezado de columna, y verá aparecer el ícono de orden.
  5. Haga clic en el ícono current sorting (orden actual). Cuando el informe se haya terminado de ejecutar, se ordenará de manera ascendente en la columna seleccionada (observe que aquí sólo se muestra la primera página de los datos de salida):
    Figura 15. Datos de salida en IBM Cognos 8 Report Viewer de la lista en formato HTML con el icono de orden personalizado mostrado en la columna seleccionada
    Datos de salida en IBM Cognos 8 Report Viewer de la lista en formato HTML con el icono de orden personalizado mostrado en la columna seleccionada
    Observe que el ícono de orden ha cambiado al ícono de orden ascendente, indicando la dirección de orden.
  6. Haga clic en el ícono de orden actual. Cuando el informe haya terminado de ejecutarse, se ordenará de manera descendente en la columna seleccionada.
    Observe que el ícono de orden ha cambiado al ícono de orden descendente, indicando la dirección del orden.
  7. Haga clic en el ícono current sorting. Cuando el informe se haya terminado de ejecutar, ya no se ordenará según la columna seleccionada.
    Observe que el ícono de orden ha desaparecido, indicando que no se está realizando ningún orden.

Comentarios

developerWorks: Ingrese

Los campos obligatorios están marcados con un asterisco (*).


¿Necesita un IBM ID?
¿Olvidó su IBM ID?


¿Olvidó su Password?
Cambie su Password

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


La primera vez que inicie sesión en developerWorks, se creará un perfil para usted. La información en su propio perfil (nombre, país/región y nombre de la empresa) se muestra al público y acompañará a cualquier contenido que publique, a menos que opte por la opción de ocultar el nombre de su empresa. Puede actualizar su cuenta de IBM en cualquier momento.

Toda la información enviada es segura.

Elija su nombre para mostrar



La primera vez que inicia sesión en developerWorks se crea un perfil para usted, teniendo que elegir un nombre para mostrar en el mismo. Este nombre acompañará el contenido que usted publique en developerWorks.

Por favor elija un nombre de 3 - 31 caracteres. Su nombre de usuario debe ser único en la comunidad developerWorks y debe ser distinto a su dirección de email por motivos de privacidad.

Los campos obligatorios están marcados con un asterisco (*).

(Por favor elija un nombre de 3 - 31 caracteres.)

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


Toda la información enviada es segura.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=90
Zone=Information mgmt
ArticleID=591938
ArticleTitle=Prácticas probadas de IBM Cognos: Selección dinámica de una lista dentro de IBM Cognos 8 Report Studio
publish-date=11192010