Verwenden globaler Auflistungen in Ausdrücken (Reporting Services)

Aktualisiert: 14. April 2006

Reporting Services stellt die folgenden globalen Auflistungen bereit, auf die Sie über Ausdrücke verweisen können: DataSources, DataSets, Fields, Globals, Parameters, ReportItems und User. Wenn Sie aus einem Ausdruck auf eine Auflistung verweisen möchten, können Sie die Visual Basic-Standardsyntax für ein Element in einer Auflistung verwenden. Die folgende Liste enthält Beispiele für diese Syntax:

  • Collection!ObjectName.Property oder Collection!ObjectName("Property")
    =Fields!Sales.Value
    =Fields!Sales("Value")
  • Collection("ObjectName").Property
    =Fields("Sales").Value
  • Collection("Member")
    =User("Language")
  • Collection.Member
    =User.Language

Globale Auflistungen – Zusammenfassung

In der folgenden Tabelle sind die einzelnen globalen Auflistungen beschrieben. Außerdem ist vermerkt, wenn Sie in einem Ausdruck auf die Auflistung verweisen können. Die einzelnen globalen Auflistungen werden in einem separaten Thema weiter unten in diesem Abschnitt erläutert.

Globale Auflistung Beispiel Beschreibung

Fields

=Fields!Sales.Value

Stellt die Auflistung der im Bericht verfügbaren Felder des Datasets dar. Verfügbar, nachdem Daten aus einer Datenquelle in ein Dataset abgerufen wurden.

ReportItems

=ReportItems("Textbox1").Value

Stellt die Auflistung der Textfelder für das Berichtselement dar, z. B. die Textfelder in einem Tabellendatenbereich, Seitenkopf oder Seitenfuß. Während der Berichtsverarbeitung verfügbar.

Globals

=Globals.ReportName

Stellt globale Variablen dar, die für Berichte nützlich sind, wie z. B. der Berichtsname oder die Seitenzahl. Immer verfügbar.

Parameters

=Parameters("ReportMonth").Value

- Oder -

=Parameters!ReportYear.Value

Stellt die Auflistung der Berichtsparameter dar, von denen jeder einwertig oder mehrwertig sein kann. Erst nach Abschluss der Verarbeitungsinitialisierung verfügbar. Wenn Sie Abfrageparameter erstellen, werden diese automatisch der Auflistung von Berichtsparametern hinzugefügt.

User

=User.UserID

- Oder -

User.Language

Stellt eine Auflistung von Daten zu dem Benutzer dar, der den Bericht ausführt, wie z. B. die Spracheinstellung oder die Benutzer-ID. Immer verfügbar. User!UserID wird häufig zum Filtern von Ergebnissen in Berichten verwendet.

DataSources

=DataSources("AdventureWorks").Type

Stellt die Auflistung der Datenquellen dar, auf die im Textkörper eines Berichts verwiesen wird. Enthält nicht die Datenquellen, die nur in Seitenköpfen oder Seitenfüßen verwendet werden. Nicht verfügbar in der Vorschau.

DataSets

=DataSets("TopEmployees").CommandText

Stellt die Auflistung der Datasets dar, auf die im Text einer Berichtsdefinition verwiesen wird. Enthält nicht die Datenquellen, die nur in Seitenköpfen oder Seitenfüßen verwendet werden. Nicht verfügbar in der Vorschau.

Elemente der Auflistungen Globals und Users geben Variantwerte zurück. Wenn Sie eine globale Variable in einem Ausdruck verwenden möchten, der einen bestimmten Datentyp erfordert, müssen Sie die Variable zunächst umwandeln. Zum Konvertieren der Ausführungszeitvariante in ein Datumsformat können Sie beispielsweise CDate(Globals!ExecutionTime) verwenden. Weitere Beispiele finden Sie unter Beispiele für Ausdrücke in Reporting Services.

Felder

Jedes Dataset in einem Bericht enthält eine Fields-Auflistung. Dabei handelt es sich um die Auflistung der Felder, die angezeigt werden, wenn Sie einen Datasetknoten im Fenster Datasets erweitern. Die Fields -Auflistung wird normalerweise zum Anzeigen von Daten in Textfeldern in einem Bericht verwendet. Eine Verwendung in anderen Berichtselementen, Eigenschaften und Funktionen ist jedoch ebenfalls möglich. Die Feldnamen müssen innerhalb einer Auflistung eindeutig sein, ein Feldname kann jedoch in mehreren Auflistungen vorhanden sein.

