Funkce Tvůrce sestav – funkce LookupSet ve stránkované sestavě (Tvůrce sestav)

Platí pro: Microsoft Report Builder (SSRS) Power BI Report Builder Návrhář sestav v nástrojích SQL Server Data Tools

Vrátí sadu shodných hodnot pro zadaný název z datové sady, která obsahuje páry název/hodnota ve stránkované sestavě.

Poznámka:

Soubory definice stránkované sestavy (.rdl) můžete vytvářet a upravovat v Microsoft Report Builderu, Tvůrci sestav Power BI a v Návrháři sestav v nástrojích SQL Server Data Tools.

Syntaxe

  
LookupSet(source_expression, destination_expression, result_expression, dataset)  

Parametry

source_expression
(Varianta) Výraz, který se vyhodnocuje v aktuálním oboru a který určuje název nebo klíč, který se má vyhledat. Například: =Fields!ID.Value.

destination_expression
(Varianta) Výraz, který se vyhodnocuje pro každý řádek v datové sadě a určuje název nebo klíč, který se má porovnat. Například: =Fields!CustomerID.Value.

result_expression
(Varianta) Výraz, který se vyhodnotí pro řádek v datové sadě, kde source_expression destination_expression = , a určuje hodnotu, která se má načíst. Například: =Fields!PhoneNumber.Value.

dataset
Konstanta, která určuje název datové sady v sestavě. Například ContactInformation.

Vratka

Vrátí VariantArray nebo Nothing, pokud neexistuje žádná shoda.

Poznámky

Použijte LookupSet k načtení sady hodnot ze zadané datové sady pro dvojici název/hodnota, ve které je relace 1:N. Například pro identifikátor zákazníka v tabulce můžete pomocí lookupSet načíst všechna přidružená telefonní čísla pro daného zákazníka z datové sady, která není svázaná s datovou oblastí.

LookupSet provede následující:

  • Vyhodnotí zdrojový výraz v aktuálním oboru.

  • Vyhodnotí cílový výraz pro každý řádek zadané datové sady po použití filtrů na základě kolace zadané datové sady.

  • Pro každou shodu zdrojového a cílového výrazu vyhodnotí výsledný výraz pro daný řádek v datové sadě.

  • Vrátí sadu hodnot výsledného výrazu.

Pokud chcete načíst jednu hodnotu z datové sady s dvojicemi name/value pro zadaný název, kde existuje relace 1:1, použijte funkci Lookup (Tvůrce sestav a SSRS). K volání vyhledávání pro sadu hodnot použijte funkci Multilookup (Tvůrce sestav a SSRS).

Platí následující omezení:

  • LookupSet se vyhodnotí po použití všech výrazů filtru.

  • Podporuje se pouze jedna úroveň vyhledávání. Zdrojový, cílový nebo výsledný výraz nesmí obsahovat odkaz na vyhledávací funkci.

  • Zdrojové a cílové výrazy musí být vyhodnoceny jako stejný datový typ.

  • Zdrojové, cílové a výsledné výrazy nemohou obsahovat odkazy na proměnné v sestavách nebo skupinách.

  • LookupSet nelze použít jako výraz pro následující položky sestavy:

    • Dynamické připojovací řetězce pro zdroj dat

    • Počítaná pole v datové sadě

    • Parametry dotazu v datové sadě

    • Filtry v datové sadě

    • Parametry sestavy

    • Vlastnost Report.Language.

Další informace najdete v tématu Referenční informace o agregačních funkcích (Tvůrce sestav a SSRS) a rozsah výrazů pro součty, agregace a předdefinované kolekce (Tvůrce sestav a SSRS).

Examples

V následujících příkladech předpokládejte, že tabulka je navázána na datovou sadu, která obsahuje identifikátor prodejního území TerritoryGroupID. Samostatná datová sada s názvem "Stores" obsahuje seznam všech obchodů na území a obsahuje ID identifikátoru oblasti a název store StoreName.

A. Použít LookupSet

V následujícím výrazu funkce LookupSet porovnává hodnotu TerritoryGroupID s ID pro každý řádek v datové sadě s názvem Stores. Pro každou zhodu se hodnota pole StoreName pro daný řádek přidá do sady výsledků.

=LookupSet(Fields!TerritoryGroupID.Value, Fields!ID.Value, Fields!StoreName.Value, "Stores")  

B. Vytvoření seznamu výsledků pomocí funkce Join

Vzhledem k tomu, že Funkce LookupSet vrací kolekci objektů, nelze zobrazit výsledný výraz přímo v textovém poli. Hodnotu každého objektu v kolekci můžete zřetězit do jednoho řetězce.

Pomocí funkce Visual Basic Join vytvořte řetězec s oddělovači ze sady objektů. Pomocí čárky jako oddělovače zkombinujte objekty v jednom řádku. V některých zpracovatelích můžete jako oddělovač použít odřádkování jazyka Visual Basic (vbCrLF) k výpisu každé hodnoty na novém řádku.

Následující výraz, pokud se používá jako vlastnost Hodnota textového pole, používá Join k vytvoření seznamu.

=Join(LookupSet(Fields!TerritoryGroupID.Value, Fields!ID.Value, Fields!StoreName.Value, "Stores"),",")  

C. Přidání kódu pro vygenerování kódu HTML

U textových polí, která se vykreslují jenom několikrát, můžete přidat vlastní kód, který vygeneruje kód HTML pro zobrazení hodnot v textovém poli. HTML v textovém poli vyžaduje dodatečné zpracování, takže by to nebylo dobrou volbou pro textové pole, které se vykresluje tisíckrát.

Zkopírujte následující funkce jazyka Visual Basic do bloku kódu v definici sestavy. MakeList přebírá pole objektů vrácené v result_expression a vytvoří neseřazený seznam pomocí značek HTML. Délka vrátí počet položek v poli objektů.

Function MakeList(ByVal items As Object()) As String  
   If items Is Nothing Then  
      Return Nothing  
   End If  
  
   Dim builder As System.Text.StringBuilder =   
      New System.Text.StringBuilder()  
   builder.Append("<ul>")  
  
   For Each item As Object In items  
      builder.Append("<li>")  
      builder.Append(item)  
   Next  
   builder.Append("</ul>")  
  
   Return builder.ToString()  
End Function  
  
Function Length(ByVal items as Object()) as Integer  
   If items is Nothing Then  
      Return 0  
   End If  
   Return items.Length  
End Function  

D. Zavolej funkci

Chcete-li vygenerovat kód HTML, musíte funkci volat. Do vlastnosti Value pro textové pole vložte následující výraz a nastavte typ značky pro text na HTML. Další informace najdete v tématu Přidání KÓDU HTML do sestavy (Tvůrce sestav a SSRS).

=Code.MakeList(LookupSet(Fields!TerritoryGroupID.Value, Fields!ID.Value, Fields!StoreName.Value, "Stores"))