Multilookup-Funktion (Berichts-Generator 3.0 und SSRS)

Gibt die Menge der ersten übereinstimmenden Werte für die angegebene Menge von Namen aus einem Dataset mit Name-Wert-Paaren zurück.

HinweisHinweis

Sie können Berichtsdefinitionen (RDL) in Berichts-Generator 3.0 und im Berichts-Designer in Business Intelligence Development Studio erstellen und ändern. Jede Erstellungsumgebung bietet verschiedene Methoden zum Erstellen, Öffnen und Speichern von Berichten und verwandten Elementen. Weitere Informationen finden Sie unter Entwerfen von Berichten in Berichts-Designer und Berichts-Generator 3.0 (SSRS) im Web auf microsoft.com.

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 gilt source_expression = destination_expression, und der den abzurufenden Wert angibt. Beispiel: =Fields!Name.Value.

  • dataset
    Eine Konstante, die den Namen eines Datasets im Bericht angibt. Beispiel: "Colors".

Rückgabewert

Gibt einen Wert vom Typ VariantArray zurück; gibt Nothing zurück, wenn keine Übereinstimmung vorhanden ist.

Hinweise

Rufen Sie mithilfe von Multilookup einen Satz von Werten aus einem Dataset mit Name-Wert-Paaren ab, bei denen für jedes Paar eine 1:1-Beziehung besteht. MultiLookup entspricht dem Aufruf von Lookup für einen Satz von Namen oder Schlüsseln. 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.

Mit Multilookup 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 Suchfunktion (Report Builder 3.0 und SSRS) aufgerufen und dem Rückgabearray das Ergebnis hinzugefügt.

  • Der Satz von Ergebnissen wird zurückgegeben.

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 Suchfunktion (Report Builder 3.0 und SSRS). Um mehrere Werte aus einem Dataset mit Name-Wert-Paaren für einen Namen abzurufen, wenn eine 1:n-Beziehung besteht, verwenden Sie LookupSet-Funktion (Report Builder 3.0 und SSRS).

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 Report.Language-Eigenschaft.

Weitere Informationen finden Sie unter Aggregatfunktionsreferenz (Report Builder 3.0 und SSRS) und Grundlegendes zum Ausdrucksbereich für Gesamtwerte, Aggregate und integrierte Auflistungen (Report Builder 3.0 und SSRS).

Beispiel

Angenommen, ein Dataset mit dem Namen "Category" enthält das Feld CategoryList, das eine durch Trennzeichen 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

Components

Verwenden Sie Multilookup, um die Namen nachzuschlagen, die der Liste der Bezeichner entsprechen. 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")),
   ", ")

Angenommen, ein Dataset mit der Bezeichnung "ProductColors" enthält ein Farbbezeichnerfeld mit dem Namen ColorID und ein Farbwertfeld mit dem Namen Color, wie in der folgenden Tabelle gezeigt.

ColorID

Farbe

1

Rot

2

Blau

3

Grün

Angenommen, der mehrwertige Parameter MyColors ist nicht an ein Dataset für die 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"),", ")