Usando referências de código personalizado em expressões (Construtor de Relatórios 2.0)

É possível adicionar referências a código personalizado incorporado a um relatório. Use o código inserido para constantes personalizadas, funções complexas ou funções usadas várias vezes em um mesmo relatório.

Para cálculos de detecção de hora avaliados uma vez em tempo de execução e que você deseja manter com o mesmo valor ao longo do processamento do relatório, considere se um relatório ou uma variável de grupo deve ser usada. Para obter mais informações, consulte Usando referências de coleções de variáveis de grupo e de relatório em expressões (Construtor de Relatórios 2.0).

O código personalizado pode incluir novas constantes, variáveis, funções ou sub-rotinas personalizadas. É possível incluir referências somente leitura em coleções internas, como a coleção de Parâmetros. No entanto, não é possível passar conjuntos de valores de dados do relatório para funções personalizadas. Especificamente, não há suporte para agregações personalizadas.

Código incorporado

Para adicionar código incorporado a um relatório, use a Página de código da caixa de diálogo Propriedades do Relatório. O bloco de código criado pode conter vários métodos. Os métodos no código incorporado devem ser gravados no MicrosoftVisual Basic e devem ser baseados em instância. O processador de relatório adiciona referências automaticamente para os namespaces System.Convert e System.Math. No Construtor de Relatórios 2.0, referências a referências a assemblies adicionais não têm suporte.

Os métodos no código incorporado são disponibilizados por meio de um membro do Code definido globalmente. Você os acessa consultando o membro do Code e o nome do método. O exemplo a seguir chama o método ToUSD que converte o valor no campo StandardCost para um valor em dólar:

=Code.ToUSD(Fields!StandardCost.Value)

Para fazer referência às coleções internas no código personalizado, inclua uma referência no objeto Report interno:

=Report.Parameters!Param1.Value

Os exemplos a seguir mostram como definir algumas constantes e variáveis personalizadas.

Public Const MyNote = "Authored by Bob"
Public Const NCopies As Int32 = 2
Public Dim  MyVersion As String = "123.456"
Public Dim MyDoubleVersion As Double = 123.456

Embora as constantes personalizadas não apareçam na categoria Constantes na caixa de diálogo Expressão (que exibe apenas constantes internas), é possível adicionar referências a elas a partir de qualquer expressão, como mostram os exemplos a seguir. Em uma expressão, uma constante personalizada é tratada como uma Variant.

=Code.MyNote
=Code.NCopies
=Code.MyVersion
=Code.MyDoubleVersion

Para obter mais informações sobre coleções de objetos internos e inicialização, consulte Usando coleções globais em expressões.

Exemplos de parâmetros de referência de código personalizado

É possível fazer referência à coleção de parâmetros globais por meio de código personalizado em um bloco de código da definição do relatório ou em um assembly personalizado fornecido. A coleção de parâmetros é somente leitura e não possui iteradores públicos. Não é possível usar uma construção de For Each do Visual Basic para percorrer a coleção. É preciso saber o nome do parâmetro definido na definição de relatório antes de referenciá-lo no código. No entanto, é possível iterar através de todos os valores de um parâmetro de vários valores. Para obter mais informações, consulte Usando referências de código personalizado em expressões (Construtor de Relatórios 2.0).

A tabela a seguir inclui exemplos de como fazer referência à coleção interna de Parameters no código personalizado:

Descrição

Referência em expressão

Definição de código personalizado

Passando uma coleção de parâmetros globais inteira para código personalizado.

Esta função retorna o valor de um parâmetro de relatório específico MyParameter.

=Code.DisplayAParameterValue(Parameters)

Public Function DisplayAParameterValue(

ByVal parameters as Parameters) as Object

Return parameters("MyParameter").Value

End Function

Passando um parâmetro individual para código personalizado.

Este exemplo retorna o valor do parâmetro passado. Se o parâmetro for um parâmetro de vários valores, a cadeia de caracteres de retorno será uma concatenação de todos os valores.

=Code.ShowParametersValues(Parameters!DayOfTheWeek)

Public Function ShowParameterValues(ByVal parameter as Parameter)
 as String
   Dim s as String 
   If parameter.IsMultiValue then
      s = "Multivalue: " 
      For i as integer = 0 to parameter.Count-1
         s = s + CStr(parameter.Value(i)) + " " 
      Next
   Else
      s = "Single value: " + CStr(parameter.Value)
   End If
   Return s
End Function

Assemblies personalizados

No Construtor de Relatórios 2.0, assemblies personalizados são suportados apenas no servidor de relatório. Para obter mais informações sobre como acessar o código depois de instalado no servidor de relatório, consulte “Acessando assemblies personalizados por meio de expressões” na documentação do Reporting Services nos Manuais Online do SQL Server.