Share via


Dieser Artikel wurde maschinell übersetzt.

Es wurden benutzerdefinierte Attribute mit nicht unterst? Zeichen im logischen Namen erkannt

Erweitern von SSRS: Die Entwicklung angepasster Diagrammkomponenten und von Renderingerweiterungen

Manpreet Singh

SQL Server Reporting Services (SSRS) bietet ausgezeichnete Diagrammfunktionen, die Ihnen ermöglichen, Daten und Statistiken in Form von konventionellen und unkonventionellen Diagramme visuell darstellen, und eine Vielzahl von Bericht-Renderingerweiterungen können Sie einen Bericht in einer Vielzahl von verschiedenen Formaten wie PDF, CSV, XML, Word und Excel speichern.Dennoch können die systemeigenen Optionen nicht immer erfüllen Ihre geschäftlichen Anforderungen oder einen Bericht rendern genau die Weise, die Sie wollen.Glücklicherweise können Sie die reporting Services zum Erstellen eigener benutzerdefinierter Chart-Komponenten und Renderingerweiterungen mit den verschiedenen Erweiterungs-Features, die SSRS enthält, erweitern.In diesem Artikel gebe ich Ihnen einen Überblick über den Prozess der Erstellung einer benutzerdefinierten entwerfender Bestandteil und die verschiedenen Möglichkeiten, die mit einem Bericht SSRS integrieren.Ich werde auch beschreiben, wie Sie einen benutzerdefinierte Berichtsrenderer (durch die Erweiterung eine native) entwickeln können, einen Bericht zu rendern, wie Sie möchten.Um diese selbst ausprobieren, download den vollständigen Code auf archive.msdn.microsoft.com/mag201201SSRS und verwenden Sie es als Ihren Ausgangspunkt.Beachten Sie, dass der Prozess der Erstellung einer Wiedergabe Erweiterung und Bericht von Elementen nicht viel seit SQL Server 2005 geändert hat.Obwohl ich die Beispiele für Code mit eine SQL Server 2008 R2-Umgebung gebaut, gelten die Konzepte in diesem Artikel beschriebenen sehr viel für SQL Server 2005 und 2008 sowie.Wenn Sie für SQL Server 2008 R2 Reporting Services entwickeln, können Sie benutzerdefinierte Komponenten mithilfe von Microsoft erstellen.NET Framework 4 sowie.Für SQL Server 2008 Reporting Services, jedoch die.NET Framework 3.5 ist die höchste Version von der.NET Framework unterstützt.

Die Website-Benutzer Berichten

Um den Prozess der Entwicklung einer benutzerdefinierten entwerfender Bestandteil und Renderingerweiterung zu verstehen, betrachten Sie ein Szenario, wo eine Organisation einen monatlichen Websiteverwendungsbericht möchte zu veranschaulichen, die Popularität von generieren, beispielsweise e-Commerce-Website in verschiedenen Regionen.Das Herz des Berichts ist ein Web Site Benutzer Diagramm, das die geografische Verteilung der Benutzer pro Region, grafisch darstellt, wie in dargestellt Abbildung 1.

Web Site Users Chart
Abbildung 1 Benutzer der Web Site Diagramm

Obwohl das Diagramm ganz ähnlich wie ein Balkendiagramm ist, keine der systemeigenen Chart Komponenten fit the Bill, weil Sie ein benutzerdefiniertes Bild für eine Person, wie in den Bars des Diagramms ersetzen können nicht Abbildung 1.

