Lección 2: Agregar parámetros en cascada a un informe

Nuevo: 17 de julio de 2006

Los parámetros en cascada proporcionan una manera de filtrar valores disponibles para cada parámetro en un conjunto de parámetros con una relación natural. Por ejemplo, en la base de datos AdventureWorks, cada distribuidor tiene una dirección en un lugar específico de una ciudad (campo City). Las ciudades se agrupan en estados o provincias (campo StateProvince). Los estados y las provincias se agrupan en países o regiones (campo CountryRegion). Los países o las regiones se agrupan en territorios de ventas (campo TerritoryGroup). Puede crear cuatro parámetros en cascada para estos campos, los cuales tienen una ordenación dependiente desde la categoría más amplia, TerritoryGroup, hasta la más específica, City.

Cuando los parámetros en cascada aparecen en la barra de herramientas de un informe, el lector del informe selecciona un valor del primer parámetro, lo que determina los valores disponibles para el siguiente parámetro, y así sucesivamente. De este modo, puede filtrar potencialmente miles de opciones en un número manejable para cada parámetro en cascada.

Los parámetros en cascada tienen un orden implícito. Cuando ve parámetros del informe en el Diseñador de informes, el panel de parámetros muestra los parámetros en orden. El primer parámetro de una lista no depende de ningún otro parámetro. El siguiente parámetro de la lista, si se utiliza como parámetro en cascada, depende del parámetro anterior. Puede reordenar parámetros con los botones de flecha arriba y abajo del cuadro de diálogo de parámetros del informe.

En esta lección, agregará cuatro parámetros en cascada (TerritoryGroup, CountryRegion, StateProvince y City) para el informe Sales Orders creado en el tutorial anterior. Creará un conjunto de datos para cada parámetro a fin de llenar su lista de valores disponibles. Cuando crea una consulta con un parámetro de consulta para un conjunto de datos de valores válidos, se crea automáticamente un parámetro del informe. Como está creando conjuntos de datos para las listas de valores válidos desde el más general (TerritoryGroup) hasta el más específico (Cities), creará parámetros del informe en el orden correcto de dependencias. Para el conjunto de datos final de valores válidos (Cities), aprenderá a crear un parámetro del informe manualmente y lo asociará con el correspondiente parámetro de consulta.

Una vez creados todos los conjuntos de datos, modificará las propiedades predeterminadas para cada parámetro del informe y establecerá las propiedades de los valores válidos y los valores predeterminados para señalar el campo y el conjunto de datos apropiados.

Finalmente modificará la consulta del conjunto de datos original con el propósito de incluir parámetros de consulta para cada parámetro del informe. Cuando ejecute el informe, seleccionará, a su vez, valores para cada parámetro en cascada, y verá que los valores disponibles para el siguiente parámetro enumeran sólo aquellos valores que son válidos después de que se selecciona el primero.

Procedimiento

Para abrir el informe ResellersWorldwide

  1. En SQL Server Business Intelligence Development Studio, abra el proyecto AdvancedParametersTutorial del servidor de informes creado en la lección anterior.

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

  3. Haga clic en la ficha Datos.

Para agregar un conjunto de datos para los valores disponibles para el parámetro TerritoryGroup

  1. En la lista desplegable Conjunto de datos, haga clic en <Nuevo conjunto de datos>. Se abre el cuadro de diálogo Conjunto de datos.

  2. En la ficha Consulta, en el cuadro de texto Nombre, escriba ValidValuesforTerritoryGroup.

  3. Compruebe que Origen de datos es Resellers.

  4. Compruebe que Tipo de comando es Text.

  5. Pegue la siguiente consulta en el panel de consulta.

    SELECT distinct [Group] as SalesTerritory
       FROM [AdventureWorks].[Sales].[SalesTerritory]
    
  6. Haga clic en Ejecutar (!) para ver el conjunto de resultados. La columna SalesTerritory aparece con tres filas: Europe, North America y Pacific.

