Usar parámetros de consulta con orígenes de datos específicos (Reporting Services)

Cuando se define una consulta para un conjunto de datos, se selecciona el tipo de origen de datos. El tipo de origen de datos especifica la extensión de procesamiento de datos o el proveedor de datos de .NET Framework registrado que se usa para conectar con el origen de datos. El proveedor de datos es la capa de software que interactúa con el origen de datos y determina la compatibilidad con el uso de variables en una consulta. En este tema se muestra el modo en que una consulta cambia para un conjunto de resultados determinado en función del origen de datos al que se está conectado, y si contiene una variable en la consulta.

Variables de consulta y proveedores de datos

En la tabla siguiente se muestran los resultados de los datos de la base de datos de ejemplo AdventureWorks. Puede crear este conjunto de resultados ejecutando una consulta de Transact-SQL en la base de datos de ejemplo AdventureWorks o una consulta MDX en el cubo de Adventure Works implementado como parte de los informes de ejemplo de AdventureWorks. El conjunto de resultados muestra dos columnas: los nombres de los modelos de producto que incluyen la palabra "Mountain" y el número correspondiente de ventas por Internet.

Nombre

Ventas por Internet

Fender Set - Mountain

2121

HL Mountain Tire

1396

LL Mountain Tire

862

ML Mountain Tire

1161

Mountain Bottle Cage

2025

Mountain Tire Tube

3095

Mountain-100

396

Mountain-200

3552

Mountain-400-W

543

Mountain-500

479

Women's Mountain Shorts

1019

En las secciones siguientes se muestra la consulta usada para crear este conjunto de resultados, primero desde una base de datos relacional y luego desde una multidimensional.

Orígenes de datos de bases de datos relacionales

Para una base de datos relacional como las de MicrosoftSQL Server, puede crear consultas mediante Transact-SQL. Aunque esta consulta limita los resultados al incluir una cláusula WHERE configurada como un valor no modificable, la consulta aún no contiene una variable.

Consulta Transact-SQL

SELECT PM.Name, Count(*) as InternetSales

FROM Sales.SalesOrderHeader SOH INNER JOIN Sales.SalesOrderDetail SOD

ON SOH.SalesOrderID = SOD.SalesOrderID INNER JOIN

Production.Product PP

ON SOD.ProductID = PP.ProductID INNER JOIN

Production.ProductModel PM ON PP.ProductModelId = PM.ProductModelID

WHERE (SOH.OnLineOrderFlag = 1 AND PM.Name LIKE ('%Mountain%'))

GROUP BY PM.Name

ORDER BY PM.Name

A fin de agregar una variable para el nombre del modelo de producto, PM.Name, se debe especificar un parámetro de consulta en la cláusula WHERE. En la tabla siguiente se muestra cómo especificar parámetros de consulta para distintos proveedores de datos. El proveedor de datos se selecciona automáticamente al seleccionar el tipo de origen de datos. La cadena de conexión de este proveedor de datos se muestra en la segunda columna. La consulta de la tabla es idéntica a la anterior, pero se ha agregado un parámetro en un formato compatible con el proveedor de datos.

Tipo de origen de datos

Proveedor de datos

Consulta

MicrosoftSQL Server

MicrosoftSQL Server (SqlClient)

Cadena de conexión:

Data Source=.;Initial Catalog=AdventureWorks

SELECT PM.Name, Count(*)

FROM Sales.SalesOrderHeader SOH INNER JOIN Sales.SalesOrderDetail SOD

ON SOH.SalesOrderID = SOD.SalesOrderID INNER JOIN

Production.Product PP

ON SOD.ProductID = PP.ProductID INNER JOIN

Production.ProductModel PM ON PP.ProductModelId = PM.ProductModelID

WHERE (SOH.OnLineOrderFlag = 1 AND (PM.Name LIKE '%' + @Mountain + '%'))

GROUP BY PM.Name

ORDER BY PM.Name

OLE DB

