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.