Lección 4: Agregar un parámetro con varios valores con Seleccionar todo

Actualizado: 12 de diciembre de 2006

En esta lección, cambiará los parámetros SalesOrderID y DayoftheWeek de parámetros de valor único a parámetros con 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 del informe SalesOrderID, cambiará la consulta para el conjunto de datos AdventureWorks a fin de probar @SalesPersonID en el conjunto de valores seleccionados en lugar de igualarlo a un único valor, y de comprobar la propiedad Multivalue del parámetro del 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 valores de parámetro para las selecciones de DayoftheWeek realizadas.

Para abrir el informe Sales Orders

  1. En SQL Server Business Intelligence Development Studio, abra el proyecto Tutorial Report Server creado en la lección anterior.

  2. En el Explorador de soluciones, haga doble clic en el informe Sales Orders. El informe se abre en la vista Diseño.

  3. Haga clic en la ficha Datos.

Para modificar la consulta del conjunto de datos para probar su inclusión en un conjunto de valores

  1. En la lista desplegable Conjuntos de datos, elija AdventureWorks.

  2. Modifique la cláusula WHERE de la consulta existente cambiando la prueba de @SalesPersonID de una igualdad (= (@SalesPersonID)) a una inclusión (IN (@SalesPersonID)).

    Reemplace la cadena de consulta para este conjunto de datos por la siguiente consulta.

    SELECT S.OrderDate, DATENAME(weekday, S.OrderDate) as Weekday,
        S.SalesOrderNumber, S.TotalDue, C.FirstName, C.LastName
    FROM    HumanResources.Employee E INNER JOIN
            Person.Contact C ON E.ContactID = C.ContactID INNER JOIN
            Sales.SalesOrderHeader S ON E.EmployeeID = S.SalesPersonID
    WHERE
       (
       S.OrderDate BETWEEN (@StartDate) AND (@EndDate) 
       AND
       S.SalesPersonID IN (@SalesPersonID)
       )
    
  3. Haga clic en el botón Ejecutar (!). Cuando se le solicite que proporcione los parámetros de consulta, utilice la siguiente tabla para escribir los valores. El diseñador de consultas no admite la prueba de parámetros con varios valores.

    @StartDate

    20010101

    @EndDate

    20030101

    @SalesPersonID

    286

  4. Haga clic en Aceptar. Aparecerá el conjunto de resultados para el vendedor Ranjit Varkey Chudakatil con SalesPersonID = 286.

Para establecer las propiedades del parámetro del informe SalesPersonID

  1. En el menú Informe, seleccione Parámetros del informe. Se abrirá el cuadro de diálogo Parámetros del informe.

  2. En el panel Parámetros, seleccione SalesPersonID.

  3. En la sección Propiedades, active Multivalor.

  4. En el cuadro de texto Pedir datos, escriba Select Sales Persons:.

  5. Haga clic en Aceptar.

  6. Haga clic en la ficha Vista previa. El informe muestra una lista desplegable con los nombres de los vendedores.

[!NOTA] Se proporciona un valor (Seleccionar todo) como el primer valor en una lista desplegable de valores disponibles para un parámetro con valores múltiples. Utilice esta casilla de verificación para seleccionar o anular la selección de todos los valores.

[!NOTA] La opción Seleccionar todo se deshabilitó en el Service Pack 1 de SQL Server 2005, pero se ha restaurado en el Service Pack 2 de SQL Server 2005.

Para agregar un nuevo conjunto de datos para los valores disponibles para DaysoftheWeek

  1. En la lista desplegable Conjuntos de datos de la ficha Datos, seleccione <Nuevo conjunto de datos>.

  2. Establezca el origen de datos para el origen de datos AdventureWorks.

  3. En el campo Nombre, escriba WeekDaysfromQuery.

  4. Pegue la siguiente cadena de consulta en el panel de 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
    

    DATEFIRST establece el día de la semana que se desea utilizar como el primer día. Por ejemplo, SET DATEFIRST 7 cambia el orden de los días de la semana de manera que Sunday es el primer día. Para obtener más información, vea SET DATEFIRST (Transact-SQL).

    En este tutorial, Monday es el primer día de la semana.

  5. Haga clic en Aceptar.

  6. Haga clic en el botón Ejecutar (!) en la barra de herramientas del diseñador de consultas. El conjunto de resultados muestra números ordinales y días de la semana.