Para agregar un conjunto de datos para valores disponibles para el parámetro CountryRegion

  1. En la lista desplegable Conjunto de datos, haga clic en <Nuevo conjunto de datos>. Se abre el cuadro de diálogo Conjunto de datos.

  2. En la ficha Consulta, en el cuadro de texto Nombre, escriba ValidValuesforCountryRegion.

  3. Compruebe que Origen de datos es Resellers.

  4. Compruebe que Tipo de comando es Text.

  5. Pegue la siguiente consulta en el panel de consulta.

    SELECT Distinct CR.Name AS CountryRegion
    FROM Sales.Store AS S
        JOIN Sales.CustomerAddress AS CA ON CA.CustomerID = S.CustomerID
        JOIN Person.Address AS A ON A.AddressID = CA.AddressID
        JOIN Person.StateProvince SP ON 
            SP.StateProvinceID = A.StateProvinceID
        JOIN Person.CountryRegion CR ON 
            CR.CountryRegionCode = SP.CountryRegionCode
        JOIN Sales.Customer C on S.CustomerID = C.CustomerID
        JOIN Sales.SalesTerritory T on C.TerritoryID = T.TerritoryID
    WHERE (T.[Group] = (@TerritoryGroup))
    Order by CR.Name
    
  6. Haga clic en Ejecutar (!). Se abrirá el cuadro de diálogo Definir los parámetros de la consulta.

  7. Escriba Pacific.

    El conjunto de resultados aparece con la columna CountryRegion y una fila con el valor Australia.

    Cuando define un parámetro de consulta denominado @TerritoryGroup, se crea un nuevo parámetro del informe denominado TerritoryGroup.

  8. (Opcional) Junto a la lista desplegable Conjunto de datos, haga clic en el botón Editar el conjunto de datos seleccionado () y luego en la ficha Parámetros. Compruebe que el parámetro @TerritoryGroup está enlazado con el valor del parámetro del informe TerritoryGroup (=Parameters!TerritoryGroup.Value).

Para agregar un conjunto de datos para los valores disponibles para el parámetro StateProvince

  1. En la lista desplegable Conjunto de datos, haga clic en <Nuevo conjunto de datos>. Se abrirá el cuadro de diálogo Conjunto de datos.

  2. En la ficha Consulta, en Nombre, escriba ValidValuesforStateProvince.

  3. Compruebe que Origen de datos es Resellers.

  4. Compruebe que Tipo de comando es Text.

  5. Pegue la siguiente consulta en el panel de consulta.

    SELECT Distinct SP.Name AS StateProvince
    FROM Sales.Store AS S
        JOIN Sales.CustomerAddress AS CA ON CA.CustomerID = S.CustomerID
        JOIN Person.Address AS A ON A.AddressID = CA.AddressID
        JOIN Person.StateProvince SP ON 
            SP.StateProvinceID = A.StateProvinceID
        JOIN Person.CountryRegion CR ON 
            CR.CountryRegionCode = SP.CountryRegionCode
    WHERE (CR.Name = @CountryRegion)
    Order by SP.Name
    
  6. Haga clic en Ejecutar (!) para ver el conjunto de resultados. Se abrirá el cuadro de diálogo Definir los parámetros de la consulta.

  7. En el cuadro de texto Valor de parámetro, escriba Australia. Haga clic en Aceptar.

    La columna StateProvince aparece con cuatro filas: New South Wales, Queensland, South Australia y Victoria.

Para agregar un conjunto de datos para los valores disponibles para el parámetro City

  1. En la lista desplegable Conjunto de datos, haga clic en <Nuevo conjunto de datos>. Se abrirá el cuadro de diálogo Conjunto de datos.

  2. En la ficha Consulta, en el campo Nombre, escriba ValidValuesforCity.

  3. Compruebe que Origen de datos es Resellers.

  4. Compruebe que Tipo de comando es Text.

  5. Pegue la siguiente consulta en el panel de consulta.

    SELECT Distinct A.City 
    FROM Sales.Store AS S
        JOIN Sales.CustomerAddress AS CA ON CA.CustomerID = S.CustomerID
        JOIN Person.Address AS A ON A.AddressID = CA.AddressID
        JOIN Person.StateProvince SP ON 
            SP.StateProvinceID = A.StateProvinceID
        JOIN Person.CountryRegion CR ON 
            CR.CountryRegionCode = SP.CountryRegionCode
        JOIN Sales.Customer C on S.CustomerID = C.CustomerID
        JOIN Sales.SalesTerritory T on C.TerritoryID = T.TerritoryID
    WHERE (
        T.[Group] = (@TerritoryGroup) AND
        CR.[Name] = (@CountryRegion) AND
        SP.[Name] = (@StateProvince)
        )
    Order by A.City
    
  6. Haga clic en Ejecutar (!) para ver el conjunto de resultados. Se abrirá el cuadro de diálogo Definir los parámetros de la consulta.

  7. En el cuadro de texto Valor de parámetro, escriba un valor para cada parámetro de consulta usando la tabla siguiente.