Einige Datenverarbeitungserweiterungen bestimmen die Feldauflistung automatisch aus der Abfrage, die Sie für ein Dataset definieren. Wenn Sie auf der Symbolleiste auf die Schaltfläche Felder aktualisieren klicken, werden Änderungen in der Berichtsdefinition gespeichert, und das Fenster Datasets wird aktualisiert, damit diese Änderungen angezeigt werden. Wählen Sie zum Bearbeiten der Felddefinitionen im Berichts-Designer in der Datenansicht das Dataset aus, um das Dialogfeld Dataset zu öffnen, und klicken Sie auf die Registerkarte Felder. Wenn Sie ein berechnetes Feld hinzufügen möchten, klicken Sie mit der rechten Maustaste auf das Dataset im Fenster Datasets, um das Dialogfeld Neues Feld hinzufügen zu öffnen, und geben Sie einen Namen ein. Klicken Sie anschließend auf Berechnetes Feld, und geben Sie den Ausdruck ein.

Da die Berichtselemente nacheinander verarbeitet werden, ist die Fields-Auflistung, die dem aktuellen Berichtselement zugeordnet ist, während der Berichtsverarbeitung an die zugrunde liegenden Quelldaten gebunden. Die für ein bestimmtes Feld zurückgegebenen Daten können einen Einzelwert darstellen oder einen Wert für jede Zeile im Dataset während der Verarbeitung des Berichts. Ob ein einzelner Wert oder mehrere Werte zurückgegeben werden, wird durch den Typ des Berichtselements bestimmt, das den Feldverweis enthält. Verweise aus einem Datenbereich (Tabelle, Matrix, Liste oder Diagramm) geben einen Wert pro Zeile im Dataset zurück. Verweise, die nicht Bestandteil eines Datenbereichs sind, geben einen einzelnen Wert zurück.

Wenn Sie eine Aggregatberichtsfunktion zum Verarbeiten der Feldauflistung in einem Dataset verwenden, geben Sie einen scope-Parameter an, mit dem das Dataset angegeben wird. Wenn Sie die Zuordnung eines Berichtselements zu einem Dataset überprüfen möchten, wählen Sie das Berichtselement aus, und zeigen Sie die entsprechenden Eigenschaften an. Weitere Informationen zu Berichtsfunktionen und zum scope-Parameter finden Sie unter Verwenden von Berichtsfunktionen in Ausdrücken (Reporting Services).

Elemente in der Fields-Auflistung besitzen in der Standardeinstellung zwei Eigenschaften: Value und IsMissing. Wenn Sie ein Feld aus dem Fenster Datasets auf ein Berichtselement im Berichtslayout ziehen, wird der Inhalt des Berichtselements standardmäßig auf die Value-Eigenschaft des Feldes festgelegt. Bei einem Datenbereich wird der Wert für jede Zeile im Dataset auf =Fields!FieldName.Value festgelegt. Der Inhalt eines Berichtselements, das keinen Datenbereich darstellt, wird auf einen Einzelwert wie =First(Fields!FieldName.Value) festgelegt.

Mit der IsMissing-Eigenschaft wird angegeben, ob ein für ein Dataset definiertes Feld unter den Feldern enthalten ist, die aus der Datenquelle abgerufen werden. Dieses Feld kann in einem Feldausdruck mithilfe von Visual Basic getestet werden. Die Value-Eigenschaft für fehlende Felder hat den Wert NULL (Nothing in Visual Basic). Im folgenden Beispiel wird veranschaulicht, wie eine Überprüfung auf ein fehlendes Feld erfolgen kann, sofern das Beispiel im Berichtselement-Textfeld platziert wird, in dem Sie die Felddaten anzeigen möchten:

=IIF(Fields!FieldName.IsMissing, "Field was not returned by query", Fields!FieldName.Value))

Da die Visual Basic-Funktion IIF alle Elemente einer Anweisung auswertet, bevor sie das Ergebnis zurückgibt, entstehen durch Verweise auf ein fehlendes Feld möglicherweise Verarbeitungsfehler. Im folgenden Beispiel wird veranschaulicht, wie Sie Visual Basic-Funktionsaufrufe ausführen können, die auf ein möglicherweise fehlendes Feld verweisen:

=IIF(Sum(Fields!FieldName.Value) IS NOTHING, 0, Sum(Fields!FieldName.Value))

Wenn Sie den Ausdrucks-Editor zum Erstellen eines Ausdrucks verwenden, der auf ein Feld verweist, können Sie die Fields-Auflistung im ersten Bereich auswählen und die Liste der verfügbaren Felder im letzten Bereich anzeigen. In der folgenden Abbildung wird das Feld FirstName für das Dataset Employees angezeigt.

