Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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 correspondantes pour le nom spécifié d’un dataset contenant des paires nom/valeur dans un rapport paginé.
Note
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
LookupSet(source_expression, destination_expression, result_expression, dataset)
Paramètres
source_expression
(Variant) Une expression qui est évaluée dans la portée 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 dataset et qui spécifie le nom ou la clé de correspondance. Par exemple : =Fields!CustomerID.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!PhoneNumber.Value.
dataset
Constante qui spécifie le nom d'un dataset dans le rapport. Par exemple, « ContactInformation ».
Retour
Retourne une valeur VariantArray, ou Nothing si aucune correspondance n'est trouvée.
Remarques
Utilisez LookupSet pour récupérer un jeu de valeurs du dataset spécifié pour une paire nom-valeur quand il existe une relation un-à-plusieurs. Par exemple, pour un identificateur de client dans une table, vous pouvez utiliser LookupSet pour récupérer tous les numéros de téléphone associés à ce client à partir d'un dataset qui n'est pas lié à la région de données.
La fonctionLookupSet effectue les actions 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 l’ensemble des valeurs des expressions de résultat.
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 appeler Lookup pour 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 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.
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 ;
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
Dans les exemples suivants, supposons que la table est liée à un jeu de données qui inclut un identificateur de secteur de vente TerritoryGroupID. 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.
A. Utiliser LookupSet
Dans l’expression suivante, LookupSet compare la valeur TerritoryGroupID à la valeur ID pour chaque ligne du dataset 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")
B. Utiliser Join pour créer une liste de résultats
Étant donné que LookupSet retourne une collection d'objets, vous ne pouvez pas afficher directement l'expression de résultat 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 Visual Basic Join pour créer une chaîne délimitée à partir d’un jeu d’objets. Utilisez une virgule comme séparateur pour combiner les objets en une ligne unique. Dans certains moteurs de rendu, vous pouvez utiliser un saut de ligne de Visual Basic (vbCrLF) comme séparateur pour afficher chaque valeur sur une nouvelle ligne.
L’expression suivante, quand elle est utilisée comme propriété Value d’une zone de texte, utilise Join pour créer une liste.
=Join(LookupSet(Fields!TerritoryGroupID.Value, Fields!ID.Value, Fields!StoreName.Value, "Stores"),",")
C. Ajouter du code pour générer un code HTML
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
D. Appeler la fonction
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 balisage du 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"))
Contenu connexe
- Utilisations des expressions dans des rapports paginés (Générateur de rapports)
- Exemples d’expressions dans les rapports paginatus du Report Builder
- Types de données dans les expressions d’un rapport paginé (Générateur de rapports)
- Étendue des expressions pour les totaux, les agrégats et les collections intégrées dans un rapport paginé (Générateur de rapports)