Condividi tramite


Funzione LookupSet (Generatore report e SSRS)

Viene restituito il set di valori corrispondenti per il nome specificato da un set di dati contenente coppie nome/valore.

Nota

È possibile creare e modificare definizioni del report (con estensione rdl) in Generatore report e in Progettazione report di SQL Server Data Tools. Ogni ambiente di creazione offre modalità differenti per creare, aprire e salvare report ed elementi correlati. Per altre informazioni, vedere Progettazione di report in Progettazione report e Report Builder (SSRS) nel Web in microsoft.com.

Sintassi

  
LookupSet(source_expression, destination_expression, result_expression, dataset)  

Parametri

source_expression
(Variant) Espressione valutata nell'ambito corrente che specifica il nome o la chiave da ricercare, Ad esempio: =Fields!ID.Value.

destination_expression
(Variant) Espressione valutata per ogni riga in un set di dati che specifica il nome o la chiave con cui eseguire la corrispondenza, Ad esempio: =Fields!CustomerID.Value.

result_expression
(Variant) Espressione valutata per la riga nel set di dati in cui source_expression = destination_expression e che specifica il valore da recuperare. Ad esempio: =Fields!PhoneNumber.Value.

set di dati
Costante che specifica il nome di un set di dati nel report, ad esempio "InformazioniDiContatto".

Return

Restituisce VariantArray o Nothing se non viene rilevata alcuna corrispondenza.

Commenti

Usare la funzione LookupSet per recuperare un set di valori dal set di dati specificato per una coppia nome/valore in cui è presente una relazione uno-a-molti. Per un identificatore di cliente in una tabella, ad esempio, è possibile usare la funzione LookupSet per recuperare tutti i numeri di telefono relativi al cliente da un set di dati non associato all'area dati.

LookupSet effettua le operazioni seguenti:

  • Valuta l'espressione di origine nell'ambito corrente.

  • Valuta l'espressione di destinazione per ogni riga del set di dati specificato dopo che sono stati applicati i filtri, in base alle regole di confronto del set di dati specificato.

  • Per ogni corrispondenza dell'espressione di origine e di destinazione, valuta l'espressione di risultato per quella riga nel set di dati.

  • Restituisce il set di valori dell'espressione di risultato.

Per recuperare un singolo valore da un set di dati con coppie nome/valore per un nome specificato in cui è presente una relazione uno-a-uno, usare la Funzione Lookup (Generatore report e SSRS). Per chiamare Lookup un set di valori, usare la funzione Multilookup (Report Builder e SSRS).

Si applicano le restrizioni seguenti:

  • La funzione LookupSet viene valutata dopo l'applicazione di tutte le espressioni di filtro.

  • È supportato solo un livello di ricerca. Un'espressione di origine, destinazione o risultato non può includere un riferimento a una funzione di ricerca.

  • Le espressioni di origine e di destinazione devono restituire lo stesso tipo di dati.

  • Le espressioni di origine, di destinazione e di risultato non possono includere riferimenti a variabili di report o di gruppo.

  • La funzione LookupSet non può essere utilizzata come espressione per gli elementi del report seguenti:

    • Stringhe di connessione dinamiche per un'origine dati.

    • Campi calcolati in un set di dati.

    • Parametri di query in un set di dati.

    • Filtri in un set di dati.

    • Parametri di report.

    • Proprietà Report.Language.

Per altre informazioni, vedere Riferimento a funzioni di aggregazione (Generatore report e SSRS) e Ambito di espressioni per totali, aggregazioni e raccolte predefinite (Generatore report e SSRS).

Esempio

Nell'esempio seguente, si supponga che la tabella sia associata a un set di dati che include un identificatore del territorio di vendita TerritoryGroupID. Un set di dati separato denominato "Stores" contiene l'elenco di tutti i negozi di un territorio e include l'ID dell'identificatore del territorio e il nome del negozio StoreName.

Nell'espressione seguente, LookupSet confronta il valore TerritoryGroupID con ID per ogni riga nel set di dati denominato "Stores". Per ogni corrispondenza, il valore del campo StoreName per quella riga viene aggiunto al set di risultati.

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

Esempio

Poiché tramite LookupSet viene restituita una raccolta di oggetti, non è possibile visualizzare direttamente l'espressione di risultato in una casella di testo. È possibile concatenare il valore di ogni oggetto nella raccolta come stringa.

Usare la funzione Join Visual Basic per creare una stringa delimitata da un set di oggetti. Usare una virgola come separatore per combinare gli oggetti in un'unica riga. In alcuni renderer, è possibile usare un avanzamento riga di Visual Basic (vbCrLF) come separatore per elencare ogni valore su una nuova riga.

L'espressione seguente, quando viene usata come proprietà Value per una casella di testo, usa Join per creare un elenco.

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

Esempio

Per caselle di testo che eseguono il rendering solo poche volte, è possibile scegliere di aggiungere un codice personalizzato per generare HTML per visualizzare i valori in una casella di testo. HTML in una casella di testo richiede altri processi di elaborazione, pertanto non è consigliabile per una casella di testo che viene sottoposta a rendering molte volte.

Copiare le funzioni di Visual Basic seguenti in un blocco di codice di una definizione del report. MakeList accetta la matrice di oggetti restituita in result_expression e compila un elenco non ordinato usando tag HTML. Length restituisce il numero di elementi della matrice di oggetti.

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  

Esempio

Per generare HTML, è necessario chiamare la funzione. Incollare l'espressione seguente nella proprietà Value per la casella di testo e impostare il tipo di markup per il testo su HTML. Per altre informazioni, vedere Aggiungere codice HTML a un report (Generatore report e SSRS).

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

Vedere anche

Utilizzo delle espressioni nei report (Generatore report e SSRS)
Esempi di espressioni (Generatore report e SSRS)
Tipi di dati nelle espressioni (Generatore report e SSRS)
Ambito di espressioni per totali, aggregazioni e raccolte predefinite (Generatore report e SSRS)