Bearbeiten Sie das Dialogfeld "Ausdruck" mit Intellisense

Beachten Sie die Liste der im IntelliSense-Fenster verfügbaren Eigenschaften. Diese Liste enthält die Standardeigenschaften Value und IsMissing. Die restlichen Eigenschaften sind vordefinierte erweiterte Feldeigenschaften, die von anderen Datenverarbeitungserweiterungen unterstützt werden.

Erweiterte Feldeigenschaften

Erweiterte Feldeigenschaften sind zusätzliche Eigenschaften, die durch die Datenverarbeitungserweiterung für ein Feld definiert werden. Eine Teilmenge der erweiterten Feldeigenschaften ist vordefiniert. Bei den vordefinierten Eigenschaften handelt es sich um häufig verwendete Feldeigenschaften. Das Key-Feld und das UniqueName-Feld sind typische Beispiele. Diese vordefinierten Eigenschaften werden in der IntelliSense-Liste angezeigt, und mithilfe der Auflistungssyntax Fields!FieldName.Property kann auf sie verwiesen werden. Für eine Datenverarbeitungserweiterung können die Vorteile der vordefinierten Eigenschaften genutzt werden, indem die Abfragen optimiert werden, die diese Syntax enthalten.

Sie können auch auf andere erweiterte Feldeigenschaften verweisen, die von einer bestimmten Datenverarbeitungserweiterung unterstützt werden. Diese Eigenschaften werden nicht im Fenster Ausdrücke angezeigt, sie können jedoch ermittelt werden, indem eine Datenquelle über eine registrierte Datenverarbeitungserweiterung und den entsprechenden Abfrage-Designer durchsucht wird. Auf alle erweiterten Feldeigenschaften kann mithilfe der Auflistungssyntax Fields!FieldName("Property") verwiesen werden.

Wenn ein Datenprovider keine erweiterten Feldeigenschaften unterstützt oder wenn das Feld während des Ausführens der Abfrage nicht gefunden wird, entspricht der Wert für die Eigenschaft bei Eigenschaften vom Typ String und Object gleich null (in Visual Basic Nothing), und bei Eigenschaften vom Typ Integer entspricht er Null (0).

Wenn durch eine Datenerweiterung benutzerdefinierte Feldeigenschaften bereitgestellt werden, sind diese Eigenschaften in der Dropdownliste des Ausdrucks-Editors für alle Felder im Dataset sichtbar, unabhängig davon, ob die Eigenschaft durch ein Feld unterstützt wird. Wenn Sie einen Verweis auf eine Eigenschaft hinzufügen, die für das Feld nicht unterstützt wird, wird der Verweis zu null (Nothing in Visual Basic) ausgewertet. Beispiele für Provider, die erweiterte Feldeigenschaften unterstützen, finden Sie unter Definieren von Berichtsdatasets für multidimensionale Analysis Services-Daten und Data Mining-Vorhersagedaten und Definieren von Berichtsdatasets für multidimensionale Daten aus einem SAP NetWeaver BI-System.

Globals

Die Globals-Auflistung enthält die globalen Variablen für den Bericht. In der folgenden Tabelle sind die Elemente der Globals-Auflistung beschrieben.

Element Typ Beschreibung

ExecutionTime

DateTime

Das Datum und die Uhrzeit, zu der die Berichtsausführung begann.

PageNumber

Integer

Die aktuelle Seitenzahl. Kann nur in Seitenkopf- und -fußzeilen verwendet werden.

ReportFolder

String

Der vollständige Pfad des Ordners mit dem Bericht. Dies schließt nicht den Berichtsserver-URL ein.

ReportName

String

Der Name des Berichts, unter dem er in der Berichtsserver-Datenbank gespeichert wird.

ReportServerUrl

String

Der URL des Berichtsservers, auf dem der Bericht ausgeführt wird.

TotalPages

Integer

Die Gesamtseitenzahl im Bericht. Kann nur in Seitenkopf- und -fußzeilen verwendet werden.

Beispiele für globale Variablen:

  • Dieser Ausdruck ist in einem Textfeld in der Fußzeile eines Berichts platziert und stellt die Seitenzahl und die Gesamtseitenzahl im Bericht bereit:
    =Globals.PageNumber & " of " & Globals.TotalPages
  • Dieser Ausdruck stellt den Namen des Berichts und die Zeit seiner Ausführung bereit. Die Zeit wird mit der Microsoft .NET Framework-Formatzeichenfolge für ein kurzes Datum formatiert:
    =Globals.ReportName & ", dated " & Format(Globals.ExecutionTime, "d")

