Freigeben über


Hinzufügen von benutzerdefiniertem Code zu einem Bericht (Visual Studio-Berichts-Designer)

Sie können einem Bericht benutzerdefinierte Funktionen und externen Assemblys Verweise auf Funktionen hinzufügen. Beim Kompilieren des Projekts wird auf folgende Assemblys automatisch verwiesen: Microsoft.VisualBasic, AllMembers.T:System.Convert und AllMembers.T:System.Math. Auf zusätzliche Assemblys kann über das Dialogfeld Berichtseigenschaften oder mithilfe des CodeModules-Elements in der Berichtsdefinition verwiesen werden. Sie können das Dialogfeld Berichtseigenschaften auch zum Definieren von benutzerdefinierten Funktionen verwenden. Verwenden Sie zum Definieren benutzerdefinierter Funktionen in der Berichtsdefinition das Code-Element. Beachten Sie, dass es sich bei den Funktionen nicht um übergebene Sätze mit Datenwerten handeln darf (insbesondere benutzerdefinierte Aggregate werden nicht unterstützt).

Sie können benutzerdefinierten Code schreiben, der in Ausdrücken in einem Bericht verwendet wird. Dafür gibt es zwei Möglichkeiten: Einbetten von Code in einem Bericht oder Verweisen auf Methoden in einer benutzerdefinierten Assembly. Verwenden Sie eingebetteten Code für komplexe Funktionen oder für Funktionen, die mehrfach in demselben Bericht verwendet werden. Verwenden Sie benutzerdefinierte Assemblys, um Code an einer einzelnen Stelle zu verwalten und in mehreren Berichten zu verwenden.

Eingebetteter Code

Wenn Sie in einem Bericht Code verwenden möchten, fügen Sie dem Bericht einen Codeblock hinzu. Der Codeblock kann mehrere Methoden enthalten. Methoden in eingebettetem Code müssen in Microsoft Visual Basic geschrieben sein und instanzbasiert sein.

So fügen Sie einem Bericht Code hinzu

  1. Klicken Sie im Menü Bericht auf Berichtseigenschaften.

    NoteHinweis

    Ist das Menü Bericht nicht verfügbar, klicken Sie noch einmal in den Berichtsentwurfsbereich.

  2. Geben Sie den Code auf der Registerkarte Code unter Benutzerdefinierter Code ein.

Die Methoden im eingebetteten Code werden über ein global definiertes Code-Element zur Verfügung gestellt. Zum Zugriff auf die Methoden verweisen Sie auf das Code-Element und den Methodennamen. Im folgenden Beispiel wird die ToUSD-Methode aufgerufen, die den Wert des StandardCost-Felds in einen Dollarwert konvertiert:

=Code.ToUSD(Fields!StandardCost.Value)

Benutzerdefinierte Assemblys

Wenn Sie benutzerdefinierte Assemblys in einem Bericht verwenden möchten, müssen Sie zunächst die Assembly erstellen und für Ihr Projekt zur Verfügung stellen. Anschließend fügen Sie im Bericht einen Verweis auf die Assembly hinzu und verwenden dann im Bericht einen Ausdruck, der auf Methoden in dieser Assembly verweist. Beim Bereitstellen des Berichts auf dem Berichtsserver müssen Sie dort auch die benutzerdefinierte Assembly bereitstellen.

So fügen Sie einem Bericht einen Assemblyverweis hinzu

  1. Klicken Sie im Menü Bericht auf Berichtseigenschaften.

    NoteHinweis

    Ist das Menü Bericht nicht verfügbar, klicken Sie noch einmal in den Berichtsentwurfsbereich.

  2. Führen Sie auf der Registerkarte Verweise die folgenden Aktionen aus:

    • Klicken Sie unter Verweise auf die Schaltfläche Hinzufügen (...), und wählen Sie dann im Dialogfeld Verweis hinzufügen die Assembly aus.

    • Geben Sie unter Klassen den Namen der Klasse ein, und geben Sie einen Instanznamen an, der im Bericht verwendet werden soll.

      NoteHinweis

      Geben Sie nur für instanzbasierte Mitglieder einen Klassen- und Instanznamen ein. Geben Sie in der Liste Klassen keine statischen Mitglieder an.

Wenn Sie in einem Ausdruck auf benutzerdefinierten Code verweisen möchten, müssen Sie das Element einer Klasse in der Assembly aufrufen. Die Vorgehensweise hängt davon ab, ob es sich um eine statische oder um eine instanzbasierte Methode handelt. Statische Methoden in einer benutzerdefinierten Assembly stehen global im Bericht zur Verfügung. Auf statische Methoden können Sie in Ausdrücken über den Namespace, die Klasse und den Methodennamen zugreifen. Im folgenden Beispiel wird die ToGBP-Methode aufgerufen, die den Wert des StandardCost-Felds von Dollar in Pfund Sterling konvertiert:

=CurrencyConversion.DollarCurrencyConversion.ToGBP(Fields!StandardCost.Value)

Instanzbasierte Methoden stehen über ein global definiertes Code-Element zur Verfügung. Zum Zugriff auf die Methoden verweisen Sie auf das Code-Element, die Instanz und den Methodennamen. Im folgenden Beispiel wird die ToEUR-Instanzmethode aufgerufen, die den Wert des StandardCost-Felds von Dollar in Euro konvertiert:

=Code.m_myDollarCoversion.ToEUR(Fields!StandardCost.Value)

NoteHinweis

Im Berichts-Designer wird eine benutzerdefinierte Assembly einmal geladen und erst beim Schließen von Visual Studio entladen. Wenn Sie einen Bericht in der Vorschau anzeigen, dann Änderungen an einer im Bericht verwendeten benutzerdefinierten Assembly vornehmen und anschließend die Vorschau des Berichts erneut anzeigen, werden diese Änderungen in der zweiten Vorschau nicht angezeigt. Um die Assembly neu zu laden, müssen Sie Visual Studio schließen und neu öffnen und dann die Vorschau des Berichts anzeigen.

Weitere Informationen zum Verwenden von benutzerdefinierten Assemblys erhalten Sie, wenn Sie in der SQL Server 2005-Onlinedokumentation nach "Using Custom Assemblies with Reports" suchen. Die Onlinedokumentation ist in den meisten Editionen von Visual Studio 2008 verfügbar. Diese können Sie ebenfalls auf MSDN unter www.microsoft.com anzeigen. Die Informationen zu benutzerdefinierten Assemblys in der Onlinedokumentation gelten für Berichte, die mithilfe der ReportViewer-Steuerelemente bereitgestellt werden.

Siehe auch

Verweis

Dialogfeld "Verweise bearbeiten" (Visual Studio-Berichts-Designer)
Dialogfeld "Klassen bearbeiten" (Visual Studio-Berichts-Designer)

Konzepte

Verwenden von Ausdrücken in einem Bericht (Visual Studio-Berichts-Designer)