Proveedor OLE DB de Microsoft para SQL Server

Cadena de conexión:

Provider=SQLOLEDB.1;Data Source=.;Initial Catalog=AdventureWorks

SELECT PM.Name, Count(*)

FROM Sales.SalesOrderHeader SOH INNER JOIN Sales.SalesOrderDetail SOD

ON SOH.SalesOrderID = SOD.SalesOrderID INNER JOIN

Production.Product PP

ON SOD.ProductID = PP.ProductID INNER JOIN

Production.ProductModel PM ON PP.ProductModelId =

PM.ProductModelID

WHERE ((SOH.OnLineOrderFlag = 1) AND PM.Name LIKE

('%' + ? + '%'))

GROUP BY PM.Name

ORDER BY PM.Name

Oracle

MicrosoftSQL Server (OracleClient)

SELECT PM.Name, Count(*)

FROM Sales.SalesOrderHeader SOH INNER JOIN Sales.SalesOrderDetail SOD

ON SOH.SalesOrderID = SOD.SalesOrderID INNER JOIN

Production.Product PP

ON SOD.ProductID = PP.ProductID INNER JOIN

Production.ProductModel PM ON PP.ProductModelId =

PM.ProductModelID

WHERE ((SOH.OnLineOrderFlag = 1) AND

PM.Name LIKE '%' + :1 + '%')

GROUP BY PM.Name

ORDER BY PM.Name

OLE DB

Cualquier proveedor de datos de .NET Framework registrado

Depende del proveedor.

En estos ejemplos se ha agregado una variable a la cláusula WHERE de la consulta, con lo que cambia la prueba para la palabra "Mountain" por una prueba para el valor de la variable.

  • El proveedor de datos .NET para SQL Server admite las variables cuyo nombre empieza con el carácter de arroba (@). Por ejemplo, PM.Name LIKE '%' + @Mountain + '%').

  • El proveedor OLE DB para SQL Server no admite variables con nombre. Utilice el signo de interrogación (?) para especificar una variable. Los parámetros que se pasan al proveedor OLE DB se deben pasar en el orden en el que aparecen en la cláusula WHERE. Por ejemplo, PM.Name LIKE ('%' + ? + '%').

  • El proveedor de datos .NET para Oracle admite los parámetros con números que empiezan con dos puntos (:). Por ejemplo, PM.Name LIKE '%' + :1 + '%').

  • La compatibilidad de otros proveedores de datos OLE DB con las variables depende de cada proveedor de datos. Consulte la documentación del proveedor de datos para obtener más información.

El diseñador de consultas asociado a un tipo de origen de datos crea un parámetro de consulta para cada variable identificada. Estos parámetros de consulta se muestran en la ficha Parámetro de las páginas de propiedades Conjunto de datos. Por cada parámetro de consulta se crea un parámetro de informe del tipo String. Los valores de los parámetros de consulta definidos para el conjunto de datos se establecen en el parámetro de informe correspondiente. Se puede editar el tipo de datos de los parámetros de informe y otras propiedades en el cuadro de diálogo Propiedades del informe, accesible desde el menú Informe cuando se está en la vista Datos. También se pueden crear, editar o eliminar estos parámetros de consulta de forma manual. Para obtener más información, vea Propiedades del conjunto de datos (cuadro de diálogo), Parámetros.

Orígenes de datos de bases de datos multidimensionales

Para una base de datos multidimensional como las de Analysis Services, puede crear consultas mediante MDX. Aunque esta consulta limita los resultados al incluir una cláusula Filter configurada como un valor no modificable, la consulta aún no contiene una variable.

Consulta MDX

SELECT NON EMPTY

{ [Measures].[Internet Order Count] } ON COLUMNS,

NON EMPTY {

([Product].[Model Name].[Model Name].ALLMEMBERS ) }

DIMENSION PROPERTIES

MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS

