Partilhar via


Usando referências de coleções de campos de conjuntos de dados em expressões (Reporting Services)

Cada conjunto de dados de um relatório contém uma coleção Fields. A coleção Fields é o conjunto de campos especificado pela consulta do conjunto de dados mais qualquer campo calculado adicional 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 Dados do Relatório para uma célula de tabela na superfície de design, o Reporting Services exibe [Sales]. Isso representa a expressão subjacente =Fields!Sales.Value que é 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, consulte Compreendendo expressões simples e complexas (Reporting Services) e Trabalhando com campos em um conjunto de dados de relatório.

Exibindo 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 Usando funções internas de relatório e de agregação em expressões (Reporting Services).

Para exibir valores resumidos de uma coleção de campos em uma caixa de texto diretamente na superfície de design (não 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"). =Sum(Fields!Sales,"SalesData").

Quando você usa a caixa de diálogo Expressão para definir uma referência de campo simples, pode selecionar a coleção Fields no painel Categoria e ver a lista de campos disponíveis no painel Campo. Cada campo tem diversas 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.

Detectando nulos para um campo do conjunto de dados

Para detectar se o valor de um campo é nulo (Nothing em Visual Basic), use 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)

Detectando 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 será um dos campos recuperados em tempo de execução. Por exemplo, sua consulta poderia chamar um procedimento armazenado em que o conjunto de resultados varia de acordo com um parâmetro de entrada, ou poderia ser SELECT * FROM <table> se a definição da tabela fosse alterada.

ObservaçãoObservaçã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 modo 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 Visual Basic, como IIF ou SWITCH, pois Visual Basic avalia todos os parâmetros da chamada de 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 que retorne um valor booleano com base na existência ou ausência do campo. 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 usar o texto que você escrever em substituição do valor de um campo ausente, escreva um código personalizado que retorne o texto que você possa usar no lugar do valor do campo quando o campo estiver ausente. Por exemplo, a função de código personalizado a seguir retornará o valor do campo se o campo existir e a mensagem indicando que você deve especificar 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.

Usando propriedades de campo estendidas

As propriedades de campo estendidas são propriedades adicionais definidas em um campo pela extensão de processamento de dados, que é determinada pelo tipo de fonte de dados do conjunto de dados. As propriedades de campo estendidas são predefinidas ou específicas para um tipo de fonte de dados.

As propriedades predefinidas são propriedades de campo usadas com freqüência, por exemplo, Key e UniqueName. O Reporting Services mapeia as propriedades disponíveis na fonte de dados para esses campos predefinidos. As propriedades predefinidas aparecem na lista IntelliSense da caixa de diálogo Expressão. À medida que você digitar o nome de um campo usando a sintaxe de coleção de campos, aparecerá uma lista suspensa com as propriedades disponíveis. Use a sintaxe de referência de campo simples para propriedades predefinidas, por exemplo, =Fields!Sales.Value.

As propriedades específicas para um tipo de fonte de dados não aparecem na caixa de diálogo Expressão, mas podem ser determinadas quando você explorar a fonte de dados com seu designer de consulta associado. É possível fazer referência a qualquer propriedade de campo estendida usando a sintaxe de coleção =Fields!FieldName("Property"). Para obter exemplos de propriedades de campo estendidas, consulte Usando propriedades de campo estendidas para um conjunto de dados do Analysis Services. Para saber quais provedores oferecem suporte a propriedades de campo estendidas, consulte Criando conjuntos de dados de relatório no SQL Server Analysis Services, Criando Conjuntos de dados de Relatório de uma fonte de dados SAP NetWeaver BI e Criando conjuntos de dados de relatório de uma fonte de dados do Hyperion Essbase.

Se você especificar uma propriedade que não é suportada pelo campo, a avaliação da expressão será null (Nothing em Visual Basic). Se um provedor de dados não oferecer 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 em 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.