Ein solches Szenario erfordert auf jeden Fall erstellen Ihre eigenen benutzerdefinierten entwerfen Bestandteil.Mithilfe von GDI +-Klassenbibliotheken basieren (Teil der.(NET Framework) und ein wenig Mathematik, es ist einfach zu zeichnen im Diagramm mit Grundformen wie Kreisen und Rechtecken und generieren Sie das Diagramm in Form einer regelmäßigen Bitmap.Die Ausgabe von solch eine Komponente, die ein Bild generiert mit der.NET Framework Bibliotheken, kann mit den SSRS-Bericht in eine Reihe von Möglichkeiten integriert werden:

  • Benutzerdefinierte Berichtselemente verwenden: SSRS unterstützt die Erstellung von benutzerdefinierten Berichtselementen, wie z. B. integrierte Diagrammerstellung Komponenten, die in einem Bericht integriert werden können.Die benutzerdefinierte Berichtselemente werden als Bilder gerendert.Im Artikel "Jazz bis Ihre Daten mithilfe von benutzerdefinierten Bericht Elemente in SQL Server Reporting Services" (msdn.microsoft.com/magazine/cc188686), ein benutzerdefiniertes Berichtselement erstellen veranschaulicht.
  • Verwenden eine SQL CLR-Funktion: Eine SQL/CLR User-defined Function können Sie auch ein GDI + basierende Diagrammerstellungskomponente in SSRS integrieren.Dies erfordert system.drawing.dll in SQL Server geladen.Sobald die Kernassembly für Chart Generierung in SQL Server geladen wird, können Sie eine benutzerdefinierte Funktion darauf basierenden erstellen.Das Bild Berichterstattung Element kann dann konfiguriert werden, um das Diagrammbild aus einer Datenbank darzustellen.
  • Verwenden eines ASP.NET-Handler: Sie können eine ASP.NET-Handler, der Diagrammerstellungskomponente mit einer SSRS-Bericht und eine Web-Anwendung zu integrieren.Eine ASP.NET-Handler kann der Diagrammerstellungskomponente als herunterladbare Bitmap-Bild, mit jeder mithilfe einer Abfragezeichenfolge übergebenen Parameter zurück.Um den Handler-Ausgang mit SSRS integrieren, alles, was Sie tun müssen, ist die Bild-Quelle des Bildfelds auf externe festgelegt und geben Sie die URL des Handlers als Ausdruck.

Die Codebeispiele in diesem Artikel zeigen Sie das Web Site Benutzer Diagramm erstellt und der Nutzungsbericht Website mithilfe einer SQL CLR-Funktion integriert.Das WebSiteUsersChartCore-Projekt enthält die WebSiteUsersChart-Klasse, die das Diagramm in Form von ein JPEG-Bild basierend auf den monatlichen Nutzungsdaten von der dbo.usp_GetUsageData gespeicherte Prozedur zurückgegebene rendert.Die WebSiteUsersReportDB.bak-Datei enthält eine Sicherung der Datenbank WebSiteUsersReportDB mit den notwendigen Back-End-Tabellen und gespeicherten Prozeduren.Die SQL CLR-Funktion GetUsersChart ist verantwortlich für die Bereitstellung der erforderlichen Parameter an die Chart-Komponente und bekommen die Bildausgabe.Das Dataset DataSetWebSiteUsageChart von der RegionWiseReport wird das Bild von der SQL/CLR-Funktion mit die folgende SQL-Abfrage, indem Sie die erforderlichen Parameter übergeben:

    SELECT dbo.usp_GetUsersChart(500, 300, N'Website Users', @RegionName,
      @DateID % 100, @DateID / 100) AS Chart

Schließlich gibt das Bildsteuerelement ImageChart das Bild aus der Datenbank.

Der Hauptvorteil der Verwendung von SQL/CLR-Funktion oder die ASP.NET-Handler Ansatz statt entwickeln ein benutzerdefiniertes Berichtselement ist, dass Sie die gleichen Diagrammerstellungskomponente außerhalb der SSRS, in eine Web-Anwendung, ohne die Notwendigkeit für weitere Entwicklung oder Anpassung verwenden können.

Benutzerdefiniertes Wort Renderingerweiterung

Obwohl die systemeigene Word-Renderingerweiterung Webseite Websiteverwendungsbericht perfekt rendert, werden einige Features, z. B. eine Tabelle mit Inhalt oder haben einige Seiten im Hochformat und andere im Querformat, nicht unterstützt.

Eine benutzerdefinierte Renderingerweiterung von Grund auf neu zu schreiben ist keine triviale Aufgabe. Sie wollen es verschiedene Kombinationen von Berichtselemente und Rückkonvertierung in der entsprechenden Formatierung und Datenelemente von das Zielformat unterstützt werden. Darüber hinaus wird die Verlängerung der systemeigenen SSRS-Renderingerweiterungen nicht direkt unterstützt. Zum Glück erfüllt die Ausgabe aus der systemeigenen Word-Renderingerweiterung die meisten meine Bedürfnisse für den Bericht, so dass alles, was ich wirklich will, ist eine Möglichkeit, ein Inhaltsverzeichnis hinzufügen und damit die Ausrichtung auf Seitenebene gesteuert werden.

Um meine Ziele zu erreichen, kann ich schreibe eine benutzerdefinierte Renderingerweiterung, die die Berichtausgabe durch die systemeigenen Word-Erweiterung gerendert wird, dann Word-Automatisierung verwenden, um die Berichtsausgabe auf die gewünschte Art und Stream ändern die endgültige Ausgabe an den Benutzer.

Der CustomWordRenderer-Klasse in das Projekt CustomWord­RenderingExtension im Quellcode hebt die wichtigen Schritte bei den gewünschten Effekt zu erreichen. Die Ausgabe von der systemeigenen Word-Renderingerweiterung wird mit einer standard-Header-Vorlage, die eine Titelseite und ein Inhaltsverzeichnis enthält zusammengeführt und kann auch Elemente wie z. B. einen copyright-Vermerk, ein Haftungsausschluss und So weiter enthalten. Dokumentstrukturbezeichnungen, die als Einträge in der Tabelle durch die nativen Erweiterungen gerendert werden, müssen entsprechende Überschriftenformatvorlagen angewendet um zu machen in der Tabelle der Inhalte angezeigt werden. Schließlich, das Inhaltsverzeichnis wird aktualisiert und das zusammengeführte Dokument wird an den Benutzer übertragen.

Alle reporting Services-Erweiterungen müssen die Microsoft.ReportingServices.OnDemandReportRendering.IRenderingExtension und IExtension-Schnittstelle implementieren. Diese Schnittstellen müssen Sie Implementierung für die folgenden Methoden und Eigenschaften bereitstellen:

Mitglieder von der IExtension-Schnittstelle:

  • LocalizedName-Eigenschaft
  • SetConfiguration-Funktion

Mitglieder von der Microsoft.ReportingServices.OnDemandReportRendering.IRenderingExtension-Schnittstelle:

  • GetRenderingResource-Funktion
  • Render Funktion
  • RenderStream-Funktion

Alle diese Mitglieder die Render-Methode ist das wichtigste und enthält die Basisimplementierung für die benutzerdefinierten Word-Renderer. Weil ich bereits den formatierten Bericht Ausgabe von der systemeigenen Word-Renderingerweiterung bekommen, habe ich nicht auf die verschiedenen Berichtelemente des analysieren, und daher wird nicht die Render-Methode keinen Code direkt mit Berichtsdaten enthält oder Formatieren von Elementen. Alles, was ich tun müssen, ist die systemeigenen Word-Renderingerweiterung den Bericht einholen, öffnen Sie sie mit Microsoft Word (Word-Automatisierung mit), führen Sie die erforderlichen Änderungen und Stream geändertes Dokument für den Benutzer.

Weitere Informationen über den Prozess der Entwicklung von benutzerdefinierten Renderingerweiterungen finden Sie im Artikel, "Display Your Daten Ihre Weise mit benutzerdefinierten Renderer für Reporting Services," bei msdn.microsoft.com/magazine/cc163840.

Ein wichtiger Punkt zu beachten, bevor Sie sich entscheiden, machen hier diskutierten Konzepte ist, dass Microsoft serverseitigen Automatisierung von Microsoft Office nicht unterstützt. Wenn Sie entwickeln eine benutzerdefinierte Renderingerweiterung basiert auf dem Ansatz ich diskutiert betrachten, zuerst schauen Sie sich den Artikel "Überlegungen für serverseitige Automatisierung von Office," bei support.microsoft.com/kb/257757.

Wenn Sie Office-Automatisierung verwenden möchten, gibt es einen weiteren interessanter Ansatz Sie betrachten können, — das Rendern des Berichts als XML-Datei mithilfe der systemeigenen XML-Renderingerweiterung und anwenden einen benutzerdefinierten XSLT-Stylesheet ein WordML-Dokument erzeugen. Der Nachteil dieses Ansatzes ist, dass Sie am Ende Berichtsformatierung an zwei Orten gespeichert: ein in der XSLT-Stylesheet und andere in der RDL-Berichtsdatei.

Verwendung des Beispielcodes

Der Quellcode für diesen Artikel enthält die folgenden Elemente:

  • WebSiteUsersChartCore Projekt
  • "TestHarness" Projekt
  • CustomWordRenderingExtension Projekt
  • WebSiteUsersReport RDL-Datei
  • RegionWiseReport RDL-Datei
  • WebSiteUsersReportDB-Datenbank-backup-Datei
  • Berichtsdatei Header-Vorlage

Das WebSiteUsersChartCore-Projekt zeigt den Prozess der Erstellung der WebSite Benutzer Charting-Komponente von region-wise Nutzungs-Statistiken. Das Projekt "TestHarness" dient zum Testen und überprüfen die Ausgabe der WebSiteUsersChartCore-Assembly von Rendern des Bilds von der entwerfende Komponente mithilfe einer Windows Form-Anwendungs generiert. Das CustomWordRenderingExtension-Projekt enthält die Implementierung der benutzerdefinierten Word-Renderingerweiterung, basierend auf der Word-Automatisierungsansatz. Die WebSite­UsersReport ist die primäre Bericht, der den Unterbericht RegionWiseReport für jede Region, um den region-wise Inhalt rendern aufruft. Der RegionWiseReport Bericht fordert auch die WebSite Benutzer Charting-Komponente um die WebSite-Benutzer-Diagramm zu rendern. Dies geschieht mit Hilfe des Bildes kontrollieren über einen Aufruf der Usp_GetUsersChart SQL CLR-Skalarwertfunktion durch die Übergabe in die entsprechenden Parameter. Die WebsiteUsersReportDB.bak-Datei enthält die Sicherung für die WebSiteUsersReportDB-Datenbank. Die Berichte und die Diagrammerstellung Komponenten basieren auf den Daten aus dieser Datenbank. Die Header-Vorlage-Datei enthält eine Titelseite und ein Inhaltsverzeichnis im Hochformat. Diese Datei wird an den Anfang des systemeigenen Word-Dokument Berichts, mit die Word-Automatisierung angefügt.

Um den Beispielcode bereitstellen, erstellen Sie die WebSiteUsersChart-Projektmappe mit den WebSiteUsersChartCore und benutzerdefinierten­WordRenderingExtension Projekte. Kopieren Sie die CustomWordRenderingExtension.dll-Assembly in der Berichtsserver-bin-Verzeichnis. Nehmen Sie den folgenden Eintrag in Ihrem Berichtsserver Datei rssrvpolicy.config gewähren vollen Vertrauenswürdigkeit für die benutzerdefinierte Renderingerweiterung:

<CodeGroup
class="UnionCodeGroup" version="1"
PermissionSetName="FullTrust"
Name="CUSTOM WORD"
Description="This code group grants Custom Word Renderer code full trust.">
  <IMembershipCondition
    class="UrlMembershipCondition"
    version="1"
    Url="C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting
        Services\ReportServer\bin\CustomWordRenderingExtension.dll" />
</CodeGroup>

Next, machen Sie den folgenden Eintrag in der Datei rsreportserver.config die Renderingerweiterung mit dem Berichtsserver registrieren:

<Extension Name="Custom WORD" Type=
  "CustomWordRenderingExtension.CustomWordRenderer,
  CustomWordRenderingExtension">
  <Configuration>
    <DeviceInfo>
    <SourceHeaderFileName>C:\WorkingDirectory\
      Header.doc</SourceHeaderFileName>
    <SourceBodyFileName>C:\WorkingDirectory\Body.doc</SourceBodyFileName>
    <MergedFileName>C:\WorkingDirectory\MergedOutput.doc</MergedFileName>
    </DeviceInfo>
  </Configuration>
</Extension>

Erstellen Sie ein Arbeitsverzeichnis auf Laufwerk C: Laufwerk für die Renderingerweiterung und kopieren, um es Header.doc. Wenn Sie ein anderes Verzeichnis verwenden möchten, vergessen Sie nicht, die entsprechenden Änderungen in der Datei rsreportserver.config so gut zu machen; Diese Konfigurationseinträge werden von den benutzerdefinierten Word-Renderer abgeholt. Natürlich müssen Sie Microsoft Word installiert für die Renderingerweiterung zu arbeiten.

Als nächstes bereitstellen Sie die WebSiteUsersReport und RegionWiseReport Berichte auf dem Berichtsserver. Führen Sie den Bericht WebSiteUsersReport. Klicken Sie auf das Exportieren-Menü und untersuchen Sie den Inhalt des Drop-Down-sollten Sie die Renderingerweiterung "CUSTOM WORD" in der Liste. Gehen Sie voran und exportieren Sie ein. Wenn Sie am Ende immer ein leeres Dokument, untersuchen Sie das Ereignisprotokoll auf Fehler.

Nachbereitung

Wenn systemeigene Chart Komponenten die Rechnung passen, sollten Sie implementieren eine benutzerdefinierte Komponente. Sie können komplexe Diagramme durch Nutzung der GDI +-Entwicklung Fähigkeit entwickeln. Denken Sie daran, dass Sie ohne alles von Grund auf neu schreiben, indem Sie ändern die Ausgabe von den benutzerdefinierten Renderer schreiben können.

Während es immer möglich ist, gehen vollständig benutzerdefinierte und neue Anwendungen für die Erstellung von Berichten erstellen, ist es oft sehr leicht zu erreichen von den gleichen Effekt mit SSRS mit ein paar Stücke von benutzerdefiniertem Code an den richtigen Stellen angeschlossen. So gehen Sie vor und bauen Sie Ihr eigenes Chart Komponenten und Bericht Renderer ohne Angst.

Manpreet Singh ist ein Berater bei Microsoft Services Global Delivery, wo er ein Teil der Business Intelligence und Integration Engineering Group ist. Er arbeitet in erster Linie auf Design und Entwicklung von.NET-orientierte Business Intelligence-Lösungen auf der Grundlage von Microsoft Business Intelligence Stack.

Dank der folgenden technischen Experten für die Überprüfung dieses Artikels: Yaswant Vishwakarma