Compartilhar via


Usando parâmetros de consulta com fontes de dados específicas (Reporting Services)

Quando define uma consulta para um conjunto de dados, você escolhe o tipo da fonte de dados. O tipo da fonte de dados especifica a extensão de processamento de dados ou o provedor de dados .NET Framework registrado usado para conexão à fonte de dados. O provedor de dados é a camada do software que interage com a fonte de dados e determina o suporte existente para uso de variáveis em uma consulta. Este tópico mostra como, para um determinado conjunto de resultados, uma consulta é alterada de acordo com a fonte de dados à qual você está conectado e se há uma variável na consulta.

Variáveis de consulta e provedores de dados

A tabela a seguir mostra os resultados dos dados do banco de dados de exemplo AdventureWorks. É possível criar esse conjunto de resultados executando uma consulta Transact-SQL em relação ao banco de dados de exemplo AdventureWorks ou uma consulta MDX em relação ao cubo do Adventure Works implantado como parte dos Relatórios de Exemplo da AdventureWorks. O conjunto de resultados mostra duas colunas: os nomes dos modelos de produto que contêm a palavra "Mountain" e o número correspondente de vendas pela Internet.

Nome

InternetSales

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

Nas próximas seções, você verá a consulta usada para criar esse conjunto de resultados, primeiro de um banco de dados relacional e, em seguida, de uma banco de dados multidimensional.

Fontes de dados de banco de dados relacional

Para um banco de dados relacional, como o MicrosoftSQL Server, você pode criar consultas usando Transact-SQL. Embora essa consulta limite os resultados incluindo uma cláusula WHERE definida como um valor embutido em código, a consulta ainda não contém uma variável.

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

Para adicionar uma variável ao nome do Modelo do Produto, PM.Name, você precisa especificar um parâmetro de consulta na cláusula WHERE. A tabela abaixo mostra como especificar parâmetros de consulta para diferentes provedores de dados. O provedor de dados é automaticamente selecionado quando você escolhe o tipo da fonte de dados. A cadeia de caracteres da conexão desse provedor de dados é mostrada na segunda coluna. A consulta na tabela é idêntica à consulta acima, mas foi adicionado um parâmetro no formulário que tem suporte do provedor de dados.

Tipo de fonte de dados

Provedor de dados

Consulta

MicrosoftSQL Server

MicrosoftSQL Server (SqlClient)

Cadeia de conexão:

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

Microsoft OLE DB Provider for SQL Server

Cadeia de conexão:

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

Qualquer provedor de dados .NET Framework registrado

Específico ao provedor.

Nesses exemplos, uma variável foi adicionada à cláusula WHERE da consulta alterando o teste para a palavra "Mountain" para um teste para o valor da variável.

  • O provedor de dados .NET para SQL Server oferece suporte a variáveis nomeadas que começam com o caractere arroba (@). Por exemplo, PM.Name LIKE '%' + @Mountain + '%').

  • O provedor OLE DB para SQL Server não oferece suporte a variáveis nomeadas. Use o caractere ponto de interrogação (?) para especificar uma variável. Os parâmetros passados para o provedor OLE DB devem ser passados na ordem em que ocorrem na cláusula WHERE. Por exemplo, PM.Name LIKE ('%' + ? + '%').

  • O provedor de dados .NET para Oracle oferece suporte a parâmetros numerados que começam com o caractere dois pontos (:). Por exemplo, PM.Name LIKE '%' + :1 + '%').

  • O suporte a variáveis oferecido por outros provedores de dados OLE DB é específico ao provedor de dados. Verifique a documentação do provedor de dados para obter mais informações.

O designer de consulta associado a um tipo de fonte de dados cria um parâmetro de consulta para cada variável identificada. Esses parâmetros de consulta são listados na guia Parâmetro das páginas de propriedades do conjunto de dados. Para cada parâmetro de consulta, um parâmetro de relatório do tipo Cadeia de caracteres é criado. Os valores do parâmetro de consulta definidos para o conjunto de dados são definidos para o parâmetro do relatório correspondente. É possível editar o tipo do parâmetro do relatório e outras propriedades na caixa de diálogo Propriedades do Relatório que pode ser acessada no menu Relatório quando você está em uma Exibição de Dados. Você também pode criar, editar ou excluir esses parâmetros de consulta manualmente. Para obter mais informações, consulte Caixa de diálogo Propriedades do Conjunto de Dados, Parâmetros.

Fontes de dados de banco de dados multidimensional

Para um banco de dados multidimensional, como o Analysis Services, você pode criar consultas usando MDX. Embora essa consulta limite os resultados incluindo uma cláusula de Filtro definida como um valor embutido em código, a consulta ainda não contém uma variável.

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

Para adicionar uma variável ao nome do Modelo do Produto, @ProductModelName, você precisa adicionar uma cláusula FILTER. A tabela a seguir mostra que, para bancos de dados multidimensionais, as variáveis fazem parte de uma cláusula FILTER. O tipo da fonte de dados é o valor escolhido na lista suspensa quando a nova fonte de dados é criada para o Reporting Services. O provedor de dados é automaticamente selecionado quando você escolhe o tipo da fonte de dados. A cadeia de conexão desse provedor de dados também é mostrada na segunda coluna. A consulta na tabela é idêntica à consulta acima, mas foi adicionado um parâmetro no formulário que tem suporte do provedor de dados.

Tipo de fonte de dados

Provedor de dados

Consulta

MicrosoftSQL ServerAnalysis Services

SQL ServerAnalysis Services (AdomdClient)

Cadeia de conexão:

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

MicrosoftProvedor OLE DB para Analysis Services 9.0

Cadeia de conexão:

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

OLE DB para OLAP não oferece suporte a consultas parametrizadas.

Soluções alternativas são descritas neste white paper: "Integrando o Analysis Services com o Reporting Services".

Nesses exemplos, uma variável foi adicionada à cláusula WHERE da consulta alterando o teste para a palavra Mountain para um teste para o valor da variável.

  • O MicrosoftSQL ServerAnalysis Services oferece suporte a parâmetros nomeados na seção Filtro do designer de consulta MDX. Variáveis nomeadas começam com o caractere arroba (@). Por exemplo, @ProductModelName.

  • O Microsoft OLE DB Provider for Analysis Services 9.0 não oferece suporte a consultas parametrizadas. Para obter mais informações, pesquise "Integrando o Analysis Services com o Reporting Services" no msdn.microsoft.com.

  • O suporte a variáveis oferecido por outros provedores de dados multidimensionais é específico ao provedor de dados. Verifique a documentação do provedor de dados para obter mais informações.

O designer de consulta associado a um tipo de fonte de dados cria um parâmetro de consulta para cada variável identificada. Um conjunto de dados especial é criado automaticamente para fornecer valores válidos para cada parâmetro. Esses parâmetros de consulta são listados na guia Parâmetro das páginas de propriedades do conjunto de dados. Para cada parâmetro de consulta, um parâmetro de relatório do tipo Cadeia de caracteres é criado. Os valores do parâmetro de consulta definidos para o conjunto de dados são definidos para o parâmetro do relatório correspondente. Você também pode criar, editar ou excluir esses parâmetros de conjunto de dados manualmente. Para obter mais informações, consulte Como definir parâmetros no Designer de Consulta MDX do Analysis Services.

Os conjuntos de dados para fornecimento de valores válidos para cada consulta serão criados sempre que a consulta for processada.