Verwendung von Parametern in Berichten
Dynamisch einfach
Im folgenden wird anhand der Tabelle authors aus der Datenbank pubs demonstriert, wie eine dynamische Selektion über den Anfangsbuchstaben aussehen könnte.
Zur Verwendung von dynamischen Abfragen sind folgende Schritte notwendig:
- 1. Berichtsparameter definieren
- Name: "Anfang"
- Eingabeaufforderung: "Bitte Wert eingeben"
- 2. Dataset-Parameter definieren: über "..."
- "@Anfang" "=Parameters!Anfang.Value"
- 3. Abfrage eingeben (wie z. B. )
select * from authors where au_lname like @Anfang + '%'
- 4. Vorschau anzeigen
Für Liste mit Auswahlwerten
- 5. Neues Dataset "Anfangsbuchstaben" anlagen für ersten Buchstaben
select distinct Substring(au_lname,1,1) as Anf from authors
- 6. Berichtsparameter "Anfang" ändern
- Eingabeaufforderung: "Bitte Wert eingeben"
- Verfügbare Werte: Aus Abfrage, Dataset "Anfangsbuchstaben" als Abfrage
- Standardwerte: Aus Abfrage
- 7. Vorschau anzeigen
Für Dynamische Verbindungen
Gelegentlich möchte man einen Report gegen mehrere Server laufen lassen, ohne ihn mehrfach bereitzustellen oder jedesmal die Datenquelle zu ändern. Zu diesem Zweck verwendet man einen dynamischen Connection-String, der mit einem Auswahlfeld verknüpft wird. Falls man auch noch die Datenbank auswählen will, kann dies über den gleichen Mechanismus erfolgen.
Voraussetzung
Der Bericht darf keine freigegebene Datenquelle verwenden! Stattdessen wird zur Entwicklung eine nicht freigegebene Datenquelle verwendet. Hier kann auch schon eine zweite Datenquelle gegen den gleichen Server angelegt werden, die später geändert wird. Aber erst wenn der Bericht gegen einen Server läuft, wird die dynamische Datenquelle verwendet. Andernfalls gestaltet sich der Test der Datasets unnötig kompliziert.
Berichtsparameter für Servername anlegen
- Es wird ein Parameter angelegt mit dem Namen "ServerName", der nicht leer sein darf. In der Liste der verfügbaren Werte werden die gewünschten Servernamen aufgeführt. Als Standardwert sollte man ebenfalls einen geeigneten Wert auswählen.
Datenquelle ändern
Im Dataset wird die Datenquelle geändert auf die Dynamische Datenquelle. Dieser erhält als Connection-String folgenden Text:
="data source=" & Parameters!ServerName.Value & ";initial catalog=master"
Berichtsparameter für Datenbank anlegen
- Der zweite Berichtsparameter heißt "DatabaseName" und wird aus einer Abfrage gefüllt. Als Wertfeld und Bezeichnungsfeld wird jeweils der Name der Datenbank verwendet. Als Standardwert kann man hier z. B. master vorbelegen.
- Dieser Berichtsparameter muß in der Auswahlliste der Parameter nach dem Servernamen kommen, damit zuerst die Verbindung festgelegt wird.
Abfrage für Datenbanken anlegen
Die Liste der Datenbanken erhält man über das einfache Statement
select name from master.dbo.sysdatabases order by name
Wobei dieses Dataset auch die dynamische Verbindung nutzen sollte.
Bericht bereitstellen
Wenn der Bericht bereitgestellt ist, erhält man einen Parameter, über den man zur Laufzeit die Serververbindung ändern kann. Der Standardwert des Parameters wird für den ersten Aufruf des Berichts verwendet. Weiterhin erhält man eine List-Box für den Datenbanknamen. Nach Änderung des Servernamens wird diese List-Box automatisch aktualisiert.
Print article | This entry was posted by cmu on 26.10.06 at 20:54:24 . Follow any responses to this post through RSS 2.0. |