Funktionen des Berichts-Generators: Multilookup-Funktion in einem paginierten Bericht (Berichts-Generator)
Gilt für: Microsoft Report Builder (SSRS) Power BI Report Builder Report Designer in SQL Server Data Tools
Gibt die Gruppe der ersten übereinstimmenden Werte für die bestimmte Gruppe von Namen aus einem Dataset zurück, das Name-Wert-Paare in einem paginierten Bericht enthält.
Hinweis
Sie können paginierte Berichtsdefinitionsdateien (.rdl) im Berichts-Generator von Microsoft, im Power BI Report Builder und im Berichts-Designer in SQL Server-Datentools erstellen und ändern.
Syntax
Multilookup(source_expression, destination_expression, result_expression, dataset)
Parameter
source_expression
(VariantArray) Ein Ausdruck, der im aktuellen Bereich ausgewertet wird, und der den Satz der zu suchenden Namen oder Schlüssel angibt. Beispiel für einen mehrwertigen Parameter: =Parameters!IDs.value
.
destination_expression
(Variant) Ein Ausdruck, der für jede Zeile in einem Dataset ausgewertet wird, und der den Namen oder den Schlüssel für die Übereinstimmung angibt. Beispiel: =Fields!ID.Value
.
result_expression
(Variant) Ein Ausdruck, der für die Zeile im Dataset ausgewertet wird, für die source_expression = destination_expressiongilt, und der den abzurufenden Wert angibt. Beispiel: =Fields!Name.Value
.
Dataset (dataset)
Eine Konstante, die den Namen eines Datasets im Bericht angibt. Beispiel: "Colors".
Rückgabewert
Gibt einen Wert vom Typ VariantArrayzurück; gibt Nothing zurück, wenn keine Übereinstimmung vorhanden ist.
Bemerkungen
Verwenden Sie Multilookup , um eine Wertemenge aus einem Dataset für Name-Wert-Paare abzurufen, in dem jedes Paar über eine 1:1-Beziehung verfügt. MultiLookup ist mit dem Aufrufen von Lookup für eine Menge von Namen oder Schlüsseln vergleichbar. Beispiel: Für einen mehrwertigen Parameter, der auf Primärschlüsselbezeichnern basiert, können Sie Multilookup in einem Ausdruck in einem Textfeld in einer Tabelle verwenden, um zugeordnete Werte aus einem Dataset abzurufen, das nicht an den Parameter oder die Tabelle gebunden ist.
MitMultilookup wird Folgendes ausgeführt:
Der Quellausdruck wird im aktuellen Bereich ausgewertet, und ein Array von Variant-Objekten wird generiert.
Für jedes Objekt im Array wird die Lookup-Funktion (Berichts-Generator und SSRS) aufgerufen und dem Rückgabearray das Ergebnis hinzugefügt.
Der Satz von Ergebnissen 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 die LookupSet-Funktion (Berichts-Generator und SSRS), um mehrere Werte aus einem Dataset mit Name-Wert-Paaren für einen Namen abzurufen, wenn eine 1:n-Beziehung besteht.
Es gelten folgende Einschränkungen:
Multilookup 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.
Multilookup 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).
Beispiele
A. Verwenden der MultiLookup-Funktion
Es wird angenommen, dass ein Dataset mit dem Namen „Category“ das Feld „CategoryList“ enthält, das eine durch Kommas getrennte Liste von Kategoriebezeichnern enthält, wie z. B. „2, 4, 2, 1“.
Das Dataset "CategoryNames" enthält den Kategoriebezeichner und den Kategorienamen, wie in der folgenden Tabelle gezeigt.
id | Name |
---|---|
1 | Accessories |
2 | Bikes |
3 | Clothing |
4 | Komponenten |
Verwenden Sie für die Suche der Namen, die der Liste der Bezeichner entsprechen, Multilookup. Sie müssen zuerst die Liste in ein Zeichenfolgenarray aufteilen, Multilookup aufrufen, um die Kategorienamen abzurufen, und die Ergebnisse zu einer Zeichenfolge verketten.
Wenn der folgende Ausdruck in ein Textfeld in einem Datenbereich platziert wird, der an das Dataset "Category" gebunden ist, wird "Bikes, Components, Bikes, Accessories" angezeigt:
=Join(MultiLookup(Split(Fields!CategoryList.Value,","),
Fields!CategoryID.Value,Fields!CategoryName.Value,"Category")),
", ")
B. Verwenden von MultiLookup mit mehrwertigen Parametern
Angenommen, ein Dataset "ProductColors" enthält ein Farbbezeichnerfeld "ColorID" und ein Farbwertfeld "Color", wie in der folgenden Tabelle gezeigt.
ColorID | Color |
---|---|
1 | Red |
2 | Blau |
3 | Grün |
Angenommen, der mehrwertige Parameter MyColors ist nicht an ein Dataset für seine verfügbaren Werte gebunden. Die Standardwerte für den Parameter sind auf 2 und 3 festgelegt. Wenn der folgende Ausdruck in einem Textfeld in einer Tabelle platziert wird, werden die ausgewählten Werte für den Parameter zu einer durch Trennzeichen getrennten Liste verkettet, und es wird "Blue, Green" angezeigt.
=Join(MultiLookup(Parameters!MyColors.Value,Fields!ColorID.Value,Fields!Color.Value,"ProductColors"),", ")