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.
See Also