Freigeben über


LookupSet-Funktion (Berichts-Generator und SSRS)

Gibt den Satz übereinstimmenden Werte für den angegebenen Namen aus einem Dataset zurück, der Name/Wert-Paare enthält.

Hinweis

Sie können Berichtsdefinitionen (RDL) im Berichts-Generator und im Berichts-Designer in SQL Server-Datentools erstellen und ändern. Jede Erstellungsumgebung bietet verschiedene Möglichkeiten zum Erstellen, Öffnen und Speichern von Berichten und verwandten Elementen. Weitere Informationen finden Sie unter Entwerfen von Berichten im Berichts-Designer und Berichts-Generator (SSRS) im Web unter microsoft.com.

Syntax

  
LookupSet(source_expression, destination_expression, result_expression, dataset)  

Die Parameter

source_expression
(Variant) Ein Ausdruck, der im aktuellen Bereich ausgewertet wird und den Namen oder Schlüssel angibt, der nachgeschlagen werden soll. Beispiel: =Fields!ID.Value.

destination_expression
(Variant) Ein Ausdruck, der für jede Zeile in einem Dataset ausgewertet wird und den Namen oder Schlüssel angibt, mit dem eine Übereinstimmung erzielt werden soll. Beispiel: =Fields!CustomerID.Value.

result_expression
(Variant) Ein Ausdruck, der für die Zeile im Dataset ausgewertet wird, wo source_expression = destination_expression gleich ist und der den abzurufenden Wert angibt. Beispiel: =Fields!PhoneNumber.Value.

Dataset
Eine Konstante, die den Namen eines Datasets im Bericht angibt. Beispiel: "ContactInformation".

Rückkehr

Gibt ein VariantArray, oder Nothing wenn keine Übereinstimmung vorhanden ist.

Bemerkungen

Verwenden Sie LookupSet zum Abrufen einer Gruppe von Werten aus dem angegebenen Dataset für eine Name-Wert-Zuordnung, wenn eine Eins-zu-viele-Beziehung besteht. Beispielsweise können Sie LookupSet verwenden, um für einen Kundenbezeichner in einer Tabelle alle zugehörigen Telefonnummern für diesen Kunden aus einem Dataset abzurufen, das nicht an den Datenbereich gebunden ist.

LookupSet führt die folgenden Aktionen aus:

  • Der Quellausdruck wird im aktuellen Bereich ausgewertet.

  • Der Zielausdruck wird für jede Zeile des angegebenen Datasets ausgewertet, nachdem Filter angewendet wurden, und zwar anhand der Sortierung des angegebenen Datasets.

  • Für jede Übereinstimmung von Quellausdruck und Zielausdruck wird der Ergebnisausdruck für diese Zeile im Dataset ausgewertet.

  • Der Satz von Ergebnisausdruckswerten wird zurückgegeben.

Verwenden Sie die Lookup-Funktion (Berichts-Generator und SSRS), um einen einzelnen Wert aus einem Dataset mit Name-Wert-Paaren für einen angegebenen Namen abzurufen, wenn eine 1:1-Beziehung vorhanden ist. Verwenden Sie Lookup um eine Reihe von Werten aufzurufen.

Es gelten die folgenden Einschränkungen:

  • LookupSet wird ausgewertet, nachdem alle Filterausdrücke angewendet wurden.

  • Nur eine Suchebene wird unterstützt. Ein Quell-, Ziel- oder Ergebnisausdruck kann keinen Verweis auf eine Suchfunktion einschließen.

  • Quell- und Zielausdrücke müssen den gleichen Datentyp ergeben.

  • Quell-, Ziel- und Ergebnisausdrücke können keine Verweise auf Berichts- oder Gruppenvariablen einschließen.

  • LookupSet Kann nicht als Ausdruck für die folgenden Berichtselemente verwendet werden:

    • Dynamische Verbindungszeichenfolgen für eine Datenquelle.

    • Berechnete Felder in einem Dataset.

    • Abfrageparameter in einem Dataset.

    • Filter in einem Dataset.

    • Berichtsparameter.

    • Die Eigenschaft „Report.Language“.

Weitere Informationen finden Sie in der Aggregatfunktionsreferenz (Berichts-Generator und SSRS) und unter Ausdrucksbereich für Gesamtwerte, Aggregate und integrierte Auflistungen (Berichts-Generator und SSRS).

Beispiel

Gehen Sie im folgenden Beispiel davon aus, dass die Tabelle an ein Dataset gebunden ist, das einen Verkaufsgebietsbezeichner TerritoryGroupID enthält. Ein separates Dataset mit dem Namen "Stores" enthält die Liste aller Läden in einem Gebiet und schließt den Gebietsbezeichner "ID" sowie den Namen des Ladens "StoreName" ein.

Im folgenden Ausdruck LookupSet wird der Wert "TerritoryGroupID" mit der ID für jede Zeile im Dataset mit dem Namen "Stores" verglichen. Für jede Übereinstimmung wird dem Resultset der Wert des Felds "StoreName" für diese Zeile hinzugefügt.

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

Beispiel

Da LookupSet eine Auflistung von Objekten zurückgegeben wird, können Sie den Ergebnisausdruck nicht direkt in einem Textfeld anzeigen. Sie können die Werte der Objekte in der Sammlung als Zeichenfolge verketten.

Verwenden Sie die Visual Basic-Funktion Join , um eine durch Trennzeichen getrennte Zeichenfolge aus einer Gruppe von Objekten zu erstellen. Verwenden Sie ein Komma als Trennzeichen, um die Objekte an einer einzelnen Zeile zu kombinieren. In einigen Renderern könnten Sie einen Visual Basic-Zeilenvorschub (vbCrLF) als Trennzeichen verwenden, um jeden Wert auf einer neuen Zeile aufzulisten.

Der folgende Ausdruck, wenn er als Value-Eigenschaft für ein Textfeld verwendet wird, nutzt Join zur Erstellung einer Liste.

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

Beispiel

Für Textfelder, die nur wenige Male gerendert werden, könnten Sie wahlweise benutzerdefinierten Code hinzufügen, um HTML-Code zum Anzeigen von Werten in einem Textfeld zu generieren. HTML-Code in einem Textfeld erfordert zusätzliche Verarbeitung, deshalb ist dies nicht empfehlenswert für ein Textfeld, das Tausende Male gerendert wird.

Kopieren Sie die folgenden Visual Basic-Funktionen in einen Codeblock in einer Berichtsdefinition. MakeList erstellt aus dem Objektarray, das in result_expression zurückgegeben wird, mithilfe von HTML-Tags eine ungeordnete Liste. Length gibt die Anzahl der Elemente im Objektarray zurück.

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  

Beispiel

Um den HTML-Code zu generieren, müssen Sie die Funktion aufrufen. Fügen Sie den folgenden Ausdruck in die Value-Eigenschaft für das Textfeld ein, und legen Sie den Markuptyp für den Text auf HTML fest. Weitere Informationen finden Sie unter Hinzufügen von HTML in einem Bericht (Berichts-Generator und SSRS).

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

Siehe auch

Ausdrucksverwendungen in Berichten (Berichts-Generator und SSRS)
Beispiele für Ausdrücke (Berichts-Generator und SSRS)
Datentypen in Ausdrücken (Berichts-Generator und SSRS)
Ausdrucksbereich für Gesamtwerte, Aggregate und integrierte Auflistungen (Berichts-Generator und SSRS)