Udostępnij za pośrednictwem


Using Query Parameters with Specific Data Sources (Reporting Services)

Podczas definiowania zapytania dla zestawu danych należy wybrać typ źródła danych.Typ źródła danych określa rozszerzenie przetwarzania danych lub zarejestrowanego dostawcę danych programu .NET Framework, który służy do nawiązywania połączenia ze źródłem danych.Dostawca danych to warstwa oprogramowania, która interakcyjnie komunikuje się ze źródłem danych i ustala, w jaki sposób można obsługiwać zmienne występujące w zapytaniu.W tym temacie pokazano, w jaki sposób dla danego zestawu wyników zapytanie zmienia się w zależności od źródła danych, z którym nawiązano połączenia, oraz od tego, czy zawiera ono zmienną z zapytania.

Zmienne zapytania i dostawcy danych

W poniższej tabela przedstawiono wyniki dane z AdventureWorks Przykładowa baza danych. Można utworzyć tego zestaw, uruchamiając wyników Transact-SQL kwerendy przed AdventureWorks Przykładowa baza danych lub MDX query przed Adventure Works Moduł wdrożony jako część AdventureWorks Przykładowe raporty. Zestaw wyników zawiera dwie kolumny: nazwy modeli produktów, zawierające "Mountain" i odpowiednia liczba Internet sprzedaży.

Imię i nazwisko

Sprzedaż internetowa

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

Rower górski 200

3552

Mountain-400-W

543

Rower górski 500

479

Women's Mountain Shorts

1019

W następnej sekcji zostanie wyświetlona kwerendy używane do tworzenia tego zestaw wyników, najpierw z relacyjnej bazy danych, a następnie z wielowymiarowej bazy danych.

Źródła danych w postaci relacyjnych baz danych

For a relational database like Microsoft SQL Server, you can create queries using Transact-SQL.Mimo że to zapytanie ogranicza wyniki za pomocą klauzuli WHERE, która jest ustawiona na stałą wartość, zapytanie nie zawiera jeszcze zmiennej.

Zapytanie języka 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

Aby dodać zmienną o nazwie model produktu PM.Name, należy określić parametr kwerendy w klauzula WHERE. W poniższej tabeli pokazano, w jaki sposób można określić parametry zapytania dla różnych dostawców danych.Dostawca danych jest wybierany automatycznie podczas wybierania typu źródła danych.Parametry połączenia dla tego dostawcy danych są widoczne w drugiej kolumnie.Zapytanie w tabeli jest takie samo jak zapytanie powyżej, ale zawiera dodany parametr, który ma formę obsługiwaną przez dostawcę danych.

Typ źródła danych

Dostawca danych

Query

Microsoft SQL Server

Microsoft SQL Server Klient (SQL)

Parametry połączenia:

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 Dostawca OLE DB dla programu SQL Server

Parametry połączenia:

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

Dowolne zarejestrowany .NET Framework Dostawca danych

Specyficzne dla dostawca.

W tym przykładzie zmienna została dodana do klauzula WHERE kwerendy, zmienianie testu na wyraz "Mountain" do badania określające wartość zmiennej.

  • Dostawca danych programu .NET dla programu SQL Server obsługuje zmienne nazwane, które rozpoczynają się od znaku @.Na przykład PM.Name LIKE '%' + @Mountain + '%').

  • Dostawca OLE DB dla programu SQL Server nie obsługuje zmiennych nazwanych.W celu określenia zmiennej należy użyć znaku zapytania (?).Parametry przekazywane do dostawcy OLE DB muszą być przekazywane w kolejności, w jakiej występują w klauzuli WHERE.Na przykład PM.Name LIKE ('%' + ? + '%').

  • Dostawca danych programu .NET dla programu Oracle obsługuje numerowane parametry, które rozpoczynają się od znaku dwukropka (:).Na przykład PM.Name LIKE '%' + :1 + '%').

  • Obsługa zmiennych przez innych dostawców danych OLE DB jest zależna od dostawcy danych.Aby uzyskać więcej informacji, zobacz dokumentację dostawcy danych.

