Freigeben über


Verwenden von einwertigen und mehrwertigen Parametern

Aktualisiert: 12. Dezember 2006

Parameter können ein- oder mehrwertig sein. Ein mehrwertiger Parameter kann auf mehrere Werte festgelegt werden. Wenn Sie eine Liste der verfügbaren Werte für einen mehrwertigen Parameter definieren, stellt Reporting Services auf der Berichtssymbolleiste in der Dropdownliste automatisch eine Option Alles auswählen bereit. Mit dieser Option können Sie alle Werte in der Liste auswählen oder deren Auswahl aufheben.

Aa337292.note(de-de,SQL.90).gifHinweis:
Die Option Alles auswählen wurde für SQL Server 2005 Service Pack 1 deaktiviert, sie wurde jedoch in SQL Server 2005 Service Pack 2 wiederhergestellt.

Zum Festlegen der mehrwertigen Eigenschaft eines Parameters wählen Sie im Dialogfeld Berichtsparameter die Option Mehrwertig aus. Sie können alle Parametertypen außer Boolean auf mehrwertig festlegen.

Mehrwertige Parameter dienen in erster Linie dazu, Abfrageeinschränkungsklauseln wie Transact-SQL-WHERE-Klauseln oder MDX-Filterklauseln eine Prüfung auf Enthaltensein in einer Menge von Werten anstelle einer Prüfung auf Übereinstimmung mit einem einzelnen Wert zu ermöglichen. Weitere Informationen zum Erstellen von mehrwertigen Parametern finden Sie im Lernprogramm: Hinzufügen von Parametern zu einem einfachen Tabellenbericht und unter Erstellen von Berichtsparametern und Festlegen von Berichtsparametereigenschaften.

Aa337292.security(de-de,SQL.90).gifSicherheitshinweis:
Verwenden Sie in einem Bericht, der einen Parameter vom Typ String enthält, eine Liste der verfügbaren Werte (wird auch als Liste der gültigen Werte bezeichnet), und stellen Sie sicher, dass Benutzer, die den Bericht ausführen, nur über die Berechtigungen verfügen, die zum Anzeigen der Daten im Bericht erforderlich sind. Wenn Sie einen Parameter vom Typ String definieren, wird für den Benutzer ein Textfeld bereitgestellt, das jeden beliebigen Wert annehmen kann. Mit einer Liste der verfügbaren Werte werden die Werte eingeschränkt, die eingegeben werden können. Wenn der Berichtsparameter an einen Abfrageparameter gebunden ist und Sie keine Liste mit verfügbaren Werten verwenden, kann ein Benutzer des Berichts SQL-Syntax in das Textfeld eingeben. Damit öffnet er den Bericht und Ihren Server potenziell für einen SQL-Injection-Angriff. Wenn der Benutzer über Berechtigungen zum Ausführen der neuen SQL-Anweisung verfügt, können daraus unerwünschte Ergebnisse auf dem Server resultieren. Wenn ein Berichtsparameter nicht an einen Abfrageparameter gebunden ist und die Parameterwerte im Bericht enthalten sind, können die Benutzer des Berichts Ausdruckssyntax oder einen URL in den Parameterwert eingeben und den Bericht für Excel oder HTML rendern. Wenn anschließend ein anderer Benutzer den Bericht anzeigt und auf die gerenderten Parameterinhalte klickt, führt der Benutzer möglicherweise unbeabsichtigt das bösartige Skript bzw. die bösartige Verknüpfung aus. Wenn Sie das Risiko des unbeabsichtigten Ausführens von böswilligen Skripts minimieren möchten, öffnen Sie gerenderte Berichte nur über vertrauenswürdige Quellen. Weitere Informationen zum Sichern von Berichten finden Sie unter Sichern von Berichten und Ressourcen.

Schreiben von Abfragen mit Zuordnungen zu mehrwertigen Berichtsparametern

Sie können einen mehrwertigen Parameter für jeden von Ihnen erstellten Berichtsparameter definieren. Wenn Sie jedoch Werte von mehrwertigen Parametern an eine Abfrage zurückgeben möchten, müssen die folgenden Anforderungen erfüllt sein:

  • Bei der Datenquelle muss es sich um SQL Server, Oracle oder Analysis Services handeln.
  • Bei der Datenquelle kann es sich nicht um eine gespeicherte Prozedur handeln. Das Übergeben eines Arrays von mehrwertigen Parametern an eine gespeicherte Prozedur wird von Reporting Services nicht unterstützt.
  • In der Abfrage muss eine IN-Klausel zum Angeben des Parameters verwendet werden.

Das folgende Beispiel veranschaulicht die Verwendung des IN-Schlüsselwortes in der WHERE-Klausel einer Transact-SQL-Anweisung. Weitere Informationen zum IN-Schlüsselwort oder zu den von dieser Abfrage zurückgegebenen Ergebnissen finden Sie unter IN (Transact-SQL).

SELECT FirstName, LastName, e.Title
FROM HumanResources.Employee AS e
    JOIN Person.Contact AS c 
    ON e.ContactID = c.ContactID
WHERE e.Title IN (@Title)

