Udostępnij przez


Funkcje programu Report Builder — funkcja LookupSet w raporcie podzielonym na strony (Report Builder)

Dotyczy: Microsoft Report Builder (SSRS) Power BI Report Builder Projektant raportów w narzędziu SQL Server Data Tools

Zwraca zestaw pasujących wartości dla określonej nazwy z zestawu danych zawierającego pary nazwa/wartość w raporcie podzielonym na strony.

Uwaga / Notatka

Pliki definicji raportu podzielonego na strony (rdl) można tworzyć i modyfikować w programie Microsoft Report Builder, programie Power BI Report Builder i w projektancie raportów w narzędziach SQL Server Data Tools.

Składnia

  
LookupSet(source_expression, destination_expression, result_expression, dataset)  

Parametry

source_expression
(Wariant) Wyrażenie, które jest oceniane w bieżącym zakresie i określa nazwę lub klucz do wyszukania. Na przykład =Fields!ID.Value.

destination_expression
(Wariant) Wyrażenie, które jest oceniane dla każdego wiersza w zestawie danych i które określa nazwę lub klucz do dopasowania. Na przykład =Fields!CustomerID.Value.

result_expression
(Wariant) Wyrażenie, które jest obliczane dla wiersza w zestawie danych, w którym source_expression = destination_expression, i które określa wartość do pobrania. Na przykład =Fields!PhoneNumber.Value.

dataset
Stała określająca nazwę zestawu danych w raporcie. Na przykład "ContactInformation".

Zwrot

Zwraca argument VariantArray lub Nic , jeśli nie ma dopasowania.

Uwagi

Użyj funkcji LookupSet , aby pobrać zestaw wartości z określonego zestawu danych dla pary nazwa/wartość, w której istnieje relacja od 1 do wielu. Na przykład w przypadku identyfikatora klienta w tabeli można użyć funkcji LookupSet , aby pobrać wszystkie skojarzone numery telefonów dla tego klienta z zestawu danych, który nie jest powiązany z regionem danych.

Funkcja LookupSet wykonuje następujące czynności:

  • Oblicza wyrażenie źródłowe w bieżącym zakresie.

  • Oblicza wyrażenie docelowe dla każdego wiersza określonego zestawu danych po zastosowaniu filtrów na podstawie sortowania określonego zestawu danych.

  • Dla każdego dopasowania wyrażenia źródłowego i wyrażenia docelowego oblicza wyrażenie wyniku dla tego wiersza w zestawie danych.

  • Zwraca zestaw wartości wyrażeń wyników.

Aby pobrać pojedynczą wartość z zestawu danych z parami nazwa/wartość dla określonej nazwy, w której istnieje relacja od 1 do 1, użyj funkcji Lookup (Report Builder i SSRS). Aby wywołać funkcję Lookup dla zestawu wartości, użyj funkcji Multilookup (Report Builder i SSRS).

Obowiązują następujące ograniczenia:

  • Funkcja LookupSet jest oceniana po zastosowaniu wszystkich wyrażeń filtru.

  • Obsługiwany jest tylko jeden poziom wyszukiwania. Wyrażenie źródłowe, docelowe lub wynikowe nie może zawierać odwołania do funkcji wyszukiwania.

  • Wyrażenia źródłowe i docelowe muszą być obliczane dla tego samego typu danych.

  • Wyrażenia źródłowe, docelowe i wynikowe nie mogą zawierać odwołań do zmiennych raportu lub grupy.

  • Nie można użyć elementu LookupSet jako wyrażenia dla następujących elementów raportu:

    • Parametry połączenia dynamicznego dla źródła danych.

    • Pola obliczeniowe w zestawie danych.

    • Parametry zapytania w zestawie danych.

    • Filtry w zestawie danych.

    • Parametry raportu.

    • Właściwość Report.Language.

Aby uzyskać więcej informacji, zapoznaj się z Odwołanie do funkcji agregujących (Report Builder i SSRS) i Zakres wyrażeń dla sum, agregacji i wbudowanych kolekcji (Report Builder i SSRS).

Przykłady

W poniższych przykładach załóżmy, że tabela jest powiązana z zestawem danych zawierającym identyfikator terytorium sprzedaży TerritoryGroupID. Oddzielny zestaw danych o nazwie "Stores" zawiera listę wszystkich magazynów na terytorium i zawiera identyfikator terytorium oraz nazwę sklepu StoreName.

A. Korzystanie z elementu LookupSet

W następującym wyrażeniu funkcja LookupSet porównuje wartość TerritoryGroupID do ID dla każdego wiersza w zestawie danych o nazwie "Stores". Dla każdego dopasowania wartość pola StoreName dla tego wiersza jest dodawana do zestawu wyników.

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

B. Tworzenie listy wyników za pomocą funkcji Join

Ponieważ funkcja LookupSet zwraca kolekcję obiektów, nie można wyświetlić wyrażenia wyniku bezpośrednio w polu tekstowym. Możesz połączyć wartość każdego obiektu w kolekcji jako ciąg.

Użyj funkcji Visual Basic Join , aby utworzyć rozdzielany ciąg z zestawu obiektów. Użyj przecinka jako separatora, aby połączyć obiekty w jednym wierszu. W niektórych programach renderujących możesz użyć kanału informacyjnego języka Visual Basic (vbCrLF) jako separatora, aby wyświetlić listę każdej wartości w nowym wierszu.

Poniższe wyrażenie, gdy jest używane jako właściwość Value dla pola tekstowego, używa funkcji Join do utworzenia listy.

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

C. Dodawanie kodu w celu wygenerowania kodu HTML

W przypadku pól tekstowych renderowanych tylko kilka razy możesz dodać niestandardowy kod do wygenerowania kodu HTML w celu wyświetlenia wartości w polu tekstowym. Kod HTML w polu tekstowym wymaga dodatkowego przetwarzania, więc nie byłoby to dobrym wyborem dla pola tekstowego renderowanego tysiące razy.

Skopiuj następujące funkcje języka Visual Basic do bloku Code w definicji raportu. Funkcja MakeList pobiera tablicę obiektów zwracaną w result_expression i tworzy nieurządkowaną listę przy użyciu tagów HTML. Długość zwraca liczbę elementów w tablicy obiektów.

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. Wywołaj funkcję

Aby wygenerować kod HTML, należy wywołać funkcję . Wklej następujące wyrażenie we właściwości 'Wartość' pola tekstu i ustaw typ formatowania dla tekstu na 'HTML'. Aby uzyskać więcej informacji, zobacz Dodawanie kodu HTML do raportu (Report Builder i SSRS).

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