Utiliser des relations dans Power Apps

Effectué

Power Apps offre en effet un riche ensemble de fonctions et de contrôles conçus sur mesure pour établir et utiliser des relations dans vos applications. Les relations trouvent généralement deux applications principales dans la plupart des applications.

Premièrement, comme indiqué précédemment, cela implique de stocker des données sur plusieurs tables, puis d’associer ces données facilement à l’aide de relations. Cette unité vous guide à travers les tables de connexion telles que les clients et les factures en vous montrant comment forger des associations pertinentes entre elles.

Deuxièmement, les relations permettent souvent d’extraire des informations de l’enregistrement parent lors de l’accès direct à l’enregistrement enfant. Dans ce cas, vous allez découvrir comment récupérer le nom du client tout en travaillant dans le contexte d’un enregistrement de facture. Cette fonctionnalité vous permet d’accéder aux informations pertinentes des enregistrements associés et de les afficher efficacement, améliorant ainsi la convivialité et la compréhensibilité de votre application.

Association d’une table parente et d’une table enfant dans Power Apps

Cet exemple va vous montrer pas à pas comment référencer une relation parent/enfant à l’aide du filtre Power Apps et d’une fonction LookUp.

Dans cette relation, la table Client est le parent, ce qui signifie qu’un client peut avoir plusieurs factures. Notez que la table Client ne contient pas de référence à la table Facture. Dans cet exemple, le nom de la source de données de cette table est CustomerTable. La table ressemble à ceci.

ID CustomerName TéléphoneClient
1 Contoso 513-555-1212
2 Fabrikam 206-555-1313
3 Tailspin Toys 404-555-1414

La table Facture est l’enfant dans cette relation. Dans cet exemple, le nom de la source de données de cette table est InvoiceTable. La table ressemble à ceci.

ID InvoiceDate InvoiceDescription InvoiceAmount CustomerID
1 16/05/2020 Pièces 412,33 1
2 01/05/2020 Service 205,44 3
3 06/05/2020 Voyages et déplacements 132,98 1
4 31/05/2020 Pièces 75,55 2

Dans Power Apps, si ces tables sont créées en tant que sources de données, un contrôle Galerie vous permet d’afficher le contenu de la table Client. Pour utiliser le contrôle Galerie, procédez comme suit :

  1. Insérez un contrôle Galerie dans votre canevas.

  2. Définissez la propriété Items sur CustomerTable.

Le contrôle Gallery affiche une liste de tous les enregistrements client dans la table. Voilà Gallery1.

Pour afficher l’ensemble du contenu d’InvoiceTable, procédez comme suit :

  1. Insérez un contrôle Galerie dans votre canevas.

  2. Vous pouvez définir la propriété Items sur InvoiceTable.

Ce contrôle Gallery affiche une liste de tous les enregistrements de facture dans la table. Voilà Gallery2.

À présent, pour afficher uniquement les factures du client sélectionné dans Gallery1, vous devez définir la propriété Items de Gallery2 sur une formule de ce type :

Filter(InvoiceTable, CustomerID = Gallery1.Selected.ID)

La formule fonctionne de la façon suivante :

Argument de la formule Entrée dans la formule Notes
source InvoiceTable
logical_test CustomerID = Gallery1.Selected.ID CustomerID est le nom de la colonne dans InvoiceTable. Gallery1.Selected. L’ID est la valeur de la colonne ID pour l’enregistrement sélectionné dans la galerie.

La formule permet à Gallery2 d’afficher les enregistrements de facture pour le client sélectionné dans Gallery1.

Recherche d’informations stockées dans le parent à partir de l’enfant

Il est parfois nécessaire de naviguer vers le haut ou « de manière ascendante » depuis un enregistrement enfant jusqu’à son enregistrement parent associé. Dans le scénario où vous examinez les détails d’un enregistrement de facture, par exemple avec un ID de 2, et que vous connaissez son association avec le client ayant un ID de 3, vous souhaiterez peut-être extraire plus de détails de la table parente.