Para establecer las propiedades del parámetro del informe DayoftheWeek

  1. En el menú Informe, seleccione Parámetros del informe. Se abrirá el cuadro de diálogo Parámetros del informe.

  2. En el panel Parámetros, seleccione DayoftheWeek. Este parámetro se creó en la lección 2.

  3. En la sección Propiedades, active Multivalor.

  4. En el cuadro de Pedir datos, escriba Filter on which days of the week:.

  5. En la sección Valores disponibles, en la lista desplegable Conjuntos de datos, seleccione WeekDaysfromQuery.

  6. En la lista desplegable Campo de valor, seleccione Weekday.

  7. En la lista desplegable Campo de etiqueta, seleccione Weekday.

    Para Valores predeterminados, en el primer cuadro de texto Valor, escriba Saturday; y en el segundo cuadro de texto Valor, escriba Sunday.

  8. Haga clic en Aceptar.

    Antes de que pueda obtener una vista previa del informe, debe cambiar la expresión del filtro definida para la región de datos de la tabla para que utilice el operador IN, dado que ahora el parámetro DayoftheWeek es un parámetro con varios valores.

Para cambiar el filtro para usar un parámetro con varios valores

  1. En la vista Diseño, seleccione la tabla. Aparece la tabla con un contorno gris.

  2. Haga clic con el botón secundario en el contorno de la tabla y seleccione Propiedades. Se abrirá el cuadro de diálogo Propiedades de la tabla.

  3. Haga clic en la ficha Filtro.

  4. En la columna Expression, en la lista desplegable, compruebe que el valor es =Fields!Weekday.Value.

  5. Cambie el operador del signo igual (=) al operador In.

  6. En el cuadro de texto Valor, en la lista desplegable, compruebe que el valor es =Parameters!DayoftheWeek.Value.

  7. Haga clic en Aceptar.

    El filtro de la tabla ahora se establece para comparar el valor del campo Weekday con el valor de parámetro DayoftheWeek con el operador In. Cuando seleccione varios valores para el parámetro del informe, el filtro probará cada fila de la tabla para ver si existe el campo Weekday en la colección DayoftheWeek.

  8. Haga clic en la ficha Vista previa. El informe muestra el parámetro del informe DaysoftheWeek con los valores predeterminados Saturday y Sunday.

[!NOTA] Se proporciona un valor (Seleccionar todo), con la excepción indicada en un procedimiento anterior, como el primer valor en una lista desplegable de valores disponibles para un parámetro con valores múltiples. Utilice esta casilla de verificación para seleccionar o anular la selección de todos los valores.

Para agregar un cuadro de texto para mostrar valores de parámetro

  1. En la vista Diseño, seleccione la tabla. Presione la tecla de flecha abajo varias veces para mover la tabla hacia abajo y expandir la altura del informe.

  2. Desde el cuadro de herramientas, arrastre el cuadro de texto sobre la tabla. Seleccione un borde del cuadro de texto y expanda su ancho para que coincida con el ancho de la tabla.

  3. Escriba la siguiente expresión en el cuadro de texto:

    ="From " & Parameters!StartDate.Value & " to " & 
    Parameters!EndDate.Value & vbCrLf & "For the following " & 
    Parameters!DayoftheWeek.Count & " days of the week: " & 
    Join(Parameters!DayoftheWeek.Value,", ") & vbCrLf &
    "First and last selected salespersons: " & 
    Parameters!SalesPersonID.Label(0) & " and " & 
    Parameters!SalesPersonID.Label(Parameters!SalesPersonID.Count-1)
    

    Puede observar lo siguiente en esta expresión:

    • Puede hacer referencia a la etiqueta del parámetro en lugar del valor. Por ejemplo: Parameters!SalesPersonID.Label en lugar de Parameters!SalesPersonID.Value.
    • Para hacer referencia a un miembro individual de una colección de parámetros, use el índice de base cero. Por ejemplo: Parameters!SalesPersonID.Label(0).
    • Para hacer referencia a toda la colección, no utilice ningún índice. Por ejemplo: Parameters!SalesPersonID.Value.
    • Para encontrar el número de valores, use Parameters!SalesPersonID.Count.
    • También puede averiguar si un parámetro tiene varios valores. Por ejemplo: Parameters!SalesPersonID.IsMultivalue.
    • Puede concatenar todos los valores seleccionados en un parámetro con varios valores con la función Join de Visual Basic. Por ejemplo, Join(Parameters!DayoftheWeek.Value,", ").
  4. Haga clic en Vista previa. Compruebe que cuando hace clic en Ver informe, el cuadro de texto muestra los valores que ha seleccionado en los parámetros.

Pasos siguientes

Cambió correctamente las propiedades de los parámetros del informe de un valor único 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. Aprendió a utilizar parámetros con varios valores en una expresión. En la siguiente lección, aprenderá a crear un parámetro booleano para controlar el nivel de detalle que desea ver en un informe. Vea Lección 5: Agregar un parámetro para controlar la visibilidad de las filas.

Historial de cambios

Versión Historial

12 de diciembre de 2006

Contenido modificado:
  • Se ha restaurado la opción Seleccionar todo en el SP2.

Vea también

Tareas

Lección 1: Crear un proyecto del servidor de informes para el tutorial de parámetros

Otros recursos

Trabajar con parámetros en Reporting Services

Ayuda e información

Obtener ayuda sobre SQL Server 2005