Partager via


Fonction LookupSet (Générateur de rapports et SSRS)

Retourne l’ensemble de valeurs correspondantes pour le nom spécifié à partir d’un jeu de données qui contient des paires nom/valeur.

Remarque

Vous pouvez créer et modifier des définitions de rapport (.rdl) dans le Générateur de rapports et dans le Concepteur de rapports dans SQL Server Data Tools. Chaque environnement de création offre différentes façons de créer, d’ouvrir et d’enregistrer des rapports et des éléments associés. Pour plus d’informations, consultez Conception de rapports dans le Concepteur de rapports et le Générateur de rapports (SSRS) sur le web à microsoft.com.

Syntaxe

  
LookupSet(source_expression, destination_expression, result_expression, dataset)  

Paramètres

source_expression
(Variant) Une expression évaluée dans l’étendue actuelle et qui spécifie le nom ou la clé à rechercher. Par exemple : =Fields!ID.Value.

destination_expression
(Variant) Expression évaluée pour chaque ligne d’un jeu de données et qui spécifie le nom ou la clé à mettre en correspondance. Par exemple : =Fields!CustomerID.Value.

result_expression
(Variant) Expression évaluée pour la ligne dans le jeu de données où source_expression = destination_expression, et qui spécifie la valeur à récupérer. Par exemple : =Fields!PhoneNumber.Value.

jeu de données
Constante qui spécifie le nom d'un dataset dans le rapport. Par exemple, « ContactInformation ».

Retour

Retourne un VariantArray, ou Nothing s’il n’y a pas de correspondance.

Remarques

Permet LookupSet de récupérer un ensemble de valeurs à partir du jeu de données spécifié pour une paire nom/valeur où il existe une relation de 1 à plusieurs. Par exemple, pour un identificateur client dans une table, vous pouvez utiliser LookupSet pour récupérer tous les numéros de téléphone associés pour ce client à partir d’un jeu de données qui n’est pas lié à la région de données.

LookupSet effectue les opérations suivantes :

  • Évalue l'expression source dans l'étendue actuelle.

  • Évalue l'expression de destination pour chaque ligne du dataset spécifié après avoir appliqué les filtres, en fonction du classement du dataset spécifié.

  • Pour chaque correspondance des expressions source et de destination, évalue l'expression de résultat pour cette ligne dans le dataset.

  • Retourne le jeu de valeurs d'expressions de résultat.

Pour récupérer une valeur unique dans un dataset avec les paires nom/valeur d’un nom spécifique, lorsqu’il existe une relation un-à-un, utilisez la Fonction Lookup (Générateur de rapports et SSRS). Pour appeler Lookup un ensemble de valeurs, utilisez la fonction Multilookup (Générateur de rapports et SSRS).

Les restrictions suivantes s’appliquent :

  • LookupSet est évalué après l’application de toutes les expressions de filtre.

  • Un seul niveau de recherche est pris en charge. Une expression source, destination ou de résultat ne peut pas inclure de référence à une fonction de recherche.

  • Les expressions source et de destination doivent correspondre au même type de données.

  • Les expressions source, de destination et de résultat ne peuvent pas inclure de références à des variables de groupe ou de rapport.

  • LookupSet ne peut pas être utilisé comme expression pour les éléments de rapport suivants :

    • des chaînes de connexion dynamiques pour une source de données ;

    • des champs calculés dans un dataset ;

    • des paramètres de requête dans un dataset ;

    • des filtres dans un dataset ;

    • des paramètres de rapport ;

    • la propriété Report.Language.

Pour plus d’informations, consultez Référence aux fonctions d’agrégation (Générateur de rapports et SSRS) et Étendue des expressions pour les totaux, les agrégats et les collections intégrées (Générateur de rapports et SSRS).

Exemple :

Dans l’exemple suivant, supposons que la table est liée à un jeu de données qui inclut un identificateur TerritoryGroupID d’identificateur de territoire de vente. Un dataset séparé appelé « Magasins » contient la liste de tous les magasins dans un secteur et inclut l'identificateur du secteur ID et le nom du magasin NomMagasin.

Dans l’expression suivante, LookupSet compare la valeur TerritoryGroupID à l’ID de chaque ligne du jeu de données appelé « Stores ». Pour chaque correspondance, la valeur du champ StoreName pour cette ligne est ajoutée au jeu de résultats.

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

Exemple :

Étant donné que LookupSet retourne une collection d’objets, vous ne pouvez pas afficher l’expression de résultat directement dans une zone de texte. Vous pouvez concaténer la valeur de chaque objet dans la collection en tant que chaîne.

Utilisez la fonction Join Visual Basic pour créer une chaîne délimitée à partir d’un ensemble d’objets. Utilisez une virgule comme séparateur pour combiner les objets en une ligne unique. Dans certains convertisseurs, vous pouvez utiliser un saut de ligne Visual Basic (vbCrLF) comme séparateur pour répertorier chaque valeur sur une nouvelle ligne.

L’expression suivante, lorsqu’elle est utilisée comme propriété Value pour une zone de texte, utilise Join pour créer une liste.

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

Exemple :

Pour les zones de texte qui seront uniquement restituées quelques fois, vous pouvez choisir d'ajouter un code personnalisé pour générer un code HTML permettant d'afficher des valeurs dans une zone de texte. Le code HTML dans une zone de texte requiert un traitement supplémentaire et ne serait donc pas un bon choix pour une zone de texte restituée des milliers de fois.

Copiez les fonctions Visual Basic suivantes dans un bloc Code de définition de rapport. MakeList utilise le tableau d’objets retourné dans result_expression pour générer une liste non ordonnée à l’aide de balises HTML. Length retourne le nombre d'éléments dans le tableau d'objets.

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  

Exemple :

Pour générer le code HTML, vous devez appeler la fonction. Collez l’expression suivante dans la propriété Value de la zone de texte et définissez le type de balise de texte sur HTML. Pour plus d’informations, consultez Ajouter du code HTML à un rapport (Générateur de rapports et SSRS).

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

Voir aussi

Utilisation d'expressions dans les rapports (Générateur de rapport et SSRS)
Exemples d'expressions (Générateur de rapports et SSRS)
Types de données dans les expressions (Générateur de rapports et SSRS)
Étendue des expressions pour les totaux, les agrégats et les collections intégrées (Générateur de rapports et SSRS)