Verwenden von Parametern zum Steuern der Berichtsdaten (Berichts-Generator 2.0)

Es gibt zwei Möglichkeiten für die Verwendung von Berichtsparametern: Filtern von Daten in der Datenquelle oder Filtern von Daten im Bericht. Durch das Filtern der Daten in der Datenquelle kann die Leistung beim Verarbeiten und Anzeigen eines Berichts verbessert werden. Wenn Sie Daten nicht in der Datenquelle filtern können, können Sie die Berichtsdaten mit Parametern im Bericht filtern. Mit Parametern können Sie außerdem Daten in einem Bericht sortieren und anordnen.

Einen Überblick über das Filtern von Daten finden Sie unter Filtern von Berichtsdaten in einem Bericht (Berichts-Generator 2.0).

In diesem Thema erfahren Sie, wie Daten mit Parametern gefiltert werden.

Filtern von Daten in der Datenquelle

Verwenden Sie in Ihrer Datasetabfrage Abfrageparameter, um Daten in der Datenquelle zu filtern. In einigen Abfrage-Designern können Sie Felder zu einem Filterbereich hinzufügen und eine Parameteroption für jedes Feld wählen, das als Berichtsparameter verwendet werden soll. In anderen Abfrage-Designern können Sie Abfrageparameter dem Abfragebefehl hinzufügen. Wenn Sie die Abfrage speichern, wird der Befehlstext analysiert. Für jeden Abfrageparameter wird ein entsprechenden Berichtsparameter erstellt. Verwenden Sie den Knoten Parameter im Berichtsdatenbereich, um die Liste der Berichtsparameter anzuzeigen.

Bei der Ausführung eines Berichts wählt der Benutzer Werte für jeden Berichtsparameter. Diese Werte werden an die Abfrage übergeben. Wenn die Abfrage in der Datenquelle ausgeführt wird, werden nur die vom Benutzer angegebenen Werte für den Bericht abgerufen. Sie können auch die Eingabeaufforderung angeben, die den Berichtsparameter auf der Berichtssymbolleiste bezeichnet.

Abfrageparameter

Beim Definieren von Abfrageparametern werden automatisch Berichtsparameter erstellt.

Bei der Definition eines Datasets geben Sie einen bestimmten Typ von Datenquelle an, beispielsweise MicrosoftSQL Server. Wenn Sie die Abfrage für die einzelnen Datasets definieren, identifiziert der zugehörige Abfrage-Designer die Variablen im Befehlstext der Abfrage und erstellt zu jeder Variablen einen Abfrageparameter. Nicht jede Datenquellen- und Datenanbieterkombination unterstützt Abfragen mit Variablen. Weitere Informationen zu der von der Datenquelle erwarteten Abfragesyntax finden Sie unter Verwenden von Abfrageparametern mit bestimmten Datenquellen (Berichts-Generator 2.0).

Bei einer SQL Server-Datenquelle enthält die Abfrage in der Regel Variablen in der WHERE-Klausel einer Transact-SQL-Anweisung, um den von der Abfrage zurückzugebenden Datenbereich einzuschränken. Der relationale Abfrage-Designer erstellt automatisch eine Abfrage und stellt eine Option bereit, mit der eine Abfragevariable für jeden festgelegten Filter erstellt werden kann. Weitere Informationen finden Sie unter Benutzeroberfläche des relationalen Abfrage-Designers (Berichts-Generator 2.0).

Entsprechend enthält die Abfrage für eine Analysis Services-Datenquelle in der Regel MDX-Variablen in einer FILTER-Klausel. Abfragen können auch Variablen enthalten, die als Eingabe an gespeicherte Prozeduren oder benutzerdefinierte Funktionen übergeben werden.

Nach jeder Änderung der Abfrage für ein Dataset wird die Abfrage erneut verarbeitet. Wenn Sie eine Abfrage ändern, indem Sie eine Variable entfernen oder umbenennen, spiegeln sich diese Änderungen in den Abfrageparametern wider.

Auf der Seite Parameter des Dialogfelds Dataseteigenschaften können Sie weitere Datasetparameter erstellen. Parameter, die Sie erstellen, werden nicht geändert, wenn sich die Abfrage ändert.