Parameter

Die Parameters-Auflistung enthält die Berichtsparameterobjekte innerhalb des Berichts. Parameter können an Abfragen übergeben oder in Filtern oder anderen Funktionen verwendet werden, die die Darstellung und den Inhalt des Berichts abhängig von dem Parameter ändern. Wenn Sie Abfrageparameter definieren, werden diese automatisch der Auflistung von Berichtsparametern hinzugefügt. In der folgenden Tabelle werden die für einen Parameter definierten Eigenschaften beschrieben: Count, IsMultiValue, Value und Label.

Eigenschaft Beschreibung

Count

Eine ganze Zahl, die die Anzahl von Parametern in der Auflistung angibt.

IsMultiValue

Ein boolescher Wert, der anzeigt, dass dieser Parameter eine Menge von Werten aufweist.

Value

Der Wert des Parameters. Für einen mehrwertigen Parameter gibt Value ein Array von Objekten zurück.

Label

Eine benutzerfreundliche Bezeichnung für den Parameter. Wenn keine Bezeichnung angegeben ist, hat die Label-Eigenschaft den gleichen Wert wie die Value-Eigenschaft. Sind einer Value-Eigenschaft mehrere Label -Eigenschaften zugeordnet, wird die erste übereinstimmende Label-Eigenschaft verwendet. Für einen mehrwertigen Parameter gibt Label ein Array von Objekten zurück.

Auf Parameter kann entweder über die Eigenschaftensyntax oder über die Auflistungssyntax zugegriffen werden. Der folgende Ausdruck veranschaulicht, wie auf jedes Element der Parameters-Auflistung zugegriffen wird. Wird der Ausdruck in einem Textfeld in einem Berichtselement platziert, wird der Inhalt des ProductSubCategory-Parameters angezeigt.

="IsMultiValue: " & Parameters!ProductSubCategory.IsMultiValue.ToString() 
& " Count:" & Parameters!ProductSubCategory.Count & " Values: " 
& Join(Parameters!ProductSubCategory.Value,", ") & " Labels: " 
& Join(Parameters!ProductSubCategory.Label,", ")

Weitere Informationen finden Sie unter Verwenden von Parametern in Reporting Services.

ReportItems

Die ReportItems-Auflistung enthält die Textfelder im Bericht. Elemente in der ReportItems-Auflistung verfügen nur über eine Eigenschaft: Value. Mit dem Wert für ein ReportItems-Element können Daten aus einem anderen Feld im Bericht angezeigt oder berechnet werden. Der Zugriff auf den Wert des aktuellen Textfeldes kann über die integrierte globale Variable Me.Value von Visual Basic oder einfach über Value erfolgen. In Berichtsfunktionen wie First und in Aggregatfunktionen müssen Sie jedoch die vollqualifizierte Syntax verwenden.

Beispiel:

  • Dieser Ausdruck wird in einem Textfeld platziert und zeigt den Wert eines ReportItem-Textfeldes mit dem Namen Textbox1 an:
    =ReportItems("Textbox1").Value
  • Dieser Ausdruck wird in der Color-Eigenschaft eines ReportItem-Textfeldes platziert und zeigt den Text in Schwarz an, wenn der Wert > 0 ist, andernfalls in Rot:
    =iif(Me.Value > 0,"Black","Red")
  • Dieser Ausdruck wird in einem Textfeld des Seitenkopfes oder Seitenfußes platziert und zeigt den ersten Wert pro Seite des gerenderten Berichts für ein Textfeld mit dem Namen LastName an:
    =First(ReportItems("LastName").Value)

User

Die User-Auflistung enthält Daten zu dem Benutzer, der den Bericht ausführt. Mit dieser Auflistung können Sie die in einem Bericht angezeigten Daten filtern, sodass z. B. nur die Daten des aktuellen Benutzers angezeigt werden, oder beispielsweise die Benutzer-ID in einem Berichtstitel anzeigen. Der folgende Ausdruck wird in einem Textfeld platziert und kombiniert statischen Text mit variablen Benutzerdaten:

=Globals!ReportName & " for " & User!UserID

In der folgenden Tabelle sind die Elemente der User-Auflistung beschrieben.

Element Typ Beschreibung

Language

String

Die Sprache des Benutzers, der den Bericht ausführt. Beispiel: en-US.

UserID

String

Die Benutzer-ID des Benutzers, der den Bericht ausführt. Wenn Sie die Windows-Authentifizierung verwenden, stellt dieser Wert das Domänenkonto des aktuellen Benutzers dar. Der Wert wird von der Reporting Services-Sicherheitserweiterung bestimmt, für die die Windows-Authentifizierung oder die benutzerdefinierte Authentifizierung verwendet werden kann.

