Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a: Designer de Relatórios nas Ferramentas de Dados SQL
Power BI Report
Microsoft Report Builder (SSRS)
Pode adicionar referências a código personalizado embutido num relatório ou a assemblies personalizados que constrói e guarda no seu computador e implementa no servidor de relatórios. Use código incorporado para constantes personalizadas, funções complexas ou funções que são usadas várias vezes em um único relatório. Use assemblies de código personalizados para manter o código num único local e partilhe-o para uso por múltiplos relatórios. O código personalizado pode incluir novas constantes, variáveis, funções ou sub-rotinas personalizadas. Você pode incluir referências somente leitura a coleções internas, como a coleção Parameters. No entanto, não é possível passar conjuntos de valores de dados de relatório para funções personalizadas; especificamente, não há suporte para agregações personalizadas.
Importante
Para cálculos sensíveis ao tempo que são avaliados uma vez em tempo de execução e que você deseja manter o mesmo valor durante o processamento do relatório, considere se deve usar uma variável de relatório ou uma variável de grupo. Para mais informações, consulte Referências de Coleções de Variáveis de Relatório e Grupo (Construtor de Relatórios e SSRS).
O Designer de Relatórios é o ambiente de autoria preferido para adicionar código personalizado a um relatório. O Construtor de Relatórios suporta o processamento de relatórios que tenham expressões válidas, ou que incluam referências a assemblies personalizados num servidor de relatórios. O Construtor de Relatórios não fornece uma forma de adicionar uma referência a uma montagem personalizada.
Observação
Esteja ciente de que, durante uma atualização de um servidor de relatórios, relatórios que dependem de conjuntos personalizados podem exigir passos adicionais para completar a atualização.
Observação
Você pode criar e modificar arquivos de definição de relatório paginado (.rdl) no Construtor de Relatórios da Microsoft, no Construtor de Relatórios do Power BI e no Designer de Relatórios no SQL Server Data Tools.
Trabalhar com Código Personalizado no Construtor de Relatórios
No Report Builder, pode abrir um relatório a partir de um servidor de relatórios que inclua referências a assemblies personalizados. Por exemplo, pode editar relatórios que são criados e implementados usando o Designer de Relatórios no SQL Server Data Tools (SSDT). Os assemblies personalizados devem ser implementados no servidor de relatórios.
Não pode fazer o seguinte:
Adicione referências ou instâncias de membros da classe a um relatório.
Pré-visualize um relatório com referências a assemblies personalizados em modo local.
Incluindo referências a funções comumente usadas
Use a caixa de diálogo Expressão para exibir uma lista categorizada de funções comuns incorporadas ao Construtor de Relatórios. Quando expande Funções Comuns e clica numa categoria, o painel de Itens mostra a lista de funções que inclui numa expressão. As funções comuns incluem classes do .NET Framework Math e Convert namespaces e funções de biblioteca de tempo de execução do Visual Basic. Por conveniência, você pode exibir as funções mais usadas na caixa de diálogo Expressão , onde elas são listadas por categoria: Texto, Data e Hora, Matemática, Inspeção, Fluxo do Programa, Agregação, Financeiro, Conversão e Diversos. Funções menos usadas não aparecem na lista, mas ainda podem ser usadas em uma expressão.
Para usar uma função interna, clique duas vezes no nome da função no painel Item. Uma descrição da função aparece no painel Descrição e um exemplo da chamada de função aparece no painel Exemplo. No painel de código, quando você digita o nome da função seguido de um parêntese esquerdo (, a ajuda do IntelliSense exibe cada sintaxe válida para a chamada de função. Por exemplo, para calcular o valor máximo de um campo nomeado Quantity em uma tabela, adicione a expressão =Max( simples ao painel Código e use as marcas inteligentes para exibir todas as sintaxes válidas possíveis para a chamada de função. Para concluir este exemplo, digite =Max(Fields!Quantity.Value).
Para obter mais informações sobre cada função, consulte Math, Converte Visual Basic Runtime Library Members no MSDN.
Incluindo Referências a Funções Menos Usadas
Para incluir uma referência a outros namespaces CLR menos usados, você deve usar uma referência totalmente qualificada, por exemplo, StringBuilder. O IntelliSense não é suportado no painel de código da caixa de diálogo Expressão para essas funções menos usadas.
Para obter mais informações, consulte Membros da biblioteca de tempo de execução do Visual Basic no MSDN.
Incluindo referências a montagens externas
Para incluir uma referência a uma classe num assembly externo, deve identificar o assembly do processador de relatórios. Use a página de Referências da caixa de diálogo Propriedades do Relatório para especificar o nome totalmente qualificado do conjunto a adicionar ao relatório. Na sua expressão, deve usar o nome totalmente qualificado da turma na assembleia. As classes de uma assembly externa não aparecem na caixa de diálogo Expressão: deve especificar o nome correto para a classe. Um nome totalmente qualificado inclui o espaço de nomes, o nome da classe e o nome do membro.
Incluindo Código Embutido
Para adicionar código incorporado a um relatório, use a guia 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 em código incorporado devem ser escritos no Microsoft Visual Basic e devem ser baseados em instância. O processador de relatório adiciona automaticamente referências para os namespaces System.Convert e System.Math. Use a página de Referências da caixa de diálogo Propriedades do Relatório para adicionar referências de montagem adicionais. Para mais informações, consulte Adicionar uma Referência de Assembleia a um Relatório (SSRS).
Os métodos em código incorporado estão disponíveis por meio de um membro de código definido globalmente. Você acessá-los referindo-se ao membro do código e ao nome do método. O exemplo a seguir chama o método ToUSD, que converte o StandardCost valor no campo em um valor de dólar:
=Code.ToUSD(Fields!StandardCost.Value)
Para fazer referência a coleções internas em seu código personalizado, inclua uma referência ao 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), você pode adicionar referências a elas a partir de qualquer expressão, conforme mostrado nos exemplos a seguir. Em uma expressão, uma constante personalizada é tratada como uma Variante.
=Code.MyNote
=Code.NCopies
=Code.MyVersion
=Code.MyDoubleVersion
O exemplo a seguir inclui a referência de código e a implementação de código da função FixSpelling, que substitui o texto "Bicycle" para todas as ocorrências do texto "Bike" no SubCategory campo.
=Code.FixSpelling(Fields!SubCategory.Value)
O código a seguir, quando incorporado em um bloco de código de definição de relatório, mostra uma implementação do método FixSpelling . Este exemplo mostra como usar uma referência totalmente qualificada para a classe Microsoft .NET Framework StringBuilder .
Public Function FixSpelling(ByVal s As String) As String
Dim strBuilder As New System.Text.StringBuilder(s)
If s.Contains("Bike") Then
strBuilder.Replace("Bike", "Bicycle")
Return strBuilder.ToString()
Else : Return s
End If
End Function
Para mais informações sobre coleções e inicialização de objetos incorporados, consulte Globais e Referências de Utilizadores Integrados (Construtor de Relatórios e SSRS) e Inicialização de Objetos de Montagem Personalizados.
Incluindo Referências a Parâmetros do Código
Pode referenciar a coleção global de parâmetros através de código personalizado num bloco de código da definição do relatório ou numa assembly personalizada que fornecer. A coleção de parâmetros é somente leitura e não tem iteradores públicos. Você não pode usar uma construção do Visual Basic For Each para percorrer a coleção. Você precisa saber o nome do parâmetro definido na definição de relatório antes de poder fazer referência a ele em seu código. No entanto, você pode iterar através de todos os valores de um parâmetro de vários valores.
A tabela a seguir inclui exemplos de referência à coleção Parameters interna a partir do código personalizado:
**Passar toda uma coleção global de parâmetros para código personalizado.** Esta função devolve o valor de um parâmetro específico de relatório, MyParameter.
Referência na Expressão =Code.DisplayAParameterValue(Parameters)
Definição de código personalizado
Public Function DisplayAParameterValue(ByVal parameters as Parameters) as Object
Return parameters("MyParameter").Value
End Function
Passando um parâmetro individual para o código personalizado.
Referência na Expressão =Code.ShowParametersValues(Parameters!DayOfTheWeek)
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.
Definição de código personalizado
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
Incluindo Referências a Código de Assemblies Customizados
Para usar montagens personalizadas num relatório, deve primeiro criar a assembleia, disponibilizá-la ao Designer de Relatórios, adicionar uma referência à montagem no relatório e, em seguida, usar uma expressão no relatório para se referir aos métodos contidos nessa assembleia. Quando o relatório é implementado no servidor de relatórios, também deve implementar o assembly personalizado no servidor de relatórios.
Para informações sobre como criar uma montagem personalizada e disponibilizá-la ao Construtor de Relatórios, consulte Utilização de Montagens Personalizadas com Relatórios.
Para referir-se a código personalizado numa expressão, deve invocar o membro de uma classe dentro do assemblage. A forma como fazes isto depende se o método é estático ou baseado em instâncias. Métodos estáticos dentro de uma montagem personalizada estão disponíveis globalmente no relatório. Pode aceder a métodos estáticos em expressões especificando o namespace, a classe e o nome do método. O exemplo seguinte chama ao método ToGBP, que converte o valor do valor do StandardCost de dólar para libras esterlinas:
=CurrencyConversion.DollarCurrencyConversion.ToGBP(Fields!StandardCost.Value)
Métodos baseados em instâncias estão disponíveis através de um membro do Código definido globalmente. Acedes a estes referindo-se ao membro do Código , seguido da instância e do nome do método. O exemplo seguinte chama ao método de instância ToEUR, que converte o valor do StandardCost de dólar para euro:
=Code.m_myDollarConversion.ToEUR(Fields!StandardCost.Value)
Observação
No Designer de Relatórios, um assembly personalizado é carregado uma vez e só é descarregado até fechares o Visual Studio. Se visualizar um relatório, fizer alterações num assembly personalizado usado no relatório e depois visualizar novamente o relatório, as alterações não aparecerão na segunda visualização. Para recarregar o assembly, fecha e reabre o Visual Studio e depois faz uma pré-visualização do relatório.
Para mais informações sobre como aceder ao seu código, consulte Aceder a Assemblies Personalizados através de Expressões.
Passagem de Coleções Incorporadas para Assemblies Personalizados
Se quiser passar coleções incorporadas, como Globals ou Parâmetros, para um assembly personalizado para processamento, deve adicionar uma referência de assembly no seu projeto de código ao assembly que define estas coleções e aceder ao espaço de nomes correto. Dependendo se está a desenvolver o assembly personalizado para um relatório que é executado num servidor de relatórios (relatório do servidor) ou num relatório que é executado localmente numa aplicação .NET (relatório local), o assembly que precisa de referenciar é diferente. Veja abaixo para mais detalhes.
Espaço de Nomes: Microsoft.ReportingServices.ReportProcessing.ReportObjectModel
Assembleia (relatório local): Microsoft.ReportingServices.ProcessingObjectModel.dll
Assembly (relatório do servidor): Microsoft.ReportViewer.ProcessingObjectModel.dll
Como o conteúdo das coleções Fields e ReportItems pode mudar dinamicamente em tempo de execução, não deve mantê-los entre chamadas para a assembly personalizada (por exemplo, numa variável membro). A mesma recomendação aplica-se geralmente a todas as coleções incorporadas.
Conteúdo relacionado
- Adicionar Código a um Relatório (SSRS)
- Utilização de Assemblies Personalizados com Relatórios
- Adicionar uma Referência de Assembleia a um Relatório (SSRS)
- Tutoriais do Reporting Services (SSRS)
- Exemplos de Expressões (Construtor de Relatórios e SSRS)
- Exemplos de Relatórios (Construtor de Relatórios e SSRS)