Referências da coleção Fields do conjunto de dados em um relatório paginado (Construtor de Relatórios)
Aplica-se a: Microsoft Report Builder (SSRS) Power BI Report Builder Report Designer no SQL Server Data Tools
Cada conjunto de dados de um relatório paginado contém uma coleção Fields. A coleção Fields é o conjunto de campos especificado pela consulta do conjunto de dados, além de qualquer outro campo calculado que você criar. Assim que você criar um conjunto de dados, a coleção de campos aparecerá no painel Dados do Relatório .
Uma referência de campo simples em uma expressão é exibida na superfície de design como uma expressão simples. Por exemplo, quando você arrasta o campo Sales
do painel de dados do relatório para uma célula de tabela na superfície de design, o [Sales]
é exibido. Esse valor representa a expressão subjacente =Fields!Sales.Value
definida na propriedade Value da caixa de texto. Quando o relatório for executado, o processador de relatório avaliará essa expressão e exibirá os dados reais a partir da fonte de dados na caixa de texto da célula de tabela. Para obter mais informações, confira Expressões (Construtor de Relatórios) e Coleção de campos de conjuntos de dados (Construtor de Relatórios).
Observação
Você pode criar e modificar arquivos de definição de relatório paginado (.rdl) no Construtor de Relatórios da Microsoft, Construtor de Relatórios do Power BI e no Designer de Relatórios no SQL Server Data Tools.
Exibir a coleção de campos de um conjunto de dados
Para exibir os valores individuais de uma coleção de dados, arraste cada campo para uma linha de detalhes da tabela e execute o relatório. Referências provenientes da linha de detalhes de uma tabela ou da região de dados da lista exibem um valor para cada linha do conjunto de dados.
Para exibir valores resumidos para o campo, arraste cada campo numérico para a área de dados de uma matriz. A função de agregação padrão de total da linha é Sum, por exemplo, =Sum(Fields!Sales.Value)
. Você também pode alterar a função padrão para calcular outros totais. Para obter mais informações, consulte Referência de funções agregadas (Construtor de Relatórios).
Para exibir valores resumidos de uma coleção de campos em uma caixa de texto diretamente na superfície de design que não seja parte de uma região de dados, especifique o nome do conjunto de dados como um escopo da função de agregação. Por exemplo, para um conjunto de dados chamado SalesData
, a expressão a seguir especifica o total de todos os valores do campo Sales
: =Sum(Fields!Sales,"SalesData")
.
Quando você usa a caixa de diálogo Expressão para definir uma referência de campo, é possível selecionar a coleção Fields no painel Categoria e ver a lista de campos disponíveis no painel Campo. Cada campo tem várias propriedades, incluindo Value e IsMissing. As demais propriedades são propriedades de campo estendidas predefinidas que podem estar disponíveis para o conjunto de dados, dependendo do tipo de fonte de dados.
Detectar nulos para um campo do conjunto de dados
Para detectar um valor de campo nulo (Nothing no Visual Basic), você pode usar a função IsNothing. Se ela for incluída em uma caixa de texto de uma linha de detalhes de tabela, a expressão a seguir testará o campo MiddleName
e substituirá o texto "No Middle Name" quando o valor for nulo e o próprio valor do campo quando esse valor não for nulo:
=IIF(IsNothing(Fields!MiddleName.Value),"No Middle Name",Fields!MiddleName.Value)
Detectar campos ausentes em consultas dinâmicas em tempo de execução
Por padrão, os itens da coleção Fields têm duas propriedades: Value e IsMissing. A propriedade IsMissing indica se um campo que foi definido para um conjunto de dados em tempo de design estará contido em um dos campos recuperados em tempo de execução. Por exemplo, a consulta chamaria um procedimento armazenado cujo conjunto de resultados varia de acordo com um parâmetro de entrada ou a consulta seria SELECT * FROM <table>
se a definição da tabela fosse alterada.
Observação
IsMissing detecta alterações no esquema do conjunto de dados entre o tempo de design e o tempo de execução de qualquer tipo de fonte de dados. IsMissing não pode ser usado para detectar membros vazios em um cubo multidimensional e não está relacionado aos conceitos da linguagem de consulta MDX de EMPTY e NON EMPTY.
É possível testar a propriedade IsMissing em código personalizado para determinar a existência de um campo em um conjunto de resultados. Não é possível testar sua presença usando uma expressão com uma chamada de função do Visual Basic, como IIF ou SWITCH, pois o Visual Basic avalia todos os parâmetros na chamada para a função, resultando em um erro quando a referência ao campo ausente for avaliada.
Exemplo de controle da visibilidade de uma coluna dinâmica de um campo ausente
Para definir uma expressão que controla a visibilidade de uma coluna que exibe um campo em um conjunto de dados, primeiro defina uma função de código personalizado. Essa função deve retornar um valor booliano. O valor é baseado em se o campo está ausente ou não. Por exemplo, a função de código personalizado a seguir retornará verdadeiro se o campo estiver ausente e falso se ele existir.
Public Function IsFieldMissing(field as Field) as Boolean
If (field.IsMissing) Then
Return True
Else
Return False
End If
End Function
Para usar essa função para controlar a visibilidade de uma coluna, defina a propriedade Hidden da coluna como a seguinte expressão:
=Code.IsFieldMissing(Fields!FieldName)
A coluna ficará oculta se o campo não existir.
Exemplo de controle da visibilidade de um valor de caixa de texto de um campo ausente
Para substituir o texto no lugar do valor de um campo ausente, você deve escrever código personalizado. Esse código deve retornar o texto que você pode usar como um substituto quando o campo estiver ausente. Por exemplo, a função de código personalizado a seguir retornará o valor do campo se ele existir. Além disso, o código retorna a mensagem especificada como o segundo parâmetro se o campo não existir:
Public Function IsFieldMissingThenString(field as Field, strMessage as String) as String
If (field.IsMissing) Then
Return strMessage
Else
Return field.Value
End If
End Function
Para usar essa função em uma caixa de texto, adicione a seguinte expressão à propriedade Value:
=Code.IsFieldMissingThenString(Fields!FieldName,"Missing")
A caixa de texto exibe o valor do campo ou o texto que você especificou.
Usar propriedades de campo estendidas
As propriedades de campo estendidas são outras propriedades definidas em um campo pela extensão de processamento de dados. O tipo de fonte de dados determinado para o conjunto de dados. As propriedades de campo estendidas são predefinidas ou específicas para um tipo de fonte de dados. Para obter mais informações, confira Propriedades de campos estendidos para um banco de dados do Analysis Services (SSRS).
Se você especificar uma propriedade que não tem suporte no campo, a avaliação da expressão será null (Nothing no Visual Basic). Se um provedor de dados não der suporte a propriedades de campo estendidas, ou se o campo não for encontrado quando a consulta for executada, o valor da propriedade será null (Nothing no Visual Basic) para propriedades do tipo String e Object e zero (0) para propriedades do tipo Integer. Uma extensão de processamento de dados pode fazer bom uso das propriedades predefinidas ao otimizar consultas que incluem essa sintaxe.