Použití parametrů s jednou hodnotou a více hodnotami v dotazech a výrazech (Tvůrce sestav 3.0)

SQL Server 2008 R2

Parametry mohou mít jednu hodnotu nebo více hodnot. Parametr s více hodnotami lze nastavit na více než jednu hodnotu. Když definujete seznam dostupných hodnot pro parametr s více hodnotami, automaticky nabízí v rozevíracím seznamu panelu nástrojů sestavy možnost Vybrat vše. Pomocí této možnosti lze vybrat všechny hodnoty v seznamu nebo jejich výběr naopak zrušit.

V textových polích na ploše návrhu se jednohodnotové i vícehodnotové parametry zobrazí jako jednoduché výrazy začínající symbolem @. Například parametr s názvem Store se zobrazí takto: [@Store]. Další informace naleznete v tématu Parametry (Tvůrce sestav 3.0).

Chcete-li pro parametr nastavit vlastnost s více hodnotami, vyberte v dialogovém okně Vlastnosti parametru sestavy možnostPovolit více hodnot. Jako vícehodnotový parametr lze nastavit všechny typy parametrů kromě parametru Boolean.

Primárním použitím parametrů s více hodnotami je povolit klauzuli pro omezení dotazu, například Transact-SQL klauzuli WHERE nebo MDX Filter, testovat zahrnutí do sady hodnot místo rovnosti s jednou hodnotou.

Poznámka k zabezpečení Poznámka k zabezpečení

V sestavě, která obsahuje parametr typu String, musíte použít seznam dostupných hodnot (říká se mu i seznam platných hodnot) a uživatel spouštějící sestavu musí mít pouze oprávnění potřebná k zobrazení dat v sestavě. Další informace naleznete v tématu Zabezpečení (Tvůrce sestav 3.0).

Jako parametr s více hodnotami můžete definovat jakýkoli parametr sestavy, který vytvoříte. Pokud však chcete předat hodnoty vícehodnotového parametru zpět zdroji dat pomocí dotazu, musí být splněny následující požadavky:

  • Je nutné používat jeden z následujících zdrojů dat: SQL Server, SQL Azure, SQL Server 2008 R2 Parallel Data Warehouse, Oracle, Analysis Services, SAP BI NetWeaver nebo Hyperion Essbase.

  • Zdrojem dat nemůže být uložená procedura. Služba Reporting Services nepodporuje předávání pole vícehodnotového parametru uložené proceduře.

  • V dotazu je nutné zadat parametr pomocí klauzule IN.

V následujícím příkladě je vidět použití klíčového slova IN v klauzuli WHERE příkazu Transact-SQL. Další informace o klíčovém slově IN nebo výsledcích vrácených tímto dotazem, naleznete v tématu IN (Transact-SQL) na webu SQL Server – Knihy online.

SELECT FirstName, LastName, e.JobTitle
FROM HumanResources.Employee AS e
    JOIN Person.Person AS p 
    ON e.BusinessEntityID = p.BusinessEntityIDID
WHERE e.Title IN (@Title);

PoznámkaPoznámka

Používaná verze zprostředkovatele dat určuje podporu pro syntaxi parametru. Pokud zprostředkovatel dat nepodporuje pojmenované parametry, použijte syntaxi, která je podporována externím zdrojem dat. Například v některých verzích SQL je používán otazník (?) jako značení parametru.

Chcete-li s touto sestavou experimentovat, definujte pomocí tohoto dotazu datovou sadu. Změňte vlastnosti pro automaticky vytvořený parametr sestavy Title (Nadpis), a to následujícím způsobem:

  • Vyberte možnost Vícehodnotový.

  • V části Dostupné hodnoty vyberte možnost Bez dotazu. Zadejte následující seznam do sloupce Hodnota (sloupec Popisek nechejte prázdný): Inženýr projektant, Nákupčí, Asistent pro marketing.

  • V části Výchozí hodnoty zadejte hodnotu Nákupčí.

  • Zobrazte náhled. Vyberte různé kombinace hodnot pro možnost Název a ověřte, zda se zobrazují očekávané výsledky.

PoznámkaPoznámka

Server sestav přepíše dotazy pro zdroje dat, které nemohou zpracovat parametry jako pole. Přepsání dotazu je nezbytné k tomu, aby bylo možné dosáhnout požadovaného výsledku. Přepsání dotazu je spuštěno v případě, že je parametr definován jako vícehodnotový a dotaz k zadání parametru používá příkaz IN. Jestliže vytvoříte dotaz, který nebude zahrnovat příkaz IN, je třeba si uvědomit, že tím obcházíte logiku serveru sestav pro podporu vícehodnotových parametrů.

Výrazy filtrů pro datové sady, oblasti dat a skupiny jsou definovány na stránce Filtr odpovídajícího dialogového okna Vlastnosti. Jestliže jste definovali výraz filtru odkazující na vícehodnotový parametr, je nutné ve výrazu filtru použít operátor IN. Výsledkem výrazů filtrů používajících jiné operátory než IN budou chyby zpracování. Další informace naleznete v tématu Postup: Přidání filtru do datové sady (Tvůrce sestav 3.0).

Při odkazování na parametr ve výrazu použijete předdefinovanou kolekci Parameters. Při používání vícehodnotových parametrů ve výrazech je nutné pochopit, jak adresovat jednu hodnotu a celé pole hodnot. Následující tabulka obsahuje příklady a popisy vlastností parametrů, které jsou nastaveny tak, aby pro ně bylo možné zadat více hodnot.

Příklad

Popis

Parameters! <ParameterName> .Value

Pole hodnot dat varianty pro parametr.

Parameters! <ParameterName> .Label

Pole řetězců, které jsou popisky parametru.

Parameters! <ParameterName> .IsMultiValue

Logická vlastnost (Boolean) označující, zda byla vybrána možnost parametru Povolit více hodnot.

Parameters! <ParameterName> .Count

Počet hodnot v poli.

Parameters! <ParameterName> .Value(0)

První hodnota vícehodnotového pole.

Parameters! <ParameterName> .Label(0)

První popisek vícehodnotového pole.

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

Poslední hodnota vícehodnotového pole.

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

Poslední popisek vícehodnotového pole.

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

Výraz, který zřetězí všechny hodnoty v poli vícehodnotového parametru typu String do jednoho řetězce.

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

Vytvoří pomocí řetězce pole objektů, které lze použít pro předání do podsestavy nebo sestavy podrobností očekávající vícehodnotový parametr.

Pomocí funkcí SPLIT a JOIN lze oddělit a sloučit hodnoty v poli v libovolném výrazu. Pomocí funkcí STRING a CINT lze převést hodnoty na řetězce nebo celá čísla.

Další informace o vytváření kaskádovitých parametrů s více hodnotami a zahrnutí funkce Vybrat vše naleznete v tématu How to have a Select All Multivalue Cascading Parameter (Jak získat kaskádovitý parametr s více hodnotami s využitím funkce Vybrat Vše).

Další informace a příklady jednohodnotových a vícehodnotových parametrů ve výrazech naleznete v tématu Použití odkazů na kolekce parametrů ve výrazech (Tvůrce sestav 3.0).

Obsah vytvořený komunitou

Přidat
Zobrazit: