Udostępnij za pośrednictwem


Using Single-Value and Multivalue Parameters

Parametry mogą być jednowartościowe lub wielowartościowe.Parametr wielowartościowy może mieć kilka wartości.Po zdefiniowaniu listą dostępnych wartości parametru wielowartościowych Reporting Services automatycznie zapewnia Zaznacz wszystko opcji na liście rozwijanej narzędzi raportu. Za pomocą tej opcji można zaznaczyć i wyczyścić wszystkie wartości na liście.

W polach tekstowych na powierzchni projektowej parametry jednowartościowe i wielowartościowe są wyświetlane jako wyrażenia proste rozpoczynające się od symbolu @.Na przykład parametr o nazwie Sklep pojawia się jako [@Store]. Aby uzyskać więcej informacji zobacz Understanding Simple and Complex Expressions (Reporting Services).

Aby zestaw wielowartościowym właściwość dla parametru, należy zaznaczyć Zezwalaj na wiele wartości Opcja właściwość parametru raportu -okno dialogowe.Każdy typ parametru zestaw atrybut z wyjątkiem Boolean.

Podstawowy korzystanie z parametrów wielowartościowego jest umożliwienie dla klauzuli ograniczenie kwerendy, na przykład Transact-SQL Klauzula WHERE lub klauzulę filtru MDX, aby przetestować do włączenia do zbioru wartości zamiast równości na pojedynczą wartość. Aby uzyskać więcej informacji na temat tworzenia wielowartościowego parametrów zobacz Tutorial: Adding Parameters to a Report i Creating Report Parameters and Setting Report Parameter Properties.

Security noteSecurity Note:

W dowolnym raporcie, który zawiera parametr typu String, upewnij się użyć listy dostępnych wartości (nazywane także lista prawidłowych wartości) i upewnij się, że każdy użytkownik, uruchamianie raportu ma tylko uprawnienia, które są wymagane, aby wyświetlić dane w raporcie. Podczas definiowania parametru typu String jest wyświetlane pole tekstowe, w którym użytkownik może wpisać dowolną wartość.Lista dostępnych wartości ogranicza wartości, które można wprowadzić.Jeśli parametr raportu jest powiązany z parametrem zapytania i nie jest używana lista dostępnych wartości, możliwe jest, że użytkownik raportu wpisze w polu tekstowym kod w języku SQL, który potencjalnie może narazić raport oraz serwer na atak polegający na wprowadzeniu kodu SQL.Posiadanie przez użytkownika wystarczających uprawnień do wykonania nowej instrukcji SQL może spowodować powstanie niepożądanych wyników na serwerze.

Jeśli parametr raportu nie jest powiązany z parametrem zapytania, a wartości parametru są uwzględnione w raporcie, możliwe jest, że użytkownik raportu wpisze do wartości parametru kod wyrażenia lub adres URL, a następnie wyrenderuje raport w formacie programu Excel lub formacie HTML.Jeśli następnie inny użytkownik wyświetli raport i kliknie zawartość renderowanego parametru, może w niezamierzony sposób wykonać złośliwy skrypt lub łącze.

Aby zmniejszyć ryzyko niezamierzonego uruchomiania złośliwych skryptów, należy otwierać renderowane raporty tylko z zaufanych źródeł.Aby uzyskać więcej informacji dotyczących sposobu bezpiecznego raportów zobacz Securing Reports and Resources.

Pisanie zapytań dla wielowartościowych parametrów raportu

Parametr wielowartościowy można zdefiniować dla dowolnego utworzonego parametru raportu.Jednak aby przy użyciu zapytań przekazać wiele wartości parametru z powrotem do źródła danych, muszą być spełnione następujące wymagania:

  • Źródłem danych musi być program SQL Server, Oracle, Analysis Services, SAP BI NetWeaver lub Hyperion Essbase.

  • Źródło danych nie może być procedurą przechowywaną.Usługi Reporting Services nie obsługują przekazywania tablicy parametrów wielowartościowych do procedury przechowywanej.

  • W zapytaniu w celu określenia parametru musi być używana klauzula IN.

Poniższy przykład ilustruje użycie słowa kluczowego, IN w klauzula WHERE Transact-SQL Instrukcja. Aby uzyskać więcej informacji na temat słów kluczowych IN lub wyniki zwróconych przez tę kwerendę zobacz IN (Transact-SQL).

