Lección 3: Agregar parámetros para seleccionar varios valores de una lista
En esta lección, convertirá los parámetros de un solo valor BusinessPersonID y DayoftheWeek en parámetros de varios valores. Los parámetros con varios valores permiten seleccionar más de un valor para un parámetro del informe. Para modificar el parámetro de informe BusinessPersonID, cambiará la consulta del conjunto de datos AdventureWorks2008 a fin de probar @BusinessPersonID con el conjunto de valores seleccionados en lugar de hacerlo con un solo valor, y para comprobar el funcionamiento de la propiedad de varios valores del parámetro de informe. Para modificar el parámetro de informe DayoftheWeek, comprobará la propiedad Multivalue, establecerá los valores disponibles desde un nuevo conjunto de datos y proporcionará una expresión para los valores predeterminados. Creará un nuevo conjunto de datos para proporcionar valores disponibles para el parámetro DayoftheWeek. Finalmente, agregará un cuadro de texto al informe para mostrar los valores de parámetro correspondientes a las selecciones realizadas para DayoftheWeek.
Para reemplazar el conjunto de datos existente
En el panel Datos de informe, haga clic con el botón secundario en el conjunto de datos AdventureWorksDataset y, a continuación, haga clic en Propiedades del conjunto de datos.
En Origen de datos, compruebe que AdventureWorks_Ref está seleccionado.
En Tipo de consulta, compruebe que está seleccionada la opción Texto.
Haga clic en el botón Diseñador de consultas para abrir el Diseñador de consultas.
Reemplace el texto del cuadro de texto por la consulta siguiente:
SELECT soh.OrderDate AS [Date], DATENAME(weekday, soh.OrderDate) as Weekday, soh.SalesOrderNumber AS [Order], pps.Name AS Subcat, pp.Name as Product, SUM(sd.OrderQty) AS Qty, SUM(sd.LineTotal) AS LineTotal FROM Sales.SalesPerson sp INNER JOIN Sales.SalesOrderHeader AS soh ON sp.BusinessEntityID = soh.SalesPersonID INNER JOIN Sales.SalesOrderDetail AS sd ON sd.SalesOrderID = soh.SalesOrderID INNER JOIN Production.Product AS pp ON sd.ProductID = pp.ProductID INNER JOIN Production.ProductSubcategory AS pps ON pp.ProductSubcategoryID = pps.ProductSubcategoryID INNER JOIN Production.ProductCategory AS ppc ON ppc.ProductCategoryID = pps.ProductCategoryID GROUP BY ppc.Name, soh.OrderDate, soh.SalesOrderNumber, pps.Name, pp.Name, soh.SalesPersonID HAVING ppc.Name = 'Clothing' AND (soh.OrderDate BETWEEN (@StartDate) AND (@EndDate)) AND soh.SalesPersonID IN (@BusinessPersonID)
Esta consulta es la misma que la anterior, con la única excepción de que se ha cambiado una condición de igualdad por una condición de inclusión.
AND soh.SalesPersonID IN (@BusinessPersonID)
Haga clic en el botón Ejecutar (!). Cuando se le soliciten los parámetros de consulta, use la tabla siguiente para escribir los valores. El Diseñador de consultas no admite la prueba de parámetros con varios valores.
@StartDate
20010101
@EndDate
20030101
@BusinessPersonID
290
Haga clic en Aceptar.
Aparecerá el conjunto de resultados para el vendedor Ranjit Varkey Chudukatil con BusinessPersonID = 290.
Para editar el parámetro de informe BusinessPersonID a fin de que acepte varios valores
En el panel Datos de informe, expanda Parámetros y haga doble clic en el parámetro BusinessPersonID.
Seleccione la opción Permitir varios valores.
Haga clic en Aceptar.
Haga clic en Vista previa. El informe se ejecuta automáticamente. La lista desplegable de BusinessPersonID muestra los nombres de todos los vendedores.
[!NOTA]
En la lista desplegable de valores disponibles para un parámetro de varios valores, aparece en primer lugar el valor (Seleccionar todo). Use esta casilla para seleccionar o desactivar todos los valores. De forma predeterminada, se seleccionan todos los valores.
Para agregar un nuevo conjunto de datos a fin de rellenar los valores válidos para un parámetro de informe
Cambie a la vista Diseño.
En el panel Datos de informe, haga clic con el botón secundario en AdventureWorks_Ref y, a continuación, haga clic en Agregar conjunto de datos. Se abre el cuadro de diálogo Propiedades del conjunto de datos.
En el campo Nombre, escriba WeekDaysfromQuery.
En Tipo de consulta, compruebe que está seleccionada la opción Texto.
En Consulta, escriba o pegue la cadena de consulta siguiente:
SET DATEFIRST 1; SELECT DISTINCT DATEPART(weekday, S.OrderDate) as WeekDayNumber, DATENAME(weekday, S.OrderDate) as Weekday FROM Sales.SalesOrderHeader S Order by WeekDayNumber
Haga clic en el botón Ejecutar (!) de la barra de herramientas del Diseñador de consultas. El conjunto de resultados muestra números ordinales y días de la semana.
Haga clic en Aceptar dos veces para salir del cuadro de diálogo Propiedades del conjunto de datos.
Aparece el conjunto de datos WeekDaysfromQuery en el panel Datos de informe.
Para editar un parámetro a fin de que acepte varios valores, valores predeterminados y valores válidos
En el panel Datos de informe, expanda Parámetros y haga doble clic en DayoftheWeek. Se abrirá el cuadro de diálogo Propiedades de parámetro de informe.
Seleccione Permitir varios valores.
Haga clic en Valores disponibles.
Seleccione Obtener valores de una consulta.
En Conjunto de datos, seleccione WeekDaysfromQuery en la lista desplegable.
En Campo de valor, seleccione Weekday en la lista desplegable.
En Campo de etiqueta, seleccione Weekday en la lista desplegable.
Haga clic en Valores predeterminados.
Seleccione Especificar valores.
(Opcional) Seleccione el valor existente Friday y haga clic en Eliminar.
Haga clic en Agregar.
En Valor, escriba Saturday.
Haga clic en Agregar.
En Valor, escriba Sunday.
Haga clic en Aceptar.
Para poder obtener una vista previa del informe, antes debe cambiar la expresión del filtro definida para la región de datos de tabla para que use el operador IN, dado que ahora el parámetro DayoftheWeek acepta varios valores.
Para cambiar un filtro a fin de que use un parámetro de varios valores
En la vista Diseño, haga clic con el botón secundario en la tabla y, a continuación, haga clic en Propiedades de Tablix. Se abre el cuadro de diálogo Propiedades de Tablix.
Haga clic en Filtros. Ya hay un filtro agregado para DaysoftheWeek de la Lección 1.
En Expresión, compruebe que el valor es [Weekday].
Compruebe que está seleccionada la opción Texto.
En Operador, cambie el signo igual (=) por el operador In.
En el cuadro de texto Valor, compruebe que el valor es [@DayoftheWeek].
Haga clic en Aceptar.
Ahora, el filtro de la tabla está establecido para que compare el valor del campo Weekday con el valor del parámetro DayoftheWeek mediante el operador In. Cuando elija varios valores para el parámetro de informe, el filtro probará cada fila de la tabla para ver si existe el campo Weekday en la colección DayoftheWeek.
Haga clic en Vista previa. El informe muestra el parámetro de informe DaysoftheWeek con los valores predeterminados Saturday y Sunday. Use la lista desplegable para seleccionar varios valores para el parámetro DayoftheWeek.
Pasos siguientes
Ha cambiado correctamente las propiedades de los parámetros de informe de un solo valor a varios valores. Realizó los cambios necesarios en una consulta, un filtro y una expresión para dar cabida al uso de una colección de parámetros con varios valores. Ha aprendido a usar parámetros de varios valores en una expresión. En la lección siguiente, aprenderá a crear parámetros cuyos valores se rellenan de forma condicional en función del valor seleccionado para un parámetro anterior. Vea Lección 4: Agregar parámetros en cascada.