In manchen Fällen zeigen Berichte, die die User!UserID-Variable enthalten, spezifische Berichtsdaten für den aktuellen Benutzer, der den Bericht anzeigt, nicht an. Die folgenden Bedingungen müssen vorhanden sein, damit dieser Fehler auftritt:

  • Bei dem Bericht muss es sich um einen Snapshot zur Berichtsausführung oder einen Snapshot zum Berichtsverlauf handeln.
  • Auf den Bericht muss programmgesteuert über SOAP-Methoden oder über die URL-Adresse des Berichts zugegriffen werden.

Wenn dieser Fehler auftritt, liegt den Benutzerprofilinformationen im Berichtssnapshot eines der folgenden Elemente zugrunde:

  • Die Identität des Benutzers, der den Berichtssnapshot erstellt hat.
  • Das Konto, unter dem der Berichtsserver ausgeführt wird, wenn der Snapshot vom Berichtsserver als geplanter Vorgang erstellt wird.
ms157274.note(de-de,SQL.90).gifWichtig:
Wird ein Berichtssnapshot nicht basierend auf Benutzerprofilinformationen aktualisiert, verursacht dies falsche Daten und stellt ein Sicherheitsrisiko dar, wenn vertrauliche Daten im Snapshot enthalten sind.

Benutzerprofilfehler treten nur für Berichtssnapshots auf, die über SOAP-Aufrufe oder über die URL-Adresse des Berichtssnapshots geöffnet werden. User!UserID ist vollständig funktionsfähig für Berichte, die bedarfsgesteuert ausgeführt werden, und für alle Berichtssnapshots, die im Berichts-Manager geöffnet werden. Weitere Informationen zu Aufrufen von Berichtssnapshots über Webdienstmethoden und URL-Zugriff finden Sie unter Using a URL to Access Report Server Items und Identifying Execution State.

DataSources

Die DataSources-Auflistung stellt die Auflistung der Datenquellen dar, auf die in einer veröffentlichten Berichtsdefinition verwiesen wird. Unter Umständen erhalten Sie für diese Eigenschaften im Vorschaumodus andere Werte, als wenn Sie einen veröffentlichten Bericht bereitstellen und anzeigen.

In der folgenden Tabelle sind die Variablen in der DataSources-Auflistung beschrieben.

Variable Typ Beschreibung

DataSourceReference

String

Der vollständige Pfad der Datenquelle auf dem Berichtsserver. Beispiel: /DataSources/AdventureWorks.

Type

String

Der Typ des Datenproviders für die Datenquelle. Beispiel: SQL.

DataSets

Die DataSets-Auflistung stellt die Auflistung der Datasets dar, auf die in einer Berichtsdefinition verwiesen wird. Diese globale Auflistung wird selten direkt in Berichten verwendet. Sie steht hauptsächlich für Berichts-Designer zum Zugriff auf den Abfragebefehl zur Verfügung, mit dem die Daten für jedes Dataset aus der Datenquelle abgerufen werden.

In der folgenden Tabelle sind die Elemente der DataSets-Auflistung beschrieben.

Element Typ Beschreibung

CommandText

String

Mit dieser Abfrage werden für Datenbanken-Datenquellen die Daten aus der Datenquelle abgerufen. Besteht die Abfrage aus einem Ausdruck, ist dies der ausgewertete Ausdruck.

RewrittenCommandText

String

Der erweiterte CommandText-Wert für den Datenprovider. Dies wird in der Regel für Berichte mit Abfrageparametern verwendet, die Berichtsparametern zugeordnet werden. Die Eigenschaft wird vom Datenprovider festgelegt, wenn die Parameterverweise des Befehlstextes in die konstanten Werte erweitert werden, die für die zugeordneten Berichtsparameter ausgewählt wurden.

Siehe auch

Aufgaben

Vorgehensweise: Hinzufügen eines Ausdrucks (Berichts-Designer)

Konzepte

Grundlegendes zu Berichtslayout und Rendering
Grundlagen des Berichtsentwurfs

Hilfe und Informationen

Informationsquellen für SQL Server 2005

Änderungsverlauf

Version Verlauf

14. April 2006

Geänderter Inhalt:
  • Der Inhalt zu Feldern wurde erweitert.

05. Dezember 2005

Neuer Inhalt:
  • Auflistungen zu Datasets und DataSources wurden hinzugefügt.
Geänderter Inhalt:
  • Beispiele für globale Syntax wurden geändert.