FROM (

SELECT (

Filter(

[Product].[Model Name].[Model Name].ALLMEMBERS,

Instr([Product].[Model Name].currentmember.Properties(

'Member_Caption' ),

'Mountain' ) > 0 )

) ON COLUMNS

FROM [Adventure Works])

CELL PROPERTIES VALUE, BACK_COLOR, FORE_COLOR,

FORMATTED_VALUE, FORMAT_STRING,

FONT_NAME, FONT_SIZE, FONT_FLAGS

A fin de agregar una variable para el nombre del modelo de producto, @ProductModelName, se debe agregar una cláusula FILTER. En la tabla siguiente se muestra que, en las bases de datos multidimensionales, las variables forman parte de una cláusula FILTER. El tipo de origen de datos es el valor que se selecciona en la lista desplegable al crear un origen de datos nuevo para Reporting Services. El proveedor de datos se selecciona automáticamente al seleccionar el tipo de origen de datos. La cadena de conexión de este proveedor de datos también se muestra en la segunda columna. La consulta de la tabla es idéntica a la anterior, pero se ha agregado un parámetro en un formato compatible con el proveedor de datos.

Tipo de origen de datos

Proveedor de datos

Consulta

MicrosoftSQL ServerAnalysis Services

SQL ServerAnalysis Services (AdomdClient)

Cadena de conexión:

Data Source=.;Initial Catalog="Adventure Works DW"

SELECT NON EMPTY { [Measures].[Internet Order Count] } ON COLUMNS,

NON EMPTY { ([Product].[Model Name].[Model Name].ALLMEMBERS ) }

DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS

FROM ( SELECT (

Filter( [Product].[Model Name].[Model Name].ALLMEMBERS,

Instr( [Product].[Model Name].currentmember.Properties(

'Member_Caption' ), @ProductModelName ) > 0 ) )

ON COLUMNS

FROM [Adventure Works])

CELL PROPERTIES VALUE, BACK_COLOR, FORE_COLOR,

FORMATTED_VALUE, FORMAT_STRING,

FONT_NAME, FONT_SIZE, FONT_FLAGS

OLE DB

Proveedor OLE DB de Microsoft para Analysis Services 9.0

Cadena de conexión:

Provider=MSOLAP.3;Data Source=.;Initial Catalog="Adventure Works DW"

OLE DB para OLAP no admite consultas con parámetros.

Las soluciones se describen en las notas del producto: "Integrating Analysis Services with Reporting Services".

En estos ejemplos se ha agregado una variable a la cláusula WHERE de la consulta, con lo que cambia la prueba para la palabra Mountain por una prueba para el valor de la variable.

  • MicrosoftSQL ServerAnalysis Services admite parámetros con nombre definidos en la sección Filtro del diseñador de consultas MDX. Las variables con nombre empiezan con el carácter de arroba (@). Por ejemplo, @ProductModelName.

  • El proveedor OLE DB de Microsoft para Analysis Services 9.0 no admite consultas con parámetros. Para obtener más información, busque "Integrating Analysis Services with Reporting Services" en msdn.microsoft.com.

  • La compatibilidad de otros proveedores de datos multidimensionales con las variables depende de cada proveedor de datos. Consulte la documentación del proveedor de datos para obtener más información.

El diseñador de consultas asociado a un tipo de origen de datos crea un parámetro de consulta para cada variable identificada. Se crea automáticamente un conjunto de datos especial a fin de ofrecer valores válidos para cada parámetro. Estos parámetros de consulta se muestran en la ficha Parámetro de las páginas de propiedades Conjunto de datos. Por cada parámetro de consulta se crea un parámetro de informe del tipo String. Los valores de los parámetros de consulta definidos para el conjunto de datos se establecen en el parámetro de informe correspondiente. También se pueden crear, editar o eliminar estos parámetros de conjunto de datos de forma manual. Para obtener más información, vea Cómo definir parámetros en el diseñador de consultas MDX para Analysis Services.

Los conjuntos de datos para ofrecer valores válidos para cada consulta se crean cuando se procesa la consulta.