Der Standardwert jedes Abfrageparameters wird auf einen Ausdruck festgelegt, der zum entsprechenden Berichtsparameter ausgewertet wird. Auf der Seite Parameter des Dialogfelds Dataseteigenschaften können Sie den Standardwert ändern. Wenn z. B. für eine SQL Server-Datenquelle der Abfrageparameter @MyParameter lautet, ist der Berichtsparameter MyParameter, und der Wert von @MyParameter wird auf den Ausdruck [@MyParameter] festgelegt. Weitere Informationen finden Sie unter Dataseteigenschaften (Dialogfeld), Parameter (Berichts-Generator 2.0). Sie können die Abfrageparameter manuell bearbeiten und ihre Standardwerte festlegen. Weitere Informationen finden Sie unter Vorgehensweise: Zuordnen eines Abfrageparameters zu einem Berichtsparameter (Reporting Services) (Berichts-Generator 2.0).

Berichtsparameter, die automatisch erstellt werden, verwenden die folgenden Standardwerte:

  • Einzelwert

  • Datentyp Text

  • Auf den Namen des Parameters eingestellte Eingabeaufforderung

  • Keine Standardwerte

  • Keine verfügbaren Werte

Möglicherweise müssen Sie diese Eigenschaften auf Grundlage des Datentyps des Abfrageparameters ändern. Weitere Informationen finden Sie unter Erstellen von Berichtsparametern und Festlegen von Berichtsparametereigenschaften (Berichts-Generator 2.0).

HinweisHinweis

Wenn Sie den Namen eines Abfrageparameters entfernen oder ändern, wird der entsprechende Berichtsparameter nicht automatisch mit entfernt bzw. umbenannt. Wenn Sie einen Abfrageparameter entfernen und den entsprechenden Berichtsparameter nicht benötigen, müssen Sie ihn manuell löschen. Wenn Sie den Namen eines Abfrageparameters ändern, wird beim Speichern der Abfrage ein entsprechend neuer Berichtsparameter erstellt. Sie können den Berichtsparameter umbenennen, sodass er dem neuen Abfrageparameternamen entspricht, und die Dataset-Parametereigenschaften aktualisieren, um den Abfrageparameter mit dem Berichtsparameter zu verknüpfen.

In Berichts-Generator 1.0 werden Berichtsparameter automatisch erstellt, wenn Sie eine Eingabeaufforderung für eine Filterklausel festlegen.

Abhängige oder kaskadierende Parameter

Wenn Sie eine Abfrage erstellen, die mehrere Abfrageparameter verwendet, können Sie einen Satz kaskadierender Parameter erstellen. Kaskadierende Parameter bieten eine Möglichkeit, eine sehr große Anzahl von Parameterwerten so zu filtern, dass eine verwaltbare Anzahl von Werten übrig bleibt. Angenommen, eine Abfrage enthält die Parameters @Kategorie, @Unterkategorie und @Produkt, wobei die Liste der Unterkategorien von der @Kategorie und die Liste der Produkte von der @Unterkategorie abhängig ist. Wenn ein Benutzer einen Wert für den Berichtsparameter "Kategorie" auswählt, werden die Werte für die Unterkategorie auf die gültigen Werte für die ausgewählte Kategorie beschränkt. Nachdem der Benutzer einen Wert für die Unterkategorie ausgewählt hat, wurde die Auswahl für "Produkt" bereits durch die Auswahl der Kategorie und der Unterkategorie gefiltert. Auf diese Weise können Sie die gültige Auswahl für einen Parameter auf eine angemessene Anzahl von Werten herabreduzieren.

