Fonctions du Générateur de rapports - Fonction Multilookup dans un rapport paginé (Générateur de rapports)

S’applique à : Générateur de rapports Microsoft (SSRS) Power BI Report Builder Concepteur de rapports dans SQL Server Data Tools

Retourne le jeu de valeurs de première correspondance pour le jeu de noms spécifié d’un dataset contenant des paires nom/valeur dans un rapport paginé.

Remarque

Il est possible de créer et de modifier des fichiers de définition de rapports (.rdl) paginés dans le Générateur de rapports Microsoft, dans Power BI Report Builder et dans le Concepteur de rapports de SQL Server Data Tools.

Syntaxe

  
Multilookup(source_expression, destination_expression, result_expression, dataset)  

Paramètres

source_expression
(VariantArray) Une expression évaluée dans la portée actuelle et qui spécifie l’ensemble de noms ou de clés à rechercher. Par exemple, pour un paramètre à valeurs multiples, =Parameters!IDs.value.

destination_expression
(Variant) Expression évaluée pour chaque ligne d’un dataset et qui spécifie le nom ou la clé de correspondance. Par exemple : =Fields!ID.Value.

result_expression
(Variant) Expression qui est évaluée pour la ligne du dataset où source_expression = destination_expression, et qui spécifie la valeur à récupérer. Par exemple : =Fields!Name.Value.

dataset
Constante qui spécifie le nom d'un dataset dans le rapport. Par exemple, « Couleurs ».

Retour

Retourne une valeur VariantArray, ou Nothing si aucune correspondance n'est trouvée.

Remarques

Utilisez Multilookup pour récupérer un ensemble de valeurs d’un dataset pour les paires nom-valeur, lorsqu’il existe une relation un-à-un pour chaque paire. MultiLookup équivaut à appeler Lookup pour un ensemble de noms ou de clés. Par exemple, pour un paramètre à valeurs multiples basé sur des identificateurs de clé primaire,vous pouvez utiliser Multilookup dans une expression d'une zone de texte d'une table pour récupérer des valeurs associées d'un dataset qui n'est pas lié au paramètre ou à la table.

La fonctionMultilookup effectue les actions suivantes :

  • Elle évalue l'expression source dans la portée actuelle et génère un tableau d'objets variants.

  • Pour chaque objet du tableau, elle appelle la Fonction Lookup (Générateur de rapports et SSRS) et ajoute le résultat au tableau de résultats.

  • Retourne l’ensemble des résultats.

Pour récupérer une valeur unique à partir d’un jeu de données contenant des paires nom-valeur, pour un nom spécifié, lorsqu’il existe une relation un à un, utilisez la fonction Lookup (Générateur de rapports et SSRS). Pour récupérer plusieurs valeurs à partir d’un jeu de données contenant des paires nom-valeur pour un nom donné, lorsqu’il existe une relation de un à plusieurs, utilisez la fonction LookupSet (Générateur de rapports et SSRS).

Les restrictions suivantes s’appliquent :

  • Multilookup est évalué après que toutes les expressions de filtre ont été appliquées.

  • 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.

  • Multilookup 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 ;

    • Champs calculés dans un jeu de données.

    • Paramètres de requête dans un jeu de données.

    • des filtres dans un dataset ;

    • Paramètres du 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).

Exemples

A. Utiliser la fonction MultiLookup

Supposons qu’un dataset nommé « Category » comprend le champ CategoryList, qui contient une liste séparée par des virgules d’identificateurs de catégorie, par exemple « 2, 4, 2, 1 ».

Le dataset CategoryNames contient l'identificateur et le nom de catégorie, comme indiqué dans le tableau ci-dessous.

id Nom
1 Accessoires
2 Vélos
3 Vêtements
4 Composants

Pour rechercher les noms correspondant à la liste d'identificateurs, utilisez Multilookup. Vous devez tout d'abord fractionner la liste en un tableau de chaînes, appeler Multilookup pour récupérer les noms des catégories, puis concaténer les résultats en une chaîne.

L'expression suivante, lorsqu'elle est placée dans une zone de texte dans une région de données liée au dataset Catégorie, affiche « Bicyclettes, Composants, Bicyclettes, Accessoires » :

=Join(MultiLookup(Split(Fields!CategoryList.Value,","),  
   Fields!CategoryID.Value,Fields!CategoryName.Value,"Category")),  
   ", ")  

B. Utiliser MultiLookup avec un paramètre à valeurs multiples

Supposons qu’un jeu de données ProductColors contient un champ d’identifiant de couleur ColorID et un champ de valeur de couleur Color, comme indiqué dans le tableau suivant.

ColorID Couleur
1 Rouge
2 Bleu
3 Vert

Supposons que le paramètre à valeurs multiples MyColors n'est pas lié à un dataset pour ses valeurs disponibles. Les valeurs par défaut du paramètre sont égales à 2 et 3. L'expression suivante, lorsqu'elle est placée dans une zone de texte d'un tableau, concatène les valeurs de sélection multiple pour le paramètre dans une liste séparée par des virgules et affiche « Bleu, Vert ».

=Join(MultiLookup(Parameters!MyColors.Value,Fields!ColorID.Value,Fields!Color.Value,"ProductColors"),", ")