Dans ce cas, la relation entre les tables vous permet de récupérer des informations relatives au client telles que son nom ou son numéro de téléphone en référençant les enregistrements associés dans la table parente. Cette technique vous permet de rassembler des détails pertinents à partir des enregistrements liés dans la table parente en fonction des informations disponibles dans l’enregistrement enfant, fournissant ainsi une vue complète et facilitant les références croisées entre les données associées. Dans Power Apps, la fonction LookUp vous permet de le faire.

La fonction LookUp vous permet d’interroger une source de données pour obtenir un enregistrement unique répondant aux critères d’évaluation. Dans l’exemple suivant, nous allons utiliser les mêmes tables que dans le précédent, mais commencer avec un écran vide pour éviter toute confusion.

Pour afficher l’ensemble du contenu d’InvoiceTable, procédez comme suit :

  1. Insérez un contrôle Galerie dans votre canevas.

  2. Définissez la propriété Items sur InvoiceTable.

  3. Définissez la propriété Layout sur Titre, sous-titre et corps.

  4. Dans le volet Données, définissez Titre sur InvoiceDate, Sous-titre sur InvoiceAmount et Corps sur CustomerID.

Ce contrôle Gallery affiche une liste de tous les enregistrements de facture dans la table. Si vous souhaitez que vos champs de date ressemblent à l’image ci-dessous, vous devez définir votre champ Titre sur Text(ThisItem.InvoiceDate,DateTimeFormat.ShortDate). Voilà Gallery3.

Capture d’écran du contrôle Galerie avec une liste de tous les enregistrements de facture.

L’affichage de l’ID de chaque client fournit peu d’informations à l’utilisateur de l’application. Par conséquent, pour afficher le nom du client à la place de l’ID, procédez comme suit :

Dans Gallery3, sélectionnez le libellé de Corps et définissez la propriété Text sur :

LookUp(CustomerTable, ID = ThisItem.CustomerID, CustomerName)

La formule fonctionne de la façon suivante :

Argument de la formule Entrée dans la formule Notes
source CustomerTable
logical_test ID = ThisItem.CustomerID L’ID est le nom de colonne dans CustomerTable. ThisItem.CustomerID est la valeur de la colonne CustomerID pour l’enregistrement actif dans la galerie.
result CustomerName Il s’agit de la colonne renvoyée pour les enregistrements correspondant à l’argument logical_test.

Après avoir effectué cette modification, Gallery3 fournit désormais le nom du fournisseur.

Capture d’écran d’une liste de galerie conviviale des enregistrements de facture.

Remarques relatives aux performances

Effectuer des recherches depuis un enregistrement enfant vers son parent dans une galerie peut avoir de lourdes conséquences en matière de performance. Dans le scénario illustré, l’utilisation de la fonction LookUp dans une galerie déclencherait des requêtes de source de données plusieurs fois : une fois pour chaque enregistrement contenu dans InvoiceTable.

Notez que si votre InvoiceTable comporte des centaines d’enregistrements, la fonction LookUp s’exécute autant de fois. Autrement dit, des centaines d’appels distincts à des sources de données peuvent potentiellement se produire. Par conséquent, cela pourrait entraîner une augmentation du trafic réseau et des temps de traitement plus longs, ce qui impacterait au final les performances de votre application.

Avant d’implémenter des appels à des sources de données, en particulier dans une galerie où plusieurs enregistrements sont traités, il est crucial de peser les compromis en matière de performance. L’optimisation de ces requêtes, peut-être en mettant les données en cache ou en restructurant la logique pour réduire le nombre d’appels répétitifs, est essentielle pour maintenir des performances optimales des applications. Tenez toujours compte de l’ampleur de vos données et de l’impact potentiel sur les performances lors de l’implémentation de telles opérations dans un contexte de galerie.

Il existe une autre méthode plus adaptée pour ce scénario. Elle consiste à interroger et stocker tous les enregistrements client à l’aide d’une collection ou d’un autre moyen, puis à effectuer votre recherche dans la collection. Pour en savoir plus sur les performances des données, consultez le billet de blog traitant des Considérations de performances avec Power Apps.

Dans l’unité suivante, vous allez découvrir comment Microsoft Dataverse élimine tous les problèmes liés aux relations entre les données en explorant le détail des données pour vous.