SELECT FirstName, LastName, e.Title
FROM HumanResources.Employee AS e
    JOIN Person.Contact AS c 
    ON e.ContactID = c.ContactID
WHERE e.Title IN (@Title)

Aby wypróbować zastosowanie parametru wielowartościowego w raporcie, należy zdefiniować zestaw danych, używając tego zapytania.Zmień w następujący sposób właściwości automatycznie utworzonego parametru raportu Title:

  • Wybierz Multi-Value opcji.

  • W Dostępne wartości, zaznacz Kwerenda nie opcji.Wprowadź poniżej w Wartość kolumna (urlop Etykieta kolumna pustą): Projektowanie odtwarzania, Nabywca, Marketing Asystenta.

  • W Wartości domyślne, enter Nabywca.

  • Uruchom podgląd.Wybierz wartości dla różnych kombinacji Tytuł i sprawdź, czy uzyskanie oczekiwanych wyniki.

Uwaga

Serwer raportów ponownie pisze zapytania dla źródeł danych, które nie mogą przetwarzać parametrów jako tablicy.Ponowne napisanie zapytania jest niezbędne w celu utworzenia oczekiwanych wyników.Ponowne pisanie zapytania jest wyzwalane, gdy parametr jest zdefiniowany jako wielowartościowy, a w zapytaniu instrukcja IN jest używana w celu określenia parametru.Tworząc zapytanie, które nie zawiera instrukcji IN, należy pamiętać, że stanowi to obejście logiki serwera raportów umożliwiającej obsługę parametrów wielowartościowych.

Filtrowanie wyrażenia dla zestawów danych, dane regionów i grupy są definiowane na Filtr strona odpowiadające im Właściwości -okno dialogowe.Jeśli zdefiniowano wyrażenie filtru, które odwołuje się do parametru wielowartościowego, w wyrażeniu filtru należy użyć operatora IN.Wyrażenia filtru używające operatorów innych niż IN powodują powstawanie błędów podczas przetwarzania.Aby uzyskać więcej informacji zobacz How to: Add a Filter (Reporting Services).

Pisanie wyrażeń odwołujących się do parametrów wielowartościowych

Przy odwoływaniu się do parametru w wyrażenie, użyj wbudowane Parameters Kolekcja. Używanie parametrów wielowartościowych w wyrażeniach wymaga znajomości sposobu adresowania pojedynczej wartości oraz całej tablicy wartości.W poniższej tabeli pokazano przykłady i opisy właściwości parametrów, które zostały ustawione tak, aby zezwalały na wiele wartości.

Przykład

Description

Parameters!<ParameterName>.Value

Tablica wartości danych wariantów dla parametru.

Parameters!<ParameterName>.Label

Tablica ciągów będących etykietami dla parametru.

Parameters!<ParameterName>.IsMultiValue

Właściwość logiczna wskazująca, czy parametr Zezwalaj na wiele wartościwybrano opcję .

Parameters!<ParameterName>.Count

Liczba wartości w tablicy.

Parameters!<ParameterName>.Value(0)

Pierwsza wartość w tablicy wielowartościowej.

Parameters!<ParameterName>.Label(0)

Pierwsza etykieta w tablicy wielowartościowej.

Parameters!<ParameterName>.Value(Parameters! <ParameterName>.Count-1)

Ostatnia wartość w tablicy wielowartościowej.

Parameters!<ParameterName>.Label(Parameters! <ParameterName>.Count-1)

Ostatnia etykieta w tablicy wielowartościowej.

=Join(Parameters!<ParameterName>.Value,", ")

Wyrażenie, które wszystkie wartości w tablicy wielowartościowym parametr typu String w jeden ciąg.

=Split("Value1, Value2, Value3",",")

Pobiera ciąg i utworzy tablicę obiektów, które mogą być używane do przekazywania do raportu podraport lub przeglądanie szczegółowe oczekiwano parametr wielowartościowym.

Za pomocą funkcji SPLIT i JOIN można rozdzielać lub łączyć wartości w tablicy w dowolnym wyrażeniu.Za pomocą funkcji STRING i CINT można konwertować te wartości na ciągi lub liczby całkowite.

Aby uzyskać więcej informacji i przykłady wartości pojedynczy i wielowartościowe parametrów w wyrażeniach zobacz Using Parameters Collection References in Expressions (Reporting Services).