Partilhar via


Funções do Construtor de Relatórios - Função LookupSet num relatório paginado (Construtor de Relatórios)

Aplica-se a: Construtor de Relatórios da Microsoft (SSRS) Designer de Relatórios do Power BI no SQL Server Data Tools

Devolve o conjunto de valores correspondentes para o nome especificado de um conjunto de dados que contém pares nome/valor num relatório paginado.

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.

Sintaxe

  
LookupSet(source_expression, destination_expression, result_expression, dataset)  

Parâmetros

source_expression
(Variante) Uma expressão avaliada no âmbito atual e que especifica o nome ou a chave a consultar. Por exemplo, =Fields!ID.Value.

destination_expression
(Variante) Uma expressão que é avaliada para cada linha de um conjunto de dados e que especifica o nome ou a chave a corresponder. Por exemplo, =Fields!CustomerID.Value.

result_expression
(Variante) Uma expressão avaliada para a linha no conjunto de dados onde source_expression = destination_expression, e que especifica o valor a recuperar. Por exemplo, =Fields!PhoneNumber.Value.

dataset
Uma constante que especifica o nome de um conjunto de dados no relatório. Por exemplo, "ContactInformation".

Devolução

Retorna um VariantArray, ou Nada se não houver correspondência.

Observações

Use LookupSet para obter um conjunto de valores do dataset especificado para um par de nome e valor onde existe uma relação um-para-muitos. Por exemplo, para um identificador de cliente numa tabela, pode usar o LookupSet para recuperar todos os números de telefone associados a esse cliente a partir de um conjunto de dados que não está vinculado à região de dados.

O LookupSet faz o seguinte:

  • Avalia a expressão-fonte no âmbito atual.

  • Avalia a expressão de destino para cada linha do conjunto de dados especificado após a aplicação dos filtros, com base na colação do conjunto de dados especificado.

  • Para cada correspondência entre expressão de origem e expressão de destino, avalia-se a expressão de resultado dessa linha no conjunto de dados.

  • Devolve o conjunto dos valores das expressões do resultado.

Para obter um único valor de um conjunto de dados com pares nome/valor para um nome especificado onde há uma relação 1-para-1, utilize a Função Lookup (Report Builder e SSRS). Para chamar Lookup para um conjunto de valores, use Multilookup Function (Report Builder e SSRS).

Aplicam-se as seguintes restrições:

  • O LookupSet é avaliado após a aplicação de todas as expressões do filtro.

  • Apenas um nível de consulta é suportado. Uma expressão de origem, destino ou resultado não pode incluir uma referência a uma função de consulta.

  • As expressões de origem e destino devem ser avaliadas para o mesmo tipo de dado.

  • Expressões de origem, destino e resultado não podem incluir referências a variáveis de relatório ou de grupo.

  • LookupSet não pode ser usado como expressão para os seguintes itens de relatório:

    • Strings de ligação dinâmicas para uma fonte de dados.

    • Campos calculados num conjunto de dados.

    • Consultar parâmetros num conjunto de dados.

    • Filtros num conjunto de dados.

    • Reporte os parâmetros.

    • A propriedade Report.Language.

Para mais informações, consulte Aggregate Functions Reference (Report Builder e SSRS) e Expression Scope for Totais, Aggregates e Coleções Incorporadas (Report Builder e SSRS).

Examples

Nos exemplos seguintes, assuma que a tabela está associada a um conjunto de dados que inclui um identificador de território de vendas TerritoryGroupID. Um conjunto de dados separado chamado "Stores" contém a lista de todas as lojas de um território e inclui o ID do identificador do território e o nome da loja StoreName.

A. Use LookupSet

Na expressão seguinte, o LookupSet compara o valor TerritoryGroupID com o ID de cada linha do conjunto de dados chamada "Stores". Para cada correspondência, o valor do campo StoreName dessa linha é adicionado ao conjunto de resultados.

=LookupSet(Fields!TerritoryGroupID.Value, Fields!ID.Value, Fields!StoreName.Value, "Stores")  

B. Use o Join para criar uma lista de resultados

Como o LookupSet devolve uma coleção de objetos, não pode mostrar a expressão resultante diretamente numa caixa de texto. Podes concatenar o valor de cada objeto na coleção como uma cadeia.

Para usar a função Join do Visual Basic, crie uma cadeia delimitada a partir de um conjunto de objetos. Use uma vírgula como separador para combinar os objetos numa única linha. Em alguns renderizadores, pode usar um feed de linha Visual Basic (vbCrLF) como separador para listar cada valor numa nova linha.

A expressão seguinte, quando é usada como propriedade Value para uma caixa de texto, usa Join para criar uma lista.

=Join(LookupSet(Fields!TerritoryGroupID.Value, Fields!ID.Value, Fields!StoreName.Value, "Stores"),",")  

C. Adicionar código para gerar HTML

Para caixas de texto que só aparecem algumas vezes, pode optar por adicionar código personalizado para gerar HTML e mostrar valores numa caixa de texto. O HTML numa caixa de texto requer processamento extra, por isso isto não seria uma boa escolha para uma caixa de texto que é renderizada milhares de vezes.

Copie as seguintes funções do Visual Basic para um bloco de código numa definição de relatório. MakeList pega no array de objetos que é retornado em result_expression e constrói uma lista não ordenada usando tags HTML. O comprimento devolve o número de itens na matriz de objetos.

Function MakeList(ByVal items As Object()) As String  
   If items Is Nothing Then  
      Return Nothing  
   End If  
  
   Dim builder As System.Text.StringBuilder =   
      New System.Text.StringBuilder()  
   builder.Append("<ul>")  
  
   For Each item As Object In items  
      builder.Append("<li>")  
      builder.Append(item)  
   Next  
   builder.Append("</ul>")  
  
   Return builder.ToString()  
End Function  
  
Function Length(ByVal items as Object()) as Integer  
   If items is Nothing Then  
      Return 0  
   End If  
   Return items.Length  
End Function  

D. Chame a função

Para gerar o HTML, deve chamar a função. Cole a seguinte expressão na propriedade Valor da caixa de texto e defina o tipo de marcação do texto para HTML. Para mais informações, consulte Adicionar HTML a um Relatório (Construtor de Relatórios e SSRS).

=Code.MakeList(LookupSet(Fields!TerritoryGroupID.Value, Fields!ID.Value, Fields!StoreName.Value, "Stores"))