Frage

Ich habe zur Zeit eine Reihe von Berichten mit einer Reihe von gemeinsamen Funktionen sitzen in Codeblöcken innerhalb der RDL-Dateien einsehen. Das ist offensichtlich stellt ein Wartbarkeit Problem, und ich als gefragt, ob jemand einen Weg für diese verschiedenen Berichte kannte eine Bibliothek von gemeinsamem Code zu teilen?

Im Idealfall würde Ich mag eine .NET-Assembly zu meinem Reporting Services-Projekt angebracht haben, die alle meiner Berichte zugreifen können, und rufen Sie Funktionen aus. Dies würde die Kopfschmerzen zu versuchen, speichern zu aktualisieren und über 100 Berichte bei jeder Änderung muss gemacht werden, um eine gemeinsame Funktion erneut bereitstellen.

Irgendwelche Vorschläge?

War es hilfreich?

Lösung

in Visual Studio in den Eigenschaften des Berichts auf der Registerkarte ‚Verweise‘ fügen Sie die Details für die Montage, die den verwalteten Code enthält. Dieser Code kann von Ausdrücken in Berichten mit den Instanznamen aufgerufen werden, die angegeben wird.

Diese Baugruppe kann entweder im GAC oder Privaten Verzeichnis von Visual Studio gespeichert werden, und auf den Report Service ‚ist‘ Verzeichnis auf den Reporting Services-Server bereitgestellt werden. Weitere Informationen zum Wie benutzerdefinierten Assembly verwenden oder eingebetteten Code in Reporting Services

Andere Tipps

hatte ich damit viel Schmerz, so hoffe ich, dies jemand hilft. Sie können es aus dem MSDN-Artikel erhalten, aber es gibt ein paar Punkte unter, dass ich denke, kann die Geschwindigkeit jemand durch diesen ein wenig schneller helfen.

Vergessen Sie nicht, diese zu Ihrer rssrvpolicy.config Datei hinzuzufügen:

<CodeGroup class="UnionCodeGroup"
   version="1"
   PermissionSetName="FullTrust"
   Name="MyCodeGroup"
   Description="Code group for my data processing extension">
      <IMembershipCondition class="UrlMembershipCondition"
         version="1"
         Url="C:\pathtocustomassembly\customassembly.dll"
       />
</CodeGroup>

Ich habe vergessen, dies zu tun, und ich war es für eine Weile zu hassen.

Plus vergessen Sie nicht, die beiden folgenden Ordner für das Jahr 2005 mit dem neuen DLL zu treffen:

Program Files\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies 
Program Files\Microsoft SQL Server\MSSQL.3\Reporting Services\ReportServer\bin

Plus verwenden Sie nicht mit Ihrer Assembly log4net. Ich konnte nicht damit es funktioniert. Vielleicht hat jemand kann, aber nicht mich.

Plus, wenn Sie vermasseln wie ich Sie nicht in der Lage sein, die Dateien zu löschen, bis Sie Visual Studio schließen.

Plus Ihre Methoden geteilt oder statisch machen. Es ist einfacher.

Erstellen Sie eine Stationierung Batch-Datei. So etwas wie:

@ECHO OFF
REM   Name: SRSDeploy_Local.bat
REM
REM   This batch files copies my custom assembly to my Reporting Services folders.
REM
REM   This is the SQL Server 2005 version:
copy "C:\Projects\Common\lib\SCI.Common.SSRSUtils.dll" "C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies"
copy "C:\Projects\Common\lib\SCI.Common.SSRSUtils.dll" "C:\Program Files\Microsoft SQL Server\MSSQL.2\Reporting Services\ReportServer\bin"  

Schließlich bauen Sie Ihren Bericht vor der Vorschau.

Wenn es baut Sie auf Ihrem Weg wahrscheinlich ist.

Mit Ausnahme ...

Sie können es auf Ihre Produktion Berichtsserver nicht einsetzen, weil Sie immer die folgende Fehlermeldung erhalten werden:

Fehler beim Laden der Code-Modul

Das ist, was ich arbeite jetzt an.

Die folgenden Artikel listet nur über alle die verschiedenen Möglichkeiten des Aufrufs .Net Code aus einem SSRS-Bericht. Erweitern von Microsoft SQL Server 2000 Reporting Services mit Custom Code

Wenn alle diese Berichte ausführen, gegen den gleichen Server, eine weitere Option .NET gespeicherte Prozeduren zu berücksichtigen wäre die Verwendung in der Datenbank Ihren Code zu halten.

Vielen Dank, Jungs, ich kann jetzt meine Montage aus meinen Berichten nennen.

Zusatzfrage: Gibt es einen Namensraum I enthalten kann, wenn ich meine Montage bin zu schaffen, die es bewusst von Objekten in dem Report-Designer wie Felder und Parameter macht? Es wäre wirklich toll, wenn ich könnte passieren, sagen, eine Sammlung von Feldern in einer stark typisierten Weise meine Montage.

Und die Antwort: Ein paar Stunden des Suchens zeigt, dass das Hinzufügen \ Programme \ Microsoft Visual Studio 8 \ Common7 \ IDE \ Private \ Microsoft.ReportingServices.ProcessingObjectModel.dll als Referenz in meinem Montage ermöglicht es mir, die verschiedenen Reporting Services Typen zugreifen, wie Felder und Parameter. Beachten Sie, dass in Reporting Services 2008 die Namespace ändert .

Sie müssen mit dem GAC bereitstellen. http://www.developerdotstar.com/community/node/333

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top