Teilen über


Verweise auf Datasetfeldauflistung in einem paginierten Bericht (Berichts-Generator)

Gilt für: Microsoft Report Builder (SSRS) Power BI Report Builder Berichts-Designer in SQL Server Data Tools

Jedes Dataset in einem paginierten Bericht enthält eine Fields-Sammlung. Bei der Fields-Sammlung handelt es sich um eine Gruppe von Feldern, die von der Datasetabfrage und anderen berechneten Feldern angegeben werden, die Sie erstellen. Nachdem Sie ein Dataset erstellt haben, wird die Feldauflistung im Berichtsdatenbereich angezeigt.

Ein einfacher Feldverweis in einem Ausdruck wird auf der Entwurfsoberfläche als einfacher Ausdruck angezeigt. Wenn Sie zum Beispiel das Feld Sales aus dem Bereich Berichtsdaten in eine Tabellenzelle der Entwurfsoberfläche ziehen, wird [Sales] angezeigt. Dies ist der zugrunde liegende Ausdruck =Fields!Sales.Value, der in der Value-Eigenschaft des Textfelds festgelegt wird. Wenn der Bericht ausgeführt wird, wertet der Berichtsprozessor diesen Ausdruck aus und zeigt die eigentlichen Daten der Datenquelle in der Tabellenzelle im Textfeld an. Weitere Informationen finden Sie unter Ausdrücke (Berichts-Generator) und Datasetfeldauflistung (Berichts-Generator).

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.

Anzeigen der Feldauflistung für ein Dataset

Ziehen Sie die Felder einzeln in eine Tabellendetailzeile, um die jeweiligen Werte für eine Feldauflistung anzuzeigen. Die Verweise aus der Detailzeile eines Tabellen- oder Listendatenbereichs zeigen für jede Zeile im Dataset einen Wert an.

Um zusammengefasste Werte für ein Feld anzuzeigen, ziehen Sie die einzelnen numerischen Felder in den Datenbereich einer Matrix. Die Standardaggregatfunktion für die gesamte Zeile ist Sum, zum Beispiel =Sum(Fields!Sales.Value). Sie können die Standardfunktion ändern, um andere Gesamtbeträge zu berechnen. Weitere Informationen finden Sie unter Referenz zu Aggregatfunktionen (Report Builder).

Sie müssen den Datasetnamen als Bereich für die Aggregatfunktion angeben, um die zusammengefassten Werte für eine Feldauflistung in einem Textfeld direkt auf der Entwurfsoberfläche anzuzeigen, das nicht Teil eines Datenbereichs ist. Für ein Dataset mit dem Namen SalesDatagibt der folgende Ausdruck den Gesamtbetrag aller Werte für das Feld Salesan: =Sum(Fields!Sales,"SalesData").

Wenn Sie das Dialogfeld Ausdruck zum Definieren eines einfachen Feldverweises verwenden, können Sie die Fields-Sammlung im Bereich Kategorie auswählen, um die Liste der verfügbaren Felder im Bereich Feld anzuzeigen. Jedes Feld verfügt über mehrere Eigenschaften, zum Beispiel Value und IsMissing. Bei den restlichen Eigenschaften handelt es sich um vordefinierte erweiterte Feldeigenschaften, die je nach Datenquellentyp für das Dataset verfügbar sind.

Erkennen von Nullen für ein Datasetfeld

Sie können die FunktionIsNothing verwenden, um einen Feldwert zu erkennen, der NULL ( IsNothing) ist. Wenn der folgende Ausdruck in einem Textfeld in eine Tabellendetailzeile eingefügt wird, prüft dieser das Feld MiddleName und ersetzt den Text "No Middle Name", wenn der Wert NULL ist, und den Feldwert selbst, wenn der Wert nicht NULL ist:

=IIF(IsNothing(Fields!MiddleName.Value),"No Middle Name",Fields!MiddleName.Value)

Erkennen von fehlenden Feldern für dynamische Abfragen zur Laufzeit

Elemente in der Fields-Sammlung besitzen in der Standardeinstellung zwei Eigenschaften: Value und IsMissing. Mit der IsMissing-Eigenschaft wird angegeben, ob ein zur Entwurfszeit für ein Dataset definiertes Feld in den Feldern enthalten ist, die zur Laufzeit abgerufen werden. Die Abfrage kann zum Beispiel eine gespeicherte Prozedur aufrufen, bei der die Ergebnisse abhängig von einem Eingabeparameter variieren, oder die Abfrage kann SELECT * FROM <table> lauten, wenn die Tabellendefinition dort geändert wurde.

