Lies in den Artikel rein und unten bekommst Du ein unschlagbares Angebot!
Wenn Sie ein Reporting Services Projekt erstellt haben, benötigen Sie vor dem Anlegen von Berichten zwei Dinge: eine Datenquelle, auch Datasource genannt, und eine Art Abfrage, wie bei den Reporting Services Datasets genannt werden. Wie Sie Datenquellen auf verschiedene Arten erstellen, haben wir im Artikel “Reporting Services Datenquellen” erläutert. Im vorliegenden Artikel beschreiben wir, wie Sie mithilfe von Datasets die Daten für Ihren Bericht zusammenstellen und welche unterschiedlichen Möglichkeiten es dafür gibt. Dabei schauen wir uns wieder Visual Studio, den SQL Server Report Builder und das Web-Portal der Reporting Services an.
Freigegebene Datasets oder eingebettete Datasets
Genau wie bei den Datenquellen beziehungsweise Datasources gibt es auch bei den Datasets zwei Varianten – nämlich freigegebene Datasets und eingebettete Datasets. Die freigegebenen Datasets können Sie in einem Projekt oder im Web-Portal erstellen. Eine wichtige Voraussetzung für ein freigegebenes Dataset ist das Vorhandensein einer freigegebenen Datenquelle. Für ein eingebettetes Dataset können Sie eine freigegebene Datenquelle verwenden, aber auch eine eingebettete Datenquelle.
Welchen Typ von Dataset sollten Sie nun verwenden Es verhält sich in einem Aspekt ähnlich wie bei Microsoft Access: Dort konnten Sie Abfragen als eigene Objekte speichern und diese dann Formularen über die Eigenschaft Datensatzquelle oder Listensteuerelementen über die Eigenschaft Datensatzherkunft zuweisen. Oder Sie haben die als Datenquelle zu verwendende Abfrage als SQL-Abfrage direkt für die jeweilige Eigenschaft hinterlegt. Beides hat Vor- und Nachteile: Wenn Sie die Abfrage als eigenes Objekt speichern, können Sie diese als Datenquelle für mehr als ein Formular oder einen Bericht und gleichzeitig noch als Datenquelle für Listensteuerelemente nutzen.
Der Vorteil und der Nachteil ist gleichzeitig, dass sich Änderungen an der Abfrage auf alle referenzierenden Elemente auswirkt. Andersherum sammeln Sie eine Menge Datenquellen in Formularen, Berichten und Steuerelementen an, die nur schwer zu warten sind.
Eine Alternative ist es, alle Abfragen als eigene Objekte zu speichern und diese den Objekten beziehungsweise Steuerelementen zuzuweisen. Freigegebene Datasets haben den Vorteil, dass diese gecached werden können.
Und es gibt noch einen gravierenden Unterschied von freigegebenen Dataset gegenüber den erwähnten Abfragen von Access: Sie können diese nämlich auch von anderen Projekten aus verwenden!
Freigegebenes Reporting Services Dataset mit Visual Studio
Wenn Sie in Visual Studio ein neues Projekt des Typs Berichtsserverprojekt-Assistent oder Berichtsserverprojekt erstellt haben, finden Sie im Projektmappen-Explorer neben Freigegebene Datenquellen einen weiteren Ordner namens Freigegebene Datasets vor. Wollen Sie für diesen ein neues freigegebenes Dataset hinzufügen, betätigen Sie den Kontextmenü-Befehl Neues Dataset hinzufügen dieses Eintrags (siehe Bild 1). Hierbei ist es wichtig zu wissen, dass Sie auf jeden Fall zuvor mindestens eine freigegebene Datenquelle benötigen. Diese können Sie, wie im Artikel Reporting Services Datenquellen (www.datenbankentwickler.net/259) beschrieben erstellen – oder Sie klicken einfach auf Neues Dataset hinzufügen und legen die Datenquelle über die dortige Funktion an.
Bild 1: Hinzufügen eines neuen Datasets per Kontextmenü
Der Kontextmenü-Eintrag öffnet den Dialog Eigenschaften des freigegebenen Datasets. Hier legen Sie den Namen des Datasets fest. Außerdem wählen Sie die Datenquelle aus den freigegebenen Datenquellen aus. Sollte noch keine freigegebene Datenquelle vorhanden sein oder wollen Sie eine neue Datenquelle erstellen, können Sie das mit einem Klick auf die Schaltfläche Neu… erledigen. Das liefert den Dialog Eigenschaften der freigegebenen Datenquelle, den wir im oben genannten Artikel im Detail beschrieben haben (siehe Bild 2).
Bild 2: Dialog zum Anlegen eines neuen Datasets
An dieser Stelle gehen wir davon aus, dass Sie gemäß der Anleitung in dem oben erwähnten Artikel bereits eine Datenquelle erstellt haben.
Nun schauen wir uns den Abfragetyp an. Hier gibt es drei Möglichkeiten:
- Text: Eingabe einer Abfrage im SQL-Format. Dazu können Sie verschiedene Tools nutzen, die wir im Anschluss vorstellen werden.
- Tabelle: Erlaubt die Auswahl einer Tabelle. Diese Option steht jedoch nur in ODBC- oder OLE DB-Datenquellen zur Verfügung.
- Gespeicherte Prozedur: Wenn Sie die Daten für den Bericht bereits in einer gespeicherten Prozedur vorbereitet haben, können Sie diese aus der Liste der gespeicherten Prozeduren der in der Datenquelle angegebenen Datenbank auswählen.
SQL-Abfrage als Quelle für ein Dataset definieren
Wenn Sie unter Abfragetyp die Option Text wählen, können Sie verschiedene Optionen zum Erstellen der Abfrage nutzen:
- Abfrage-Designer…: Dies öffnet den Abfrage-Designer, mit dem Sie ähnlich wie im Abfrageentwurf von Access die Datenquelle zusammenklicken können.
- Importieren…: Öffnet einen Dateiauswahl-Dialog, mit dem Sie eine zuvor gespeicherte Abfragedatei mit der Dateiendung .sql oder .rdl auswählen können.
- Felder aktualisieren: Aktualisiert die Liste der Felder im Bereich Felder des Dialogs.
- fx: Diese Schaltfläche öffnet einen Dialog, mit dem Sie den aktuellen Ausdruck bearbeiten und um weitere Informationen anreichern können.
SQL-Abfrage per Abfrage-Designer erstellen
Wählen Sie die Option Abfrage-Designer…, erscheint der Dialog aus Bild 3. Mit diesem fügen Sie zunächst die Tabellen hinzu, deren Daten im Bericht angezeigt werden sollen. Dann markieren Sie die Felder, die im Abfrageergebnis erscheinen sollen. Mit einem Klick auf die Ausrufezeichen-Schaltfläche können Sie das Abfrageergebnis vorab anzeigen lassen. In der Liste der anzuzeigenden Felder können Sie noch Sortierungen und Filterkriterien festlegen.
Bild 3: Entwurfsansicht eines Datasets
SQL-Abfrage bearbeiten
Die zuvor zusammengestellte SQL-Abfrage können Sie durch einen Klick auf die Schaltfläche mit der Beschriftung fx im Dialog Ausdruck anzeigen (siehe Bild 4). Dieser Dialog zeigt den SQL-Ausdruck in einem Textfeld an, wo Sie diesen manuell bearbeiten können.