Lección 3: Agregar parámetros para seleccionar varios valores de una lista (Generador de informes 2.0)
En esta lección, obtendrá información sobre cómo cambiar un parámetro para aceptar varios valores. Estos parámetros se conocen como parámetros de varios valores. De forma predeterminada, un parámetro acepta un solo valor. Los parámetros que creó en la lección anterior, BusinessPersonID y DayoftheWeek, aceptaban valores únicos. Para modificar un parámetro de modo que acepte varios valores, debe conocer si el parámetro se creó automáticamente a partir de un parámetro de consulta, como BusinessPersonID, o si lo creó manualmente utilizando el panel Datos de informe, como DayoftheWeek.
Para modificar un parámetro de informe de modo que acepte varios valores, solo tiene que establecer una propiedad de parámetro de informe. Si el parámetro de informe estuviera basado en un parámetro de consulta, también deberá cambiar la consulta. Si utiliza el parámetro en un filtro, debe cambiar al operador de filtro para especificar un conjunto de valores en lugar de un valor único.
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 DataSet1 y, a continuación, haga clic en Consulta.
Se abrirá el diseñador de consultas basado en texto.
Reemplace el texto del cuadro de texto por la consulta siguiente:
SELECT SH.OrderDate ,DATENAME(weekday, SH.OrderDate) as Weekday ,SH.SalesOrderNumber ,SD.OrderQty ,SD.LineTotal ,P.Name AS [Product] ,PS.Name AS [Subcategory] FROM Sales.SalesPerson SP INNER JOIN Sales.SalesOrderHeader AS SH ON SP.BusinessEntityID = SH.SalesPersonID INNER JOIN Sales.SalesOrderDetail AS SD ON SH.SalesOrderID = SD.SalesOrderID INNER JOIN Production.Product AS P ON SD.ProductID = P.ProductID INNER JOIN Production.ProductSubcategory AS PS ON PS.ProductSubcategoryID = P.ProductSubcategoryID INNER JOIN Production.ProductCategory AS PC ON PC.ProductCategoryID = PS.ProductCategoryID WHERE PC.Name = 'Clothing' AND (SH.OrderDate BETWEEN (@StartDate) AND (@EndDate)) AND SH.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 IN:
AND SH.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.
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 la barra de herramientas del panel Datos de informe, haga clic en Nuevo y, a continuación, haga clic en Conjunto de datos. Se abre el cuadro de diálogo Propiedades del conjunto de datos.
En Nombre, escriba WeekDaysfromQuery.
En Tipo de consulta, compruebe que esté seleccionada la opción Texto.
Haga clic en Diseñador de consultas y, a continuación, haga clic en Editar como texto.
En el panel Consulta, pegue la siguiente consulta:
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 WeekdayNumber en la lista desplegable.
En Campo de etiqueta, seleccione Weekday en la lista desplegable.
Cuando el usuario selecciona los valores de parámetro, se seleccionan de las etiquetas, pero el informe utiliza los valores. Esto es importante al establecer los valores predeterminados o un filtro. Los valores deben ser enteros para el campo WeekdayNumber.
Haga clic en Valores predeterminados.
Seleccione Especificar valores.
Haga clic en Agregar.
En Valor, reemplace Viernes por 6. Dado que los valores proceden de un conjunto de datos que proporciona tanto un número como un nombre de día de la semana, el valor predeterminado debe especificar el número de día de la semana. El valor 6 representa Sábado.
Haga clic en Agregar.
En Valor, escriba 7. Este valor representa Domingo.
Haga clic en Aceptar.
Para poder obtener una vista previa del informe, antes debe cambiar la expresión del filtro para la 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 el panel Datos de informe, haga clic con el botón secundario en DataSet1 y, a continuación, haga clic en Propiedades del conjunto de datos.
Haga clic en Filtros. Ya hay un filtro agregado para DayoftheWeek de la Lección 1.
En Expresión, compruebe que el valor es [Weekday].
Cambie en Operador el signo igual (=) por In.
En Valor, escriba [@DayoftheWeek.Label].
Especifique la etiqueta de parámetro para que el nombre del día de la semana se compare con el campo de etiqueta, no con el campo numérico del día de la semana.
Haga clic en Aceptar.
Ahora, el filtro de la tabla está establecido para que compare el valor del campo Weekday con la etiqueta 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 Ejecutar para obtener la vista previa del informe. El informe muestra el parámetro de informe DaysoftheWeek con los valores predeterminados Sábado y Domingo, que son las etiquetas para los valores predeterminados que especificó. 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 usar 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 (Generador de informes 2.0).