Hinweis

IsMissing erkennt für alle Datenquellentypen Änderungen des Datasetschemas zwischen Entwurfs- und Laufzeit. Sie können IsMissing nicht verwenden, um in einem mehrdimensionalen Cube leere Elemente zu erkennen, und es besteht keine Beziehung zu den Begriffen EMPTY und NON EMPTYder MDX-Abfragesprache.

Sie können die IsMissing-Eigenschaft in benutzerdefiniertem Code testen, um zu ermitteln, ob ein Feld im Resultset vorhanden ist. Für diesen Test können Sie keinen Ausdruck mit einem Visual Basic-Funktionsaufruf verwenden, wie IIF oder SWITCH, weil Visual Basic alle Parameter im Aufruf basierend auf der Funktion auswertet. Dies führt zu einem Fehler, wenn der Verweis auf das fehlende Feld ausgewertet wird.

Beispiel für die Steuerung der Sichtbarkeit einer dynamischen Spalte für ein fehlendes Feld

Um einen Ausdruck festzulegen, der die Sichtbarkeit einer Spalte steuert, die ein Feld in einem Dataset anzeigt, müssen Sie zuerst eine benutzerdefinierte Codefunktion definieren. Diese Funktion gibt einen booleschen Wert zurück. Der Wert basiert darauf, ob das Feld fehlt. Beispielsweise gibt die folgende benutzerdefinierte Codefunktion true zurück, wenn das Feld fehlt, und false, wenn das Feld vorhanden ist.

Public Function IsFieldMissing(field as Field) as Boolean  
 If (field.IsMissing) Then  
 Return True  
  Else   
  Return False  
 End If  
End Function  

Legen Sie die Hidden-Eigenschaft der Spalte auf den folgenden Ausdruck fest, um diese Funktion zum Steuern der Sichtbarkeit einer Spalte zu verwenden:

=Code.IsFieldMissing(Fields!FieldName)

Die Spalte wird ausgeblendet, wenn das Feld nicht vorhanden ist.

Beispiel für die Steuerung des Textfeldwerts für ein fehlendes Feld

Um Text anstelle des Werts eines fehlenden Felds zu ersetzen, müssen Sie benutzerdefinierten Code schreiben. Dieser Code sollte den Text zurückgeben, den Sie als Ersatz verwenden können, wenn das Feld fehlt. Die folgende benutzerdefinierte Codefunktion gibt beispielsweise den Wert des Feldes zurück, wenn das Feld vorhanden ist. Außerdem gibt der Code die Meldung zurück, die Sie als zweiten Parameter angeben, wenn das Feld nicht vorhanden ist:

Public Function IsFieldMissingThenString(field as Field, strMessage as String) as String  
 If (field.IsMissing) Then  
  Return strMessage  
 Else   
  Return field.Value  
  End If  
End Function  

Fügen Sie den folgenden Ausdruck der Value-Eigenschaft hinzu, um diese Funktion in einem Textfeld zu verwenden:

=Code.IsFieldMissingThenString(Fields!FieldName,"Missing")

Das Textfeld zeigt entweder den Feldwert oder den Text an, den Sie angegeben haben.

Erweiterte Feldeigenschaften verwenden

Erweiterte Feldeigenschaften sind andere Eigenschaften, die für ein Feld durch die Datenverarbeitungserweiterung definiert werden. Die Art der Datenquelle wird für den Datensatz festgelegt. Erweiterte Feldeigenschaften sind entweder vordefiniert oder gelten speziell für einen Datenquellentyp. Weitere Informationen finden Sie unter Erweiterte Feldeigenschaften für eine Analysis Services-Datenbank (SSRS).

Wenn Sie eine Eigenschaft angeben, die für das Feld nicht unterstützt wird, wird der Verweis als null (Nothing in Visual Basic) ausgewertet. Wenn ein Datenanbieter keine erweiterten Feldeigenschaften unterstützt oder wenn das Feld bei der Ausführung der Abfrage nicht gefunden wird, ist der Wert für die Eigenschaft null (Nothing in Visual Basic) für Eigenschaften vom Typ String und Object, und null (0) für Eigenschaften vom Typ Integer. Für eine Datenverarbeitungserweiterung können die Vorteile der vordefinierten Eigenschaften genutzt werden, indem die Abfragen optimiert werden, die diese Syntax enthalten.