Visual Basic em Português

Página pessoal de Jorge Paulino sobre o Visual Basic (VB.NET, ASP.NET, VB6, VBA) e algumas noticias de tecnologia

VB.NET: Microsoft Reports – Custom Assemblies

Num artigo anterior, mostrei como utilizar Custom Code num relatório. Isto é muito útil se for necessário personalizar alguma coisa, mas se precisarmos de fazer esta operação em diversos relatórios ? Bem, podemos usar as Custom Assemblies.

Para usar Custom Assemblies num relatório, é apenas necessário criar um projecto do tipo Class Library, que irá originar um *.dll, e usar esta biblioteca em todos os relatórios.

Depois de criado o ficheiro/biblioteca, é necessário copiar o *.dll para as pastas Release/Debug da aplicação, e para a pasta PrivateAssemblies (no Visual Studio 2008 está normalmente em C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies\)

Para este exemplo criei uma pequena classe, que irá cortar algum texto caso o tamanho do texto seja igual ou superior a 30:

Public Class rptClass

    Public Function CutText(ByVal txt As String) As String
        If
txt.Length >= 30 Then
            Return
txt.Substring(0, 26) & " ..."
      
Else
            Return
txt
        End If
    End Function


    Public Shared Function
SharedCutText(ByVal txt As String) As String
        If
txt.Length >= 30 Then
            Return
txt.Substring(0, 26) & " ..."
      
Else
            Return
txt
        End If
    End Function

End Class

Depois, é necessário adicionar uma referência no relatório para a biblioteca. Abrir o relatório, e no menu Reports, seleccionar a opção Report Properties. No separador References, seleccionar o *.dll criado.

NOTA: O nome da biblioteca (Assembly Name) irá ser usado mais tarde no código

Nesta janela existem 2 grelhas:

References: Se forem usados métodos definidos como Shared, é possível invocá-los directamente
Classes: Se não forem usados métodos Shared, é necessário criar uma nova instância da classe (tem de ser escrito directamente na grelha)

Depois, no relatório, podemos usar da seguinte forma:

Como podem ver, se for criada uma nova instância da classe, é necessário definir como =Code.<instância criada>.<nome do método>

Finalmente, e no código, é necessário definir que a classe criada (biblioteca) é Trusted Code, usando o Assembly Name usado nas referências:

Me.ReportViewer1.LocalReport.AddTrustedCodeModuleInCurrentAppDomain( _ 
    "ClassLibrary1, Version=1.0.0.1, Culture=neutral, PublicKeyToken=null")

 
PS: Como sempre, qualquer dúvida, comentário ou correcção ao artigo é sempre bem vinda!

2 comentários:

henrry disse...

Bom dia Jorge

Tenho a seguinte duvida.
Quando quiser fazer deploy do relatório como é que vão estas assemblies? Vão embutidas no própio relatório?

jpaulino disse...

Olá Henrry,

Não, para isso podes usar o Custom Code, que guarda o código dentro do relatório(*.rldc). Neste caso é necessário incluir, e registar, o ficheiro DLL.

Mensagens Recentes



Microsoft Office Especialist

Membro da Comunidade
Experts-Exchange


Administ. da Comunidade
Portugal-a-Programar



Twitter

Artigos no CodeProject

Artigos no CodeProject

Subscrever Novidades

Endereço de Email:

Delivered by FeedBurner

Seguidores

Histórico