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.
Expressões são usadas com frequência em relatórios para controlar o conteúdo e a aparência do relatório. Expressões são escritas no Microsoft Visual Basic e podem usar funções internas de código personalizado, variáveis de relatório e grupo e variáveis definidas pelo usuário. As expressões começam com um sinal de igual (=). Para obter mais informações sobre o editor de expressões e os tipos de referências que você pode incluir, consulte Usos de Expressão em Relatórios (Construtor de Relatórios e SSRS) e Adicionar uma Expressão (Construtor de Relatórios e SSRS).
Importante
Quando o Sandboxing RDL está habilitado, somente determinados tipos e membros podem ser usados no texto da expressão no momento da publicação do relatório. Para obter mais informações, consulte Habilitar e Desabilitar a Área Restrita RDL.
Este tópico fornece exemplos de expressões que podem ser usadas para tarefas comuns em um relatório.
Funções do Visual Basic Exemplos de funções de data, cadeia de caracteres, conversão e Visual Basic condicional.
Funções de relatório Exemplos de agregações e outras funções de relatório internas.
Aparência dos dados do relatório Exemplos para alterar a aparência de um relatório.
Propriedades Exemplos para definir as propriedades do item de relatório para controlar o formato ou a visibilidade.
Parâmetros Exemplos para usar parâmetros em uma expressão.
Código personalizado Exemplos de código personalizado inserido.
Para obter exemplos de expressão para usos específicos, consulte os seguintes tópicos:
Exemplos de expressões de grupo (Construtor de Relatórios e SSRS)
Exemplos de equações de filtro (Construtor de Relatórios e SSRS)
Referências de coleções de variáveis de grupo e de relatório (Construtor de Relatórios e SSRS)
Para obter mais informações sobre expressões simples e complexas, em que você pode usar expressões e os tipos de referências que podem ser incluídas em uma expressão, consulte tópicos em Expressões (Construtor de Relatórios e SSRS). Para obter mais informações sobre o contexto no qual as expressões são avaliadas para calcular agregações, consulte Escopo de Expressão para Totais, Agregações e Coleções Internas (Construtor de Relatórios e SSRS).
Para saber como escrever expressões que usam muitas das funções e operadores também usados por exemplos de expressão neste tópico, mas no contexto de escrever um relatório, consulte Tutorial: Apresentando expressões.
O editor de expressões inclui uma exibição hierárquica de funções internas. Quando você seleciona a função, um exemplo de código aparece no painel Valores. Para obter mais informações, consulte a caixa de diálogo Expressão ou a caixa de diálogo Expressão (Construtor de Relatórios).
Funções
Muitas expressões em um relatório contêm funções. Você pode formatar dados, aplicar lógica e acessar metadados de relatório usando essas funções. Você pode escrever expressões que usam funções da biblioteca de tempo de execução do Microsoft Visual Basic, e dos espaços de nomes Convert e Math. É possível adicionar referências a funções a partir de outros assemblies ou de código personalizado. Use também classes do Microsoft .NET Framework, incluindo System.Text.RegularExpressions.
Funções do Visual Basic
Você pode usar funções do Visual Basic para manipular os dados exibidos em caixas de texto ou que são usados para parâmetros, propriedades ou outras áreas do relatório. Esta seção fornece exemplos que demonstram algumas dessas funções. Para obter mais informações, confira Membros da Biblioteca de Runtime do Visual Basic no MSDN.
O .NET Framework fornece muitas opções de formato personalizado, por exemplo, para formatos de data específicos. Para obter mais informações, consulte Tipos de Formatação no MSDN.
Funções matemáticas
- A
Roundfunção é útil para arredondar números para o inteiro mais próximo. A expressão a seguir arredonda o número 1.3 para 1:
= Round(1.3)
Você também pode escrever uma expressão para arredondar um valor para um múltiplo que você especificar, semelhante à MRound função no Excel. Multiplique o valor por um fator que cria um inteiro, arredondar o número e, em seguida, dividir pelo mesmo fator. Por exemplo, para arredondar 1.3 para o múltiplo mais próximo de .2 (1.4), use a seguinte expressão:
= Round(1.3*5)/5
Funções de data
- A
Todayfunção fornece a data atual. Essa expressão pode ser usada em uma caixa de texto para exibir a data no relatório ou em um parâmetro para filtrar dados com base na data atual.
=Today()
- A
DateAddfunção é útil para fornecer um intervalo de datas com base em um único parâmetro. A expressão a seguir fornece uma data que é seis meses após a data de um parâmetro chamado StartDate.
=DateAdd(DateInterval.Month, 6, Parameters!StartDate.Value)
- A
Yearfunção exibe o ano para uma data específica. Você pode usar isso para agrupar datas ou exibir o ano como um rótulo para um conjunto de datas. Essa expressão fornece o ano para um grupo determinado de datas de pedidos de vendas. AMonthfunção e outras funções também podem ser usadas para manipular datas. Para obter mais informações, consulte a documentação do Visual Basic.
=Year(Fields!OrderDate.Value)
- É possível combinar funções em uma expressão para personalizar o formato. A expressão a seguir altera o formato de uma data na forma mês-dia-ano para mês-semana-número da semana. Por exemplo, 23/12/2009 a 3 de dezembro:
=Format(Fields!MyDate.Value, "MMMM") & " Week " &
(Int(DateDiff("d", DateSerial(Year(Fields!MyDate.Value),
Month(Fields!MyDate.Value),1), Fields!FullDateAlternateKey.Value)/7)+1).ToString
Quando usado como um campo calculado em um conjunto de dados, é possível usar essa expressão em um gráfico para agregar valores por semana dentro de cada mês.
- A expressão a seguir formata o valor SellStartDate como MMM-YY. O campo SellStartDate é um tipo de dado datetime.
=FORMAT(Fields!SellStartDate.Value, "MMM-yy")
- A expressão a seguir formata o valor SellStartDate como dd/MM/yyyyy. O campo de dados SellStartDate é do tipo datetime.
=FORMAT(Fields!SellStartDate.Value, "dd/MM/yyyy")
- A
CDatefunção converte o valor em uma data. ANowfunção retorna um valor de data que contém a data e a hora atuais de acordo com seu sistema.DateDiffretorna um valor Long especificando o número de intervalos de tempo entre dois valores date.
O exemplo a seguir exibe a data de início do ano atual
=DateAdd(DateInterval.Year,DateDiff(DateInterval.Year,CDate("01/01/1900"),Now()),CDate("01/01/1900"))
- O exemplo a seguir exibe a data de início do mês anterior com base no mês atual.
=DateAdd(DateInterval.Month,DateDiff(DateInterval.Month,CDate("01/01/1900"),Now())-1,CDate("01/01/1900"))
- A expressão a seguir gera os anos de intervalo entre SellStartDate e LastReceiptDate. Esses campos estão em dois conjuntos de dados diferentes, DataSet1 e DataSet2. A Função First (Construtor de Relatórios e SSRS), que é uma função de agregação, retorna o primeiro valor de SellStartDate em DataSet1 e o primeiro valor de LastReceiptDate em DataSet2.
=DATEDIFF("yyyy", First(Fields!SellStartDate.Value, "DataSet1"), First(Fields!LastReceiptDate.Value, "DataSet2"))
- A função
DatePartretorna um valor inteiro que contém o componente especificado de uma data determinada. A expressão a seguir retorna o ano para o primeiro valor do SellStartDate em DataSet1. O escopo do conjunto de dados é especificado porque há vários conjuntos de dados no relatório.
=Datepart("yyyy", First(Fields!SellStartDate.Value, "DataSet1"))
- A
DateSerialfunção retorna um valor Date que representa um ano, mês e dia especificados, com as informações de hora definidas como meia-noite. O exemplo a seguir exibe a data de término do mês anterior, com base no mês atual.
=DateSerial(Year(Now()), Month(Now()), "1").AddDays(-1)
- As expressões a seguir exibem várias datas com base em um valor de parâmetro de data selecionado pelo usuário.
| Exemplo de Descrição | Exemplo |
|---|---|
| Ontem | =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value)-1) |
| Dois Dias Atrás | =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value)-2) |
| Um Mês Atrás | =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value)-1,Day(Parameters!TodaysDate.Value)) |
| Dois Meses Atrás | =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value)-2,Day(Parameters!TodaysDate.Value)) |
| Um Ano Atrás | =DateSerial(Year(Parameters!TodaysDate.Value)-1,Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value)) |
| Dois Anos Atrás | =DateSerial(Year(Parameters!TodaysDate.Value)-2,Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value)) |
Funções de cadeia de caracteres
- Combine mais de um campo usando operadores de concatenação e constantes do Visual Basic. A expressão a seguir retorna dois campos, cada um em uma linha separada na mesma caixa de texto:
=Fields!FirstName.Value & vbCrLf & Fields!LastName.Value
- Formatar datas e números em uma cadeia de caracteres com a
Formatfunção. A expressão a seguir exibe valores dos parâmetros StartDate e EndDate em formato de data por extenso:
=Format(Parameters!StartDate.Value, "D") & " through " & Format(Parameters!EndDate.Value, "D")
Se a caixa de texto contiver apenas uma data ou número, você deverá usar a propriedade Formatar da caixa de texto para aplicar a formatação em vez da Format função dentro da caixa de texto.
- As funções
Right,LeneInStrsão úteis para retornar uma subcadeia de caracteres, por exemplo, cortar DOMAIN\nome de usuário para apenas o nome de usuário. A seguinte expressão retorna a parte da cadeia de caracteres à direita de um caractere de barra invertida (\) de um parâmetro denominado User:
=Right(Parameters!User.Value, Len(Parameters!User.Value) - InStr(Parameters!User.Value, "\"))
A seguinte expressão resulta no mesmo valor que o anterior, usando membros da classe String do .NET Framework em vez de funções do Visual Basic:
=Parameters!User.Value.Substring(Parameters!User.Value.IndexOf("\")+1, Parameters!User.Value.Length-Parameters!User.Value.IndexOf("\")-1)
- Exiba os valores selecionados de um parâmetro de vários valores. O exemplo a seguir usa a
Joinfunção para concatenar os valores selecionados do parâmetro MySelection em uma única cadeia de caracteres que pode ser definida como uma expressão para o valor de uma caixa de texto em um item de relatório:
= Join(Parameters!MySelection.Value)
O exemplo a seguir faz o mesmo que o exemplo acima, bem como exibe uma cadeia de caracteres de texto antes da lista de valores selecionados.
="Report for " & JOIN(Parameters!MySelection.Value, " & ")
- As
Regexfunções do .NET Framework System.Text.RegularExpressions são úteis para alterar o formato das cadeias de caracteres existentes, por exemplo, formatar um número de telefone. A expressão a seguir usa aReplacefunção para alterar o formato de um número de telefone de dez dígitos em um campo de "nnn-nnn-nnnn" para "(nnn) nnn-nnnn":
=System.Text.RegularExpressions.Regex.Replace(Fields!Phone.Value, "(\d{3})[ -.]*(\d{3})[ -.]*(\d{4})", "($1) $2-$3")
Observação
Verifique se o valor para Fields!Phone.Value não tem espaços adicionais e se é do tipo String.
Busca
- Ao especificar um campo de chave, você pode usar a
Lookupfunção para recuperar um valor de um conjunto de dados para uma relação um-para-um, por exemplo, um par chave-valor. A expressão a seguir exibe o nome do produto de um conjunto de dados ("Produto"), dado o identificador do produto para comparação.
=Lookup(Fields!PID.Value, Fields!ProductID.Value, Fields!ProductName.Value, "Product")
LookupSet
- Ao especificar um campo de chave, você pode usar a
LookupSetfunção para recuperar um conjunto de valores de um conjunto de dados para uma relação um-para-muitos. Por exemplo, uma pessoa pode ter vários números de telefone. No exemplo seguinte, suponha que o conjunto de dados PhoneList contenha um identificador de pessoa e um número de telefone em cada linha.LookupSetretorna uma matriz de valores. A expressão a seguir combina os valores retornados em uma única cadeia de caracteres e exibe a lista de números de telefone para a pessoa especificada pelo ContactID:
=Join(LookupSet(Fields!ContactID.Value, Fields!PersonID.Value, Fields!PhoneNumber.Value, "PhoneList"),",")
Funções de conversão
Use funções do Visual Basic para converter um campo de um tipo de dados em outro tipo de dados. As funções de conversão podem ser usadas para converter o tipo de dados padrão de um campo para o tipo de dados necessário para cálculos ou para combinar texto.
- A expressão a seguir converte a constante 500 para o tipo Decimal, a fim de compará-la a um tipo de dados monetário Transact-SQL no campo Valor para uma expressão de filtro.
=CDec(500)
- A expressão a seguir exibe o número de valores selecionados para o parâmetro de vários valores MySelection.
=CStr(Parameters!MySelection.Count)
Funções de decisão
- A
Iiffunção retorna um dos dois valores, dependendo se a expressão é verdadeira ou não. A expressão a seguir usa aIiffunção para retornar um valor booliano deTruese o valor excederLineTotal100. Caso contrário, retornaráFalse:
=IIF(Fields!LineTotal.Value > 100, True, False)
- Use várias
IIFfunções (também conhecidas como "IIFs aninhadas") para retornar um dos três valores, dependendo do valor dePctComplete. A expressão a seguir pode ser colocada na cor de preenchimento de uma caixa de texto para alterar a cor da tela de fundo, dependendo do valor na caixa de texto.
=IIF(Fields!PctComplete.Value >= 10, "Green", IIF(Fields!PctComplete.Value >= 1, "Blue", "Red"))
Valores maiores ou iguais a 10 são exibidos com um plano de fundo verde, entre 1 e 9 são exibidos com um plano de fundo azul, e menos de 1 são exibidos com um plano de fundo vermelho.
- Uma maneira diferente de obter a mesma funcionalidade usa a
Switchfunção. ASwitchfunção é útil quando você tem três ou mais condições para testar. ASwitchfunção retorna o valor associado à primeira expressão em uma série que é avaliada como true:
=Switch(Fields!PctComplete.Value >= 10, "Green", Fields!PctComplete.Value >= 1, "Blue", Fields!PctComplete.Value = 1, "Yellow", Fields!PctComplete.Value <= 0, "Red",)
Valores maiores ou iguais a 10 são exibidos com um plano de fundo verde, entre 1 e 9, com um plano de fundo azul, igual a 1 exibição com um plano de fundo amarelo e 0 ou menos exibição com um plano de fundo vermelho.
- Teste o valor do
ImportantDatecampo e retorne "Vermelho" se ele tiver mais de uma semana e "Azul" caso contrário. Essa expressão pode ser usada para controlar a propriedade Color de uma caixa de texto em um item de relatório:
=IIF(DateDiff("d",Fields!ImportantDate.Value, Now())>7,"Red","Blue")
- Teste o valor do
PhoneNumbercampo e retorne "Sem Valor" se ele estivernull(Nothingno Visual Basic); caso contrário, retorne o valor do número de telefone. Essa expressão pode ser usada para controlar o valor de uma caixa de texto em um item de relatório.
=IIF(Fields!PhoneNumber.Value Is Nothing,"No Value",Fields!PhoneNumber.Value)
- Teste o valor do
Departmentcampo e retorne um nome de sub-relatório ou umnull(Nothingno Visual Basic). Essa expressão pode ser usada para sub-relatórios de detalhamento condicional.
=IIF(Fields!Department.Value = "Development", "EmployeeReport", Nothing)
- Teste se um valor de campo é nulo. Essa expressão pode ser usada para controlar a
Hiddenpropriedade de um item de relatório de imagem. No exemplo a seguir, a imagem especificada pelo campo [LargePhoto] será exibida somente se o valor do campo não for nulo.
=IIF(IsNothing(Fields!LargePhoto.Value),True,False)
- A
MonthNamefunção retorna um valor de cadeia de caracteres que contém o nome do mês especificado. O exemplo a seguir exibe NA no campo Mês quando o campo contém o valor 0.
IIF(Fields!Month.Value=0,"NA",MonthName(IIF(Fields!Month.Value=0,1,Fields!Month.Value)))
Funções de relatório
Em uma expressão, você pode adicionar uma referência a funções de relatório adicionais que manipulam dados em um relatório. Esta seção fornece exemplos de duas dessas funções. Para obter mais informações sobre funções de relatório e exemplos, consulte Referência de funções agregadas (Construtor de Relatórios e SSRS).
Soma
- A
Sumfunção pode totalizar os valores em um grupo ou região de dados. Essa função pode ser útil no cabeçalho ou no rodapé de um grupo. A expressão a seguir exibe a soma de dados no grupo Ordem ou na região de dados:
=Sum(Fields!LineTotal.Value, "Order")
- Você também pode usar a
Sumfunção para cálculos de agregação condicional. Por exemplo, se houver um conjunto de dados com um campo chamado Estado, com os valores possíveis Não Iniciado, Iniciado, Concluído, a seguinte expressão, quando for colocada em um cabeçalho de grupo, calculará a soma agregada somente para o valor Concluído.
=Sum(IIF(Fields!State.Value = "Finished", 1, 0))
NúmeroDaLinha
- A
RowNumberfunção, quando usada em uma caixa de texto dentro de uma região de dados, exibe o número da linha para cada instância da caixa de texto na qual a expressão é exibida. Essa função pode ser útil para numerar linhas em uma tabela. Ela também pode ser útil para tarefas mais complexas, como fornecer quebras de página baseadas no número de linhas. Para obter mais informações, consulte Quebras de Página neste tópico.
O escopo que você especifica para RowNumber controla quando a renumeração começa. A Nothing palavra-chave indica que a função começará a contar na primeira linha na região de dados mais externa. Para iniciar a contagem dentro de regiões de dados aninhadas, use o nome da região de dados. Para iniciar a contagem em um grupo, use o nome do grupo.
=RowNumber(Nothing)
Aparência dos dados do relatório
É possível usar expressões para manipular como os dados são exibidos em um relatório. Por exemplo, é possível exibir os valores de dois campos em uma única caixa de texto, exibir informações sobre o relatório ou afetar o modo como as quebras de página são inseridas no relatório.
Cabeçalhos e rodapés de página
Ao criar um relatório, convém exibir o nome do relatório e do número da página no rodapé do relatório. Para fazer isso, você pode usar as seguintes expressões:
- A seguinte expressão fornece o nome do relatório e a hora em que foi executado. Ela pode ser colocada em uma caixa de texto no rodapé ou no corpo do relatório. A hora é formatada com a cadeia de caracteres de formatação de data abreviada do .NET Framework:
=Globals.ReportName & ", dated " & Format(Globals.ExecutionTime, "d")
- A seguinte expressão, colocada em uma caixa de texto no rodapé de um relatório, fornece o número da página e o total de páginas no relatório:
=Globals.PageNumber & " of " & Globals.TotalPages
Os exemplos a seguir descrevem como exibir os primeiros e os últimos valores de uma página no cabeçalho da página, semelhante ao que você pode encontrar em uma listagem de diretório. O exemplo pressupõe uma região de dados que contém uma caixa de texto chamada LastName.
- A expressão a seguir, colocada em uma caixa de texto no lado esquerdo do cabeçalho da página, fornece o primeiro valor da caixa de
LastNametexto na página:
=First(ReportItems("LastName").Value)
- A expressão a seguir, colocada em uma caixa de texto no lado direito do cabeçalho da página, fornece o último valor da caixa de
LastNametexto na página:
=Last(ReportItems("LastName").Value)
O exemplo a seguir descreve como exibir um total de páginas. O exemplo pressupõe uma região de dados que contém uma caixa de texto chamada Cost.
- A expressão a seguir, colocada no cabeçalho ou rodapé da página, fornece a soma dos valores na
Costcaixa de texto da página:
=Sum(ReportItems("Cost").Value)
Observação
Você pode fazer referência a apenas um item de relatório por expressão em um cabeçalho ou rodapé de página. Além disso, é possível fazer referência ao nome da caixa de texto, mas não à expressão de dados reais dentro da caixa de texto, nas expressões de cabeçalho e rodapé de página.
Quebras de página
Em alguns relatórios, talvez você queira colocar uma quebra de página no final de um número especificado de linhas em vez de, ou além disso, em grupos ou itens de relatório. Para fazer isso, crie um grupo que contenha os grupos ou registros de detalhes desejados, adicione uma quebra de página ao grupo e, em seguida, adicione uma expressão de grupo para agrupar por um número especificado de linhas.
- A expressão a seguir, quando colocada na expressão de grupo, atribui um número para cada conjunto de 25 linhas. Quando uma quebra de página é definida para o grupo, essa expressão resulta em uma quebra de página a cada 25 linhas.
=Ceiling(RowNumber(Nothing)/25)
Para permitir que o usuário defina um valor para o número de linhas por página, crie um parâmetro nomeado RowsPerPage e baseie a expressão de grupo no parâmetro, conforme mostrado na seguinte expressão:
=Ceiling(RowNumber(Nothing)/Parameters!RowsPerPage.Value)
Para obter mais informações sobre como definir quebras de página para um grupo, consulte Adicionar uma quebra de página (Construtor de Relatórios e SSRS).
Propriedades
Expressões não são usadas apenas para exibir dados em caixas de texto. Elas também podem ser usadas para alterar o modo como as propriedades são aplicadas aos itens do relatório. É possível alterar informações de estilo para um item de relatório ou alterar sua visibilidade.
Formatação
- A expressão a seguir, quando usada na propriedade Color de uma caixa de texto, altera a cor do texto dependendo do valor do
Profitcampo:
=Iif(Fields!Profit.Value < 0, "Red", "Black")
Use também a variável de objeto Me do Visual Basic. Essa variável é outra maneira de fazer referência ao valor de uma caixa de texto.
=Iif(Me.Value < 0, "Red", "Black")
- A expressão a seguir, quando usada na propriedade BackgroundColor de um item de relatório em uma região de dados, alterna a cor de fundo de cada linha entre verde claro e branco.
=Iif(RowNumber(Nothing) Mod 2, "PaleGreen", "White")
Se você estiver usando uma expressão para um escopo especificado, talvez seja necessário indicar o conjunto de dados para a função de agregação:
=Iif(RowNumber("Employees") Mod 2, "PaleGreen", "White")
Observação
As cores disponíveis foram obtidas da enumeração KnownColor do .NET Framework.
Cores do gráfico
Para especificar cores para um gráfico de formas, você pode usar código personalizado para controlar a ordem em que as cores são mapeadas para valores de ponto de dados. Isso ajuda você a usar cores consistentes para vários gráficos que têm os mesmos grupos de categorias. Para obter mais informações, confira Especificar cores consistentes em gráficos com várias formas (Construtor de Relatórios e SSRS).
Visibilidade
Você pode mostrar e ocultar itens em um relatório usando as propriedades de visibilidade para o item de relatório. Em uma região de dados, como uma tabela, é possível ocultar inicialmente as linhas de detalhes com base no valor de uma expressão.
- A expressão a seguir, quando usada para a visibilidade inicial das linhas de detalhes em um grupo, mostra as linhas de detalhes para todas as vendas que excedam 90% no campo
PctQuota.
=Iif(Fields!PctQuota.Value>.9, False, True)
- A expressão a seguir, quando definida na propriedade Hidden de uma tabela, mostra a tabela somente se ela tiver mais de 12 linhas:
=IIF(CountRows()>12,false,true)
- A expressão a seguir
Hidden, quando definida na propriedade de uma coluna, mostra a coluna somente se o campo existir no conjunto de dados do relatório após a recuperação dos dados da fonte de dados.
=IIF(Fields!Column_1.IsMissing, true, false)
URLs
É possível personalizar URLs usando dados do relatório e também controlar condicionalmente se as URLs são adicionadas como uma ação para uma caixa de texto.
- A expressão a seguir, quando usada como uma ação em uma caixa de texto, gera uma URL personalizada que especifica o campo
EmployeeIDdo conjunto de dados como um parâmetro de URL.
="http://adventure-works/MyInfo?ID=" & Fields!EmployeeID.Value
Para obter mais informações, consulte Adicionar um hiperlink a uma URL (Construtor de Relatórios e SSRS).
- A expressão a seguir controla condicionalmente se uma URL deve ser adicionada em uma caixa de texto. Essa expressão depende de um parâmetro nomeado
IncludeURLsque permite que um usuário decida se deve incluir URLs ativas em um relatório. Essa expressão é definida como uma ação em uma caixa de texto. Definindo o parâmetro como False e exibindo o relatório, você pode exportar o relatório do Microsoft Excel sem hiperlinks.
=IIF(Parameters!IncludeURLs.Value,"http://adventure-works.com/productcatalog",Nothing)
Dados de relatório
As expressões podem ser usadas para manipular os dados usados no relatório. Você pode fazer referência a parâmetros e a outras informações do relatório. Você pode até mesmo alterar a consulta usada para recuperar dados do relatório.
Parâmetros
É possível usar expressões em um parâmetro para variar o valor padrão do parâmetro. Por exemplo, você pode usar um parâmetro para filtrar dados para um usuário específico baseado na ID do usuário usada para executar o relatório.
- A expressão a seguir, quando usada com o valor padrão para um parâmetro, coleta a ID do usuário da pessoa que executa o relatório:
=User!UserID
- Para fazer referência a um parâmetro em um parâmetro de consulta, expressão de filtro, caixa de texto ou outra área do relatório, use a
Parameterscoleção global. Este exemplo supõe que o parâmetro é denominado Department:
=Parameters!Department.Value
- Parâmetros podem ser criados em um relatório, mas definidos como ocultos. Quando o relatório é executado no servidor de relatório, o parâmetro não aparece na barra de ferramentas e o leitor de relatório não pode alterar o valor padrão. É possível usar um parâmetro oculto, definido como um valor padrão, como uma constante personalizada. É possível usar esse valor em qualquer expressão, incluindo uma expressão de campo. A expressão a seguir identifica o campo especificado pelo valor do parâmetro padrão para o parâmetro denominado ParameterField:
=Fields(Parameters!ParameterField.Value).Value
Código personalizado
É possível usar código personalizado em um relatório. O código personalizado é inserido em um relatório ou armazenado em um assembly personalizado que é usado no relatório. Para obter mais informações sobre código personalizado, consulte Código Personalizado e Referências de Assembly em Expressões no Designer de Relatórios (SSRS).
Usando variáveis de grupo para agregação personalizada
Você pode inicializar o valor para uma variável de grupo que é local para um escopo de grupo específico e depois incluir uma referência a essa variável nas expressões. Um dos modos pelos quais é possível usar uma variável de grupo com código personalizado é implementar uma agregação personalizada. Para obter mais informações, consulte Como usar variáveis de grupo no Reporting Services 2008 para agregação personalizada.
Para obter mais informações sobre variáveis, consulte Referências de coleções de variáveis de relatório e de grupo (Construtor de Relatórios e SSRS).
Ocultando valores nulos ou zero em tempo de execução
Alguns valores em uma expressão podem ser avaliados como nulos ou indefinidos na hora do processamento do relatório. Isso pode criar erros em tempo de execução que resultam em #Error exibidos na caixa de texto em vez da expressão avaliada. A IIF função é particularmente sensível a esse comportamento porque, ao contrário de uma instrução If-Then-Else, cada parte da IIF instrução é avaliada (incluindo chamadas de função) antes de ser passada para a rotina que testa para true ou false. A instrução =IIF(Fields!Sales.Value is NOTHING, 0, Fields!Sales.Value) gera #Error no relatório renderizado se Fields!Sales.Value for NADA.
Para evitar essa condição, use uma das seguintes estratégias:
- Defina o numerador como 0 e o denominador como 1 se o valor do campo B for 0 ou indefinido; caso contrário, defina o numerador como o valor do campo A e do denominador como o valor do campo B.
=IIF(Field!B.Value=0, 0, Field!A.Value / IIF(Field!B.Value =0, 1, Field!B.Value))
- Use uma função de código personalizado para retornar o valor da expressão. O exemplo a seguir retorna a diferença da porcentagem entre um valor atual e um valor anterior. Isso pode ser usado para calcular a diferença entre dois valores sucessivos e manipula o caso de borda da primeira comparação (quando não há nenhum valor anterior) e casos em que o valor anterior ou o valor atual é
null(Nothingno Visual Basic).
Public Function GetDeltaPercentage(ByVal PreviousValue, ByVal CurrentValue) As Object
If IsNothing(PreviousValue) OR IsNothing(CurrentValue) Then
Return Nothing
Else if PreviousValue = 0 OR CurrentValue = 0 Then
Return Nothing
Else
Return (CurrentValue - PreviousValue) / CurrentValue
End If
End Function
A expressão a seguir mostra como chamar esse código personalizado de uma caixa de texto, para o contêiner "ColumnGroupByYear" (grupo ou região de dados).
=Code.GetDeltaPercentage(Previous(Sum(Fields!Sales.Value),"ColumnGroupByYear"), Sum(Fields!Sales.Value))
Isso ajuda a evitar exceções em tempo de execução. Agora você pode usar uma expressão como =IIF(Me.Value < 0, "red", "black") na Color propriedade da caixa de texto para condicionalmente o texto de exibição com base em se os valores são maiores ou menores que 0.
Consulte Também
- Exemplos de equações de filtro (Construtor de Relatórios e SSRS)
- Exemplos de expressões de grupo (Construtor de Relatórios e SSRS)
- Uso de expressões em relatórios (Construtor de Relatórios e SSRS)
- Expressões (Construtor de Relatórios e SSRS)
- Filtros comumente usados (Construtor de Relatórios e SSRS)