Nombre de parámetro Valor de parámetro

@TerritoryGroup

Pacific

@CountryRegion

Australia

@StateProvince

Victoria

  1. Haga clic en Aceptar.
    La columna City aparece con tres filas: Melbourne, Seaford y South Melbourne.

Acaba de crear cuatro parámetros en cascada. A continuación, editará las propiedades de los parámetros del informe que ha creado y que corresponden a los parámetros de consulta. Establecerá cada parámetro para utilizar el conjunto de datos apropiado con el fin de recuperar el conjunto de valores disponibles.

Para establecer los valores disponibles para el parámetro del informe TerritoryGroup

  1. En el menú Informe, haga clic en Parámetros del informe. Se abrirá el cuadro de diálogo Parámetros del informe con TerritoryGroup seleccionado en el panel Parámetros.

  2. Compruebe que Tipo de datos es String.

  3. En el cuadro de texto Pedir datos, escriba Select a Territory Group:.

  4. Compruebe que todas las casillas de verificación están desactivadas.

  5. En la sección Valores disponibles, seleccione De consulta.

  6. En la lista desplegable Conjunto de datos, seleccione ValidValuesforTerritoryGroup.

  7. En la lista desplegable Campo de valor, seleccione SalesTerritory.

  8. En la lista desplegable Campo de etiqueta, seleccione SalesTerritory.

  9. En la sección Valores predeterminados, seleccione No consultado.

  10. En el cuadro de texto, escriba North America.

    Puede establecer un valor predeterminado para un valor específico o para valores predeterminados desde un campo del conjunto de datos. Como el tipo de parámetro es String, puede escribir el valor directamente en el cuadro de texto. Para otros tipos de datos, escribirá una expresión que comience con un signo igual (=).

  11. Haga clic en Aceptar.

  12. (Opcional) Haga clic en la ficha Vista previa. El parámetro TerritoryGroup aparece con el valor predeterminado Europe y los valores válidos del campo SalesTerritory del conjunto de datos ValidValuesforTerritoryGroup.

    No se verán cambios en los datos del informe hasta que cambie la consulta del conjunto de datos Resellers en el procedimiento final de esta lección.

Para establecer los valores disponibles para el parámetro del informe CountryRegion

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

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

  3. Compruebe que Tipo de datos es String.

  4. En el cuadro de texto Pedir datos, escriba Select a Country/Region:.

  5. Compruebe que todas las casillas de verificación están desactivadas.

  6. En la sección Valores disponibles, seleccione De consulta.

  7. En la lista desplegable Conjunto de datos, seleccione ValidValuesforCountryRegion.

  8. En la lista desplegable Campo de valor, seleccione CountryRegion.

  9. En la lista desplegable Campo de etiqueta, seleccione CountryRegion.

  10. En la sección Valores predeterminados, seleccione De consulta.

  11. En la lista desplegable Conjunto de datos, seleccione ValidValuesforCountryRegion.

  12. En la lista desplegable Campo de valor, seleccione CountryRegion.

  13. Haga clic en Aceptar.

  14. (Opcional) Haga clic en la ficha Vista previa. Seleccione un valor para TerritoryGroup. Seleccione un valor para el parámetro CountryRegion. Compruebe que los valores que ve para CountryRegion son válidos para el grupo de territorios que seleccionó.

