ads

Rich TextBox in Microsoft SQL Server Reporting Services 2005

Marzo 13th, 2009 No Comments   Posted in Programmazione

Microsoft SQL Server Reporting Services 2005 (SSRS2005), il sistema di Microsoft per la reportistica e la business intelligence, soffre di una grave carenza: il componente Rich TextBox. Non è infatti possibile visualizzare all’interno di un report un testo formatto in RTF (RichTextFormat). Questo è un grosso limite della versione 2005, dato anche dal fatto che Crystal Report offre questa funzionalità sin dalle prime versioni.

Per fortuna l’enorme comunity di sviluppatori attorno al mondo Microsoft ci viene in aiuto. Girando tra forum e blog ho scoperto una valida soluzione a questo problema, anche se affetta da qualche piccola controindicazione. La soluzione consiste in un componente custom (una dll per intenderci) che, una volta registrato in SSRS2005, visualizza un testo Rtf come una immagine.

Il procedimento è molto semplice. Nell’allegato a questo articolo trovate un file RichTextImager.dll. RichTextImager è una libreria sviluppata in .Net 2.0 e all’interno dell’allegato trovate tutta la solution originale. Potete modificare la solution e ricompilarla per ottenere una versione modificata del componente. I passi da seguire sono:

  1. Copiare la dll in  C:\{Cartella Programmi}\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies in modo da poter utilizzare la libreria all’interno del designer.
  2. Copiare la dll in  C:\{Cartella Programmi}\Microsoft SQL Server\MSSQL.(n)\Reporting Services\ReportServer\bin (dove N è un numero che dipende dalla vostra installazione)
  3. Modificare il file C:\Program Files\Microsoft SQL Server\MSSQL.(n)\Reporting Services\ReportServer\rssrvpolicy.config e inserendo il testo:
  4. "UnionCodeGroup"
       version="1"
       PermissionSetName="FullTrust"
       Name="RTF_Converter"
       Description="A special code group for my custom assembly.">
      "UrlMembershipCondition"
        version="1"
        Url="C:\{Cartella Programmi}\Microsoft SQL Server\MSSQL.(n)\
             Reporting Services\ReportServer\bin\RichTextImager.dll"
      />
    
  5. Aprire il proprio progetto di reportistica in Microsoft Visual Studio 2005. Aprire il report su cui si vuole intervenire. Aggiungere in Report >Report Properties > References l’assembly RichTextImager.
  6. In Report > Report Properties >Code aggiungere il seguente pezzo di codice:
  7. Public Function GetRTFImage(ByVal rtfText as String) As Byte()
        Dim rtfConv As New RTFConverter()
        rtfConv.Rtf = rtfText
        return RTFConverter.ConvertImageToByteArray(rtfConv.PrintToImage(500,50))
    End Function
  8. Aggiungere al report un’immagine e impostare la proprietà Source a Database.
  9. Impostare la proprietà dell’immagine  MIMEType a image/bmp
  10. Impostare la proprietà Value a =Code.GetRTFImage(Fields!RTFText.Value)

Ci sono ovvie controindicazioni a questo approccio e sono:

  1. Non è possibile selezionare il testo RTF perché è un’immagine e a volte l’immagine risulta sgranata.
  2. Bisogna registrare una dll custom su SSRS2005 con eventuali problemi di deploy e di security.
  3. Ogni report che deve visualizzare testo RTF deve referenziare un dll esterna e deve avere del codice custom al suo interno, con tutte le problematiche di manutenibilità correlate.

Però come si dice in questi casi: sempre meglio che niente…

Allegato: richtextimager

Ti piace questo articolo? Condividilo: