Compartir a través de


Usar parámetros de consulta con orígenes de datos específicos

Nuevo: 17 de julio de 2006

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 .NET registrado que se utiliza 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. Se puede crear este conjunto de resultados al ejecutar una consulta 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 que permite 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

En una base de datos relacional como Microsoft SQL Server, se pueden 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

Microsoft SQL Server

Microsoft SQL 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 Microsoft OLE DB 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

Microsoft SQL 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 .NET 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 Conjunto de datos (ficha Parámetros del Diseñador de informes).

Orígenes de datos de bases de datos multidimensionales

En una base de datos multidimensional como Microsoft Analysis Services, se pueden 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

Microsoft SQL Server Analysis Services

SQL Server Analysis 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 Microsoft OLE DB 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" (Integración de Analysis Services con 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.

  • Microsoft SQL Server Analysis Services admite los parámetros con nombre definidos en la sección Filter del diseñador de consultas MDX. Las variables con nombre empiezan con el carácter de arroba (@). Por ejemplo, @ProductModelName.
  • El proveedor Microsoft OLE DB 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 y DMX para Analysis Services (Diseñador de informes).

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

Vea también

Tareas

Cómo asociar un parámetro de consulta a un parámetro de informe (Diseñador de informes)

Conceptos

Usar propiedades de campo extendidas para una base de datos de Analysis Services
Utilizar el diseñador de consultas MDX de Analysis Services en modo de diseño
Utilizar el diseñador de consultas MDX de Analysis Services en modo de consulta
Definir conjuntos de datos de informe para una base de datos relacional de SQL Server
Definir conjuntos de datos de informe para datos relacionales de una base de datos de Oracle

Otros recursos

Interfaz de usuario del Diseñador de consultas MDX de Analysis Services
Interfaz de usuario del Diseñador de consultas de SQL Server

Ayuda e información

Obtener ayuda sobre SQL Server 2005