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.
Consulte também