Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Wiki Markup
{scrollbar}
----
Con frecuencia los reportes requieren cierto grado de parametrización para que el propio usuario pueda filtrar la información que se despliega, restringiendo así el análisis a subconjuntos de la información.

En esta sección se describe como agregar un parámetro al reporte que permita desplegar los datos de un único vendedor sin que esto afecte la estructura del reporte.

h3. Creando un nuevo parámetro

# Desde el panel Data Explorer presionar el botón derecho del mouse sobre el elemento Report Parameters
# Crear un nuevo parámetro
!NewParameterPopup.png|vspace=10,hspace=10!
Esta acción abre el editor de parámetros
# Indique los siguientes datos del parámetro
| *Name:* | El nombre del parámetro \\
En nuestro caso *Vendedor* |
| *Data type:* | Tipo de dato del parámetro \\
En nuestro caso *String* |
| *Display Type:* | Forma de mostrar los datos \\
En nuestro caso *List Box* |
# La selección de la forma en que se despliegan los datos como *List Box* despliega un conjunto de opciones adicionales propias de esta forma de visualización.
La lista desplegable (list box) podrá contener opciones estáticas o dinámicas.
El caso *estático* permite al diseñador del reporte indicar de forma estática la lista de elementos que se incluirán en la lista.
El caso *dinámico* permite al diseñador definir una consulta que cargue la lista con datos almacenados, por ejemplo, en un cubo de O3
# Indique el tipo de lista dinámica
!NewParameterEditor.png|vspace=10,hspace=10!
Este tipo de parámetro requiere de la existencia de un Conjunto de Datos (Data Set) desde donde se tomarán los valores para cargar la lista.
# Utilizando el botón *Create New...* cree un nuevo Conjunto de datos como se indica a continuación:
| *Name* | Vendedores |
| *Data Source* | O3 Local MDX |
| *Data Set Type* | O3 Data Set |
# Ingrese la siguiente consulta MDX en la especificación del Data Set
{code:sql}
SELECT {[Vendedores].[Vendedor].members} ON COLUMNS
FROM [Vinos]
{code}{note}Para más detalles sobre la definición de un *Data Set* consultar la sección [Especificando los datos a utilizar] {note}
# Acepte los cambios del editor del Data Set
# Complete los datos del parámetro con la nueva información:
| *Data Set:* | Conjunto de datos al cual está asociado el parámetro. \\
En nuestro caso usaremos el conjunto de datos *Vendedores* |
| *Select value column:* | Campo del Data Set que contiene la clave del parámetro. \\
En nuestro caso usaremos *unique_name* |
| *Select display text:* | Campo del Data Set que contiene la etiqueta del parámetro a mostrar al usuario \\
En nuestro caso *label* |
# Finalmente el editor debería mostrar lo siguiente 
!NewParameterFinalSettings.png|vspace=10,hspace=10!
# Presione el botón *OK* para concluir la creación del Parámetro. Este aparecerá en la ventana *Data Explorer* bajo *Report Parmeters*.

En este punto es posible ejecutar el reporte para ver cómo se muestra una ventana donde se solicita el valor del parámetro de entre una lista de opciones que son obtenidas del cubo de O3 !ParameterSelection.png|align=center!\\
\\

h3. Filtrar Consulta


h4. Utilizando el Parámetro en la consulta


Una vez definido el parámetro es necesario utilizarlo en la consulta para que filtre la misma y devuelva únicamente el Vendedor seleccionado por el usuario.

Para ello modificaremos el Conjunto de Datos (Data Set) definido en la sección [Especificando los datos a utilizar].
# Desde el Data Explorer, hacer doble click sobre el Conjunto de Datos *Ventas MDX*.
# Modificar la consulta MDX para que contenga lo siguiente
{code:sql}
SELECT
	{[Measures].[Litros Vendidos], [Measures].[Venta Neta]} ON COLUMNS
	,CROSSJOIN({[Vendedores].[Vendedor].?}, {[Vinos].[Vino].members}) ON ROWS
FROM [Vinos]
{code}
Notar el signo de interrogación en la sección correspondiente a las filas. Este signo marca el lugar donde se sustituirá el valor del parámetro cuando se ejecute la consulta.
# Seleccione *Parameters* en el editor del Data Set
# Agregue un nuevo parámetro con el botón *New...*
# Configure el parámetro de acuerdo a lo siguiente
| *Name:* | El nombre del parámetro \\
En nuestro caso *Vendedor* |
| *Data Type:* | Tipo del parámetro  \\
En nuesto caso no requiere modificación |
| *Direction:* \\ | Dirección del parámetro (Entrada o Salida) \\
En nuestro caso usaremos *input* |
| *Default Value{*}*:* | Valor que tendrá el parámetro por defecto \\
En nuestro caso *N/A* |
| *Linked To Report Parameter:* | Parámetro al cual está asociado \\
En nuestro caso *Vendedor* |
!AddParameterToQuery.png|vspace=10,hspace=10!
# Finalmente resta ejecutar el reporte para ver cómo se filtran los datos para mostrar únicamente las ventas del Vendedor seleccionado

h4. Utilizando un filtro en la consulta


Una vez definido el parámetro es necesario utilizarlo en la consulta para que filtre la misma y devuelva únicamente el Vendedor seleccionado por el usuario.

Para ello modificaremos el Conjunto de Datos (Data Set) definido en la sección [Especificando los datos a utilizar].
# Desde el Data Explorer, hacer doble click sobre el Conjunto de Datos *Ventas MDX*.
# Modificar la consulta MDX para que contenga lo siguiente
{code:sql}
SELECT
	{[Measures].[Litros Vendidos], [Measures].[Venta Neta]} ON COLUMNS
	,CROSSJOIN({[Vendedores].[Vendedor].members}, {[Vinos].[Vino].members}) ON ROWS
FROM [Vinos]
{code}
# Seleccione *Filters* en el editor del Data Set
# Agregue un nuevo  filtro con el botón *New...*
# Configure el filtro de acuerdo a lo siguiente
| *Expression:* | Definición de la expresión. \\
En nuestro caso *row\["Vendedores_Vendedor"\]* |
| *Operator:* | Lista de operadores. \\
En nuestro caso *Equals* o *Match* \\ |
| *Value 1:* \\ | Valor a comparar con la expresión. \\
En nuestro caso usaremos *params\["Vendedor"\].value* |
# Modificar en la definición del parámetro *Select value column* _unique_name_ por *{_}label._*
# Finalmente resta ejecutar el reporte para ver cómo se filtran los datos para mostrar únicamente las ventas del Vendedor seleccionado
----
{scrollbar}