Um kaskadierende Parameter zu entwerfen, müssen Sie die folgenden Elemente in den Bericht einschließen:

  • Die Hauptdatasetabfrage, die über mehrere verwandte Abfrageparameter verfügt.

  • Eine geordnete Liste von Berichtsparametern, die jeweils an einen Abfrageparameter gebunden sind. In der Regel werden diese automatisch aus der Hauptabfrage erstellt. Jeder abhängige Parameter muss dem Parameter folgen, von dem er abhängig ist. Die Reihenfolge der Parameter kann im Bereich Berichtsdaten geändert werden, in dem Sie die Parameter in der Auflistung nach oben und unten verschieben können. Weitere Informationen finden Sie unter Vorgehensweise: Ändern der Reihenfolge von Berichtsparametern (Berichts-Generator 2.0).

  • Ein separates Dataset für jeden Berichtsparameter, das seine verfügbaren Werte bereitstellt. Es ist wichtig, dass für jeden Abfrageparameter dieselbe Schreibweise (Groß-/Kleinschreibung) verwendet wird, damit die Abfrage- und Berichtsparameter auch richtig verknüpft werden. Die Abfrage für jeden Satz verfügbarer Werte für die einzelnen Berichtsparameter darf nur Werte zurückgeben, die im Kontext der Hauptabfrage einen Sinn ergeben.

Im Beispiel ist der Berichtsparameter "Produkt" abhängig von der Unterkategorie, die wiederum von der Kategorie abhängig ist. Die Kategorie muss an erster Stelle stehen, gefolgt von der Unterkategorie und dann vom Produkt. Die Abfrage für das Dataset, das verfügbare Werte für die Kategorie bereitstellt, muss alle Kategorien anzeigen, die für die Hauptabfrage gültig sind. Die Abfrage, die nach der Auswahl einer Kategorie verfügbare Werte für die Unterkategorie bereitstellt, sollte Werte liefern, die für die ausgewählte Kategorie gültig sind sowie allen Beschränkungen durch die Hauptabfrage entsprechen.

Weitere Informationen finden Sie unter Vorgehensweise: Hinzufügen von kaskadierenden Parametern zu einem Bericht (Berichts-Generator 2.0).

Filtern von Berichtsdaten nach Ausführung einer Abfrage

Sie können auch Berichtsparameter erstellen und diese in Filterausdrücken zum Filtern von Daten in einem Berichtsdataset, einem Datenbereich oder einer Tablix-Gruppe verwenden. Weitere Informationen finden Sie unter Filtern von Berichtsdaten in einem Bericht (Berichts-Generator 2.0) und Vorgehensweise: Hinzufügen eines Filters (Berichts-Generator 2.0).

Berichtsparameter werden beim Verfassen des Berichts in die Berichtsdefinition integriert, können aber auch nach der Veröffentlichung des Berichts unabhängig verwaltet werden. Nachdem der Bericht veröffentlich wurde, können Sie Parametereigenschaften über den Berichts-Manager ändern. Weitere Informationen finden Sie unter "Festlegen von Eigenschaften für einen veröffentlichten Bericht" in der Reporting Services-Dokumentation in der SQL Server-Onlinedokumentation.

Verwenden von schnell veränderlichen gültigen Werten für einen Parameter

Wenn Sie verfügbare Werte angeben, die sich schnell ändern, können die Werte veraltet sein, bevor der Bericht ausgeführt wird. So kann ein Benutzer einen Wert aus der Liste auswählen, der zu dem Zeitpunkt, zu dem der Benutzer den Wert absendet und den Bericht ausführt, nicht mehr gültig ist. Um dies zu vermeiden, sollten Sie Abfragen so schreiben, dass sich die zurückgegebenen Datasets für Listen gültiger Werte in dem Zeitraum nicht ändern, den ein Benutzer normalerweise benötigt, um einen Wert auszuwählen und den Bericht auszuführen.

Vermeiden Sie auch schnell veränderliche nicht abgefragte Werte. Wenn Sie z. B. das aktuelle Datum als verfügbaren Wert bereitstellen, sollten Sie einen Ausdruck schreiben, der die DateTime.Today-Eigenschaft statt der DateTime.Now-Eigenschaft verwendet. Dadurch wird der schnell veränderliche Teil des Wertes eliminiert. Sie können auch eine Berichtsvariable oder eine Gruppenvariable verwenden, um einen Wert einmal zu berechnen und während der Verarbeitung des Berichts konstant zu halten. Weitere Informationen finden Sie unter Verwenden von Verweisen auf Berichts- und Gruppenvariablenauflistungen in Ausdrücken (Berichts-Generator 2.0).