Um dies in einem Bericht zu auszuprobieren, definieren Sie mithilfe dieser Abfrage ein Dataset. Ändern Sie die Eigenschaften für den automatisch erstellten Berichtsparameter Title wie folgt:

  • Wählen Sie die Option Mehrwertig aus.
  • Wählen Sie unter Verfügbare Werte die Option Nicht abgefragt aus. Geben Sie in der Spalte Wert die folgenden Liste ein (lassen Sie die Spalte Bezeichnung leer): Design Engineer, Buyer, Marketing Assistant.
  • Geben Sie in das Feld Standardwerte den Text Buyer ein.
  • Zeigen Sie eine Vorschau an. Wählen Sie für Title verschiedene Wertekombinationen aus, und überprüfen Sie, ob Sie die gewünschten Ergebnisse erhalten.
Aa337292.note(de-de,SQL.90).gifHinweis:
Abfragen für Datenquellen, die Parameter nicht als Array verarbeiten können, werden vom Berichtsserver neu geschrieben. Das Neuschreiben der Abfrage ist erforderlich, um das gewünschte Ergebnis zu erzielen. Ein Neuschreiben der Abfrage wird ausgelöst, wenn ein Parameter als mehrwertig definiert ist und in der Abfrage eine IN-Anweisung zum Angeben des Parameters verwendet wird. Wenn Sie eine Abfrage erstellen, die die IN-Anweisung nicht enthält, beachten Sie, dass Sie die Logik umgehen, die der Berichtsserver für die Unterstützung von mehrwertigen Parametern bereitstellt.

Filterausdrücke für Datasets, Datengruppierungen und Datenbereiche werden auf der Registerkarte Filter der entsprechenden Eigenschaftenseiten definiert. Wenn Sie einen Filterausdruck definiert haben, der sich auf einen mehrwertigen Parameter bezieht, müssen Sie den IN-Operator im Filterausdruck verwenden. Filterausdrücke, die andere Operatoren als IN verwenden, verursachen Verarbeitungsfehler. Weitere Informationen finden Sie unter Vorgehensweise: Hinzufügen eines Filters (Berichts-Designer).

Schreiben von Ausdrücken, die auf mehrwertige Parameter verweisen

Um in einem Ausdruck auf einen Parameter zu verweisen, verwenden Sie die globale Auflistung Parameters. Um in einem Ausdruck einen mehrwertigen Parameter verwenden zu können, müssen Sie verstehen, wie ein einzelner Wert und wie ein gesamtes Array von Werten adressiert wird. Die folgenden Tabelle enthält Beispiele und Beschreibungen von Eigenschaften für Parameter, für die die Option Mehrwertig festgelegt ist.

Beispiel: Description

Parameters!<ParameterName>.Value

Ein Array von VARIANT-Datenwerten für den Parameter.

Parameters!<ParameterName>.Label

Ein Array von Zeichenfolgen, die Bezeichnungen für den Parameter darstellen.

Parameters!<ParameterName>.IsMultiValue

Eine boolesche Eigenschaft, die angibt, ob für den Parameter die Option Mehrwertig festgelegt ist.

Parameters!<ParameterName>.Count

Die Anzahl der Werte im Array.

Parameters!<ParameterName>.Value(0)

Der erste Wert in einem mehrwertigen Array.

Parameters!<ParameterName>.Label(0)

Die erste Bezeichnung in einem mehrwertigen Array.

Parameters!<ParameterName>.Value(Parameters! <ParameterName>.Count-1)

Der letzte Wert in einem mehrwertigen Array.

Parameters!<ParameterName>.Label(Parameters! <ParameterName>.Count-1)

Die letzte Bezeichnung in einem mehrwertigen Array.

=Join(Parameters!<ParameterName>.Value,", ")

Ein Ausdruck, der alle Werte im Array eines mehrwertigen Parameters vom Typ String zu einer Zeichenfolge verkettet.

=Split("Value1, Value2, Value3",",")

Nimmt eine Zeichenfolge und erstellt ein Array von Objekten, das zur Übergabe an einen Unterbericht oder Drillthroughbericht, der einen mehrwertigen Parameter erwartet, verwendet werden kann.

Mithilfe der Funktionen SPLIT und JOIN können Sie in beliebigen Ausdrücken Werte in Arrays trennen oder kombinieren. Sie können die Funktionen STRING und CINT verwenden, um die Werte in Zeichenfolgen oder Werte für ganze Zahlen zu konvertieren.

Weitere Informationen und Beispiele ein- und mehrwertiger Parameter in Ausdrücken finden Sie unter Verwenden von Parametern in Ausdrücken.

Änderungsverlauf

Version Verlauf

12. Dezember 2006

Geänderter Inhalt:
  • Alles auswählen wurde in SP2 wiederhergestellt.

Siehe auch

Aufgaben

Vorgehensweise: Hinzufügen, Bearbeiten oder Löschen eines Berichtsparameters (Berichts-Designer)

Konzepte

Festlegen von Parametereigenschaften für einen publizierten Bericht
Verwenden von Parametern in Ausdrücken
Verwenden von Parametern in Ausdrücken

Andere Ressourcen

Lernprogramm: Hinzufügen von Parametern zu einem einfachen Tabellenbericht
Lernprogramm: Erweiterte Features und Parameter
Berichtsparameter (Berichts-Designer)

Hilfe und Informationen

Informationsquellen für SQL Server 2005