Para establecer los valores disponibles para el parámetro del informe StateProvince

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

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

  3. Compruebe que Tipo de datos es String.

  4. En el cuadro de texto Pedir datos, escriba Select a State/Province:.

  5. Compruebe que todas las casillas de verificación están desactivadas.

  6. En la sección Valores disponibles, seleccione De consulta.

  7. En la lista desplegable Conjunto de datos, seleccione ValidValuesforStateProvince.

  8. En la lista desplegable Campo de valor, seleccione StateProvince.

  9. En la lista desplegable Campo de etiqueta, seleccione StateProvince.

  10. En la sección Valores predeterminados, seleccione De consulta.

  11. En la lista desplegable Conjunto de datos, seleccione ValidValuesforStateProvince.

  12. En la lista desplegable Campo de valor, seleccione StateProvince.

  13. Haga clic en Aceptar.

  14. (Opcional) Haga clic en la ficha Vista previa. Seleccione un valor para TerritoryGroup. Seleccione un valor para el parámetro CountryRegion. Seleccione un valor para el parámetro StateProvince. Compruebe que los valores que ve para StateProvince son válidos para TerritoryGroup y CountryRegion que seleccionó.

Para crear el parámetro del informe City y establecer sus propiedades

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

  2. En el panel Parámetros, observe que no hay un parámetro del informe denominado City.

    Los parámetros del informe se crean automáticamente cuando se define una consulta que contiene parámetros para un conjunto de datos. Ninguna de las consultas del conjunto de datos creada hasta el momento contiene un parámetro de consulta @City. Puede crear un parámetro del informe denominado City, de forma que cuando se define una consulta que efectivamente contiene un parámetro de consulta @City, el parámetro de consulta se enlazará automáticamente con un parámetro del informe si tiene un nombre correspondiente (el nombre sin el designador del parámetro de consulta "@").

  3. Haga clic en Agregar. Se creará un nuevo parámetro de informe con propiedades predeterminadas.

  4. En la sección Propiedades, en el cuadro de texto Nombre, escriba City.

  5. Compruebe que Tipo de datos es String.

  6. En el cuadro de texto Pedir datos, escriba Select a City:.

  7. Compruebe que todas las casillas de verificación están desactivadas.

  8. En la sección Valores disponibles, seleccione De consulta.

  9. En la lista desplegable Conjunto de datos, seleccione ValidValuesforCity.

  10. En la lista desplegable Campo de valor, seleccione City.

  11. En la lista desplegable Campo de etiqueta, seleccione City.

  12. En la sección Valores predeterminados, seleccione De consulta.

  13. En la lista desplegable Conjunto de datos, seleccione ValidValuesforCity.

  14. En la lista desplegable Campo de valor, seleccione City.

  15. Haga clic en Aceptar.

  16. (Opcional) Haga clic en la ficha Vista previa. Seleccione valores para los parámetros TerritoryGroup, CountryRegion y StateProvince. Compruebe que los valores de parámetro que ve para City son válidos para las selecciones realizadas.

Hasta el momento, ha creado los valores de parámetros en cascada. Ahora necesita incluir estos valores en la consulta del conjunto de datos para la región de datos de la tabla, de manera que los parámetros que seleccione se incluyan en la consulta que recupera los datos de la tabla.

Para modificar la consulta para el conjunto de datos Reseller SalesOrders con el fin de incluir parámetros de consulta existentes

  1. En la vista Datos, en la lista desplegable Conjunto de datos, seleccione Resellers. La cadena de consulta original creada en la lección anterior aparece en el panel de consulta.

  2. Reemplace el texto del panel de consulta por la siguiente consulta:

    SELECT S.CustomerID, SO.SalesOrderNumber, SO.OrderDate, SO.TotalDue,
        S.Name AS Store, A.City, SP.Name AS State, CR.Name
        AS CountryRegion, 
        SC.ContactID As StoreContactID, T.[Group] As TerritoryGroup
    FROM Sales.Store AS S
        JOIN Sales.CustomerAddress AS CA ON CA.CustomerID = S.CustomerID
        JOIN Person.Address AS A ON A.AddressID = CA.AddressID
        JOIN Person.StateProvince SP ON 
            SP.StateProvinceID = A.StateProvinceID
        JOIN Person.CountryRegion CR ON 
            CR.CountryRegionCode = SP.CountryRegionCode
        JOIN Sales.SalesOrderHeader AS SO ON 
        S.CustomerID = SO.CustomerID
        JOIN Sales.StoreContact SC ON  S.CustomerID = SC.CustomerID
        JOIN Sales.Customer C on S.CustomerID = C.CustomerID
        JOIN Sales.SalesTerritory T on C.TerritoryID = T.TerritoryID
    WHERE(
        (T.[Group] = (@TerritoryGroup))
        AND
        (CR.Name = (@CountryRegion))
         AND
         (SP.Name = (@StateProvince))
        AND
        (A.City = (@City))
       )
    ORDER BY S.CustomerID 
    

    La consulta incluye ahora parámetros de consulta que utilizan los valores de parámetros del informe.

  3. Haga clic en Ejecutar (!) para ver el conjunto de resultados. Se abrirá el cuadro de diálogo Definir los parámetros de la consulta.

  4. En la columna Valor de parámetro, escriba un valor para cada parámetro de consulta usando la tabla siguiente.