Projektant zapytań skojarzony z typem źródła danych tworzy parametr zapytania dla każdej zidentyfikowanej zmiennej.Te parametry zapytania są wymienione na karcie Parametr na stronach właściwości zestawu danych.Dla każdego parametru zapytania jest tworzony parametr raportu typu ciąg.Wartości parametrów zapytania definiowane dla zestawu danych są ustawiane na odpowiednie parametry raportu.Typ danych parametru raportu oraz inne właściwości można edytować w oknie dialogowym Parametry raportu, które jest dostępne z menu Raport w widoku danych.Można także ręcznie tworzyć, edytować i usuwać te parametry zapytania.Aby uzyskać więcej informacji zobacz Dataset Properties Dialog Box, Parameters.

Źródła danych w postaci wielowymiarowych baz danych

Wielowymiarowe bazy danych, takich jak Analysis Services, można tworzyć kwerendy z użyciem formuły MDX. Mimo że to zapytanie ogranicza wyniki za pomocą klauzuli Filter, która jest ustawiona na stałą wartość, zapytanie nie zawiera jeszcze zmiennej.

Zapytanie 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

Aby dodać zmienną o nazwie model produktu @ProductModelName, należy dodać klauzulę filtru. W poniższej tabeli pokazano, że w przypadku wielowymiarowych baz danych zmienne są częścią klauzuli FILTER.Typ urządzenie źródłowe danych jest wartością, wybierz z listy rozwijanej, tworząc nowe urządzenie źródłowe danych dla Reporting Services. Dostawca danych jest wybierany automatycznie podczas wybierania typu źródła danych.Parametry połączenia dla tego dostawcy danych są również widoczne w drugiej kolumnie.Zapytanie w tabeli jest takie samo jak zapytanie powyżej, ale zawiera dodany parametr, który ma formę obsługiwaną przez dostawcę danych.

Typ źródła danych

Dostawca danych

Query

Microsoft SQL Server Analysis Services

SQL Server Analysis Services (AdomdClient)

Parametry połączenia:

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

Microsoft OLE DB dostawca for Analysis Services 9.0

Parametry połączenia:

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

OLE DB dla OLAP nie obsługuje kwerendy parametryczne.

Rozwiązania problemu zostały opisane w tym dokumentów: „ IntegracjaAnalysis Services z Reporting Services".

W tym przykładzie zmienna została dodana do klauzula WHERE kwerendy, zmienianie testu dla wyrazu Mountain testu określające wartość zmiennej.

  • The Microsoft SQL Server Analysis Services supports named parameters defined in the Filter section of the MDX query designer.Zmienne nazwane rozpoczynają się od znaku @.Na przykład @ProductModelName.

  • The Microsoft OLE DB dostawca for Analysis Services 9.0 does not support parameterized queries. Aby uzyskać więcej informacji, wyszukaj ciąg „Integrating Analysis Services with Reporting Services” w witrynie msdn.microsoft.com.

  • Obsługa zmiennych przez innych dostawców danych wielowymiarowych jest zależna od dostawcy danych.Aby uzyskać więcej informacji, zobacz dokumentację dostawcy danych.

Projektant zapytań skojarzony z typem źródła danych tworzy parametr zapytania dla każdej zidentyfikowanej zmiennej.Specjalny zestaw danych jest tworzony automatycznie w celu dostarczenia prawidłowych wartości dla każdego parametru.Te parametry zapytania są wymienione na karcie Parametr na stronach właściwości zestawu danych.Dla każdego parametru zapytania jest tworzony parametr raportu typu ciąg.Wartości parametrów zapytania definiowane dla zestawu danych są ustawiane na odpowiednie parametry raportu.Można także ręcznie tworzyć, edytować i usuwać parametry zestawu danych.Aby uzyskać więcej informacji zobacz How to: Define Parameters in the MDX Query Designer for Analysis Services.

Zestawów danych, aby zapewnić prawidłowe wartości dla każdej kwerendy są tworzone za każdym razem, gdy kwerenda jest przetwarzana.