Nombre de parámetro Valor de parámetro

@TerritoryGroup

Pacific

@CountryRegion

Australia

@StateProvince

Victoria

@City

Melbourne

  1. Haga clic en Aceptar.
    El conjunto de resultados contiene las ventas de los distribuidores en la ciudad de Melbourne.
    Cuando agregó parámetros de consulta a la definición de consulta para el conjunto de datos Resellers, estos se establecieron automáticamente para obtener sus valores a partir de los correspondientes valores de parámetros del informe.
  2. (Opcional) Junto a la lista desplegable Conjunto de datos, haga clic en el botón Editar el conjunto de datos seleccionado () y luego en la ficha Parámetros. Compruebe que los parámetros de consulta @TerritoryGroup, @CountryRegion, @StateProvince y @City se enlazan con los valores de los correspondientes parámetros del informe.

Para establecer el valor NoRows

  1. Haga clic en la ficha Diseño para cambiar a la vista Diseño.

  2. Haga clic en la tabla de manera que aparezcan las asas de la tabla. Haga clic en el asa de esquina de la tabla para seleccionarla. Aparecerá la tabla con un contorno gris.

  3. En la ventana Propiedades, busque la propiedad NoRows. Pegue el siguiente texto en el cuadro de texto adyacente.

    There are no resellers in this area.

Para crear los cuadros de texto del valor del parámetro y el título del informe principal

  1. Haga clic en la ficha Diseño para cambiar a la vista Diseño.

  2. Haga clic con el botón secundario en el cuadro de texto que contiene la marca de hora del procesamiento de informes y seleccione Expresión.

  3. Haga clic en botón de la expresión (Fx) junto al cuadro de texto Valor. Se abrirá el cuadro de diálogo Editar expresión. Reemplace la expresión de marca de hora por la siguiente:

    ="Report Processed Date: " & 
      Globals!ExecutionTime.ToShortDateString() & " " & 
      Globals!ExecutionTime.ToShortTimeString() & vbCrLf & 
      "Sales Territory for: " 
    & Parameters!TerritoryGroup.Value & ", " 
    & Parameters!CountryRegion.Value & ", "
    & Parameters!StateProvince.Value & ", "
    & Parameters!City.Value
    
  4. Haga clic en Vista previa. Intente seleccionar diferentes valores de parámetros. Observe que, a medida que selecciona cada parámetro sucesivo, la lista desplegable del siguiente parámetro muestra sólo los valores disponibles según su selección. Los datos del informe no cambian, aun cuando se seleccionen nuevos parámetros. Para volver a procesar el informe con los parámetros recientemente seleccionados, haga clic en Ver informe.

Pasos siguientes

Creó correctamente un informe con parámetros en cascada que muestra las ventas del distribuidor por territorio. En la siguiente lección, aprenderá a utilizar parámetros para cambiar la forma en que se ordenan las filas de detalle de la tabla y los grupos de tablas. Vea Lección 3: Cambiar la ordenación inicial y la ordenación interactiva mediante parámetros.

Vea también

Otros recursos

Trabajar con parámetros en Reporting Services
Usar parámetros para controlar los datos de los informes

Ayuda e información

Obtener ayuda sobre SQL Server 2005