Relation entre plusieurs listes pour utilisation avec Power apps

Étiquetté : , ,

  • Relation entre plusieurs listes pour utilisation avec Power apps

    Posté par Florian Gajdos sur 6 septembre 2023 à 7h51

    Bonjour la communauté,

    Je travaille sur le développement d’une app Powerapps avec comme base donnée plusieurs listes sharepoint. J’aimerai pouvoir modifier le contenu d’une liste et que cette modification se fasse automatiquement sur plusieurs autres listes.

    Voici un exemple, dans la liste centre de maintenance si je change l’un des noms des X centres de maintenance je veux que la mise à jour se fasse dans les trois autres listes où est utilisé ce centre de maintenance. J’aimerai appliquer cette mécanique à plusieurs autres champs comme Nom zone, numéro zone, numéro de stock, nom et email client dans la liste parc, etc

    Pourriez-vous m’aider dans le choix technique pour mettre en place cette relation entre liste ?

    Merci, bonne journée.

    PostID=ScEBXbMgfbT0yNB

    Florian Gajdos a répondu Il y a 7 mois, 4 semaines 1 Membre · 8 Réponses
  • 8 Réponses
  • R3dKap

    Membre
    6 septembre 2023 à 8h36

    Salut Florian Gajdos,

    Pour faire cela il te suffit de créer dans chacune des tables qui doit faire référence à un centre de maintenance une colonne de type Recherche où tu spécifieras la liste Centre de maintenance comme liste cible et (par exemple) Centre de maintenance comme champ lié (qui sera affiché dans les listes déroulantes éventuelles de ton app).

    Donc sur ton schéma, pour les listes Utilisateur, Parc et Non conformité remplace tes colonnes Centre de maintenance (Texte) par des colonnes Centre de maintenance (Recherche)… Et dessine tes flèches plutôt dans l’autre sens… 😉

    Si t’as besoin d’aide pour créer ces colonnes n’hésite pas…

    CommentID=C6N2GpP6gJY78FR, PostID=ScEBXbMgfbT0yNB

  • Florian Gajdos

    Membre
    6 septembre 2023 à 12h04

    Merci R3dKap pour ta réponse. Je viens de mettre en place les colonnes de recherche ça fonctionne correctement, merci.

    J’ai encore besoin d’un conseil car je me suis rendu compte que mon modèle de donnée n’était pas correct. Car lorsque je veux ajouter une nouvelle non-conformité je dois reprendre l’ensemble des informations de la liste parc. Mais les colonnes recherche de la liste parc je n’arrive pas à les retrouver dans mon formulaire d’ajout.

    Finalement je me demande si l’utilisation des colonnes recherche est adapté, peut-être vais-je devoir passer par du codage dans powerapps ?

    Encore merci pour ton aide.

    CommentID=UIcgDjfnTYhkKHI, PostID=ScEBXbMgfbT0yNB

  • R3dKap

    Membre
    6 septembre 2023 à 14h56

    Normalement tu ne devrais pas avoir à rapatrier toutes les colonnes de Parc dans Non conformité, sinon la colonne de recherche n’a plus aucun sens.

    Que veux-tu dire par “…je dois reprendre l’ensemble des informations de la liste Parc” ? Car c’est le lien entre Non conformité et Parc qui te permet d’avoir accès à toutes les données du parc pour une non conformité donnée.

    En fait, ça dépend comment tu as structuré ton écran de création d’une nouvelle non conformité. En toute logique, avec ton modèle de donnée d’origine et juste la colonne de recherche NonConformité.Parc qui pointe vers la liste Parc, tu peux retrouver l’ensemble des informations du parc d’une non-conformité. Mais pour cela tu es obligé d’utiliser la fonction LookUp(Parc, ID = cbxParcNonConformité.Id) (attention aux majuscules/minuscules du “ID” et “Id“), en supposant que cbxParcNonConformité soit une combo box branchée sur ta colonne de recherche NonConformité.Parc. La fonction LookUp() va te renvoyer l’ensemble de l’enregistrement de ta liste Parc pour l’identifiant spécifié.

    Pour info, ta colonne de recherche NonConformité.Parc a une structure interne comme ceci :

    {n    Id: 23,n    Value: "Parc n° 1"n}

    Le Id (avec “d” minuscule) contient la valeur de la colonne SharePoint ID (“D” majuscule) d’une ligne de ta liste Parc.

    CommentID=Uuzay6gi09zxfqW, PostID=ScEBXbMgfbT0yNB

  • ypicot

    Membre
    6 septembre 2023 à 19h27

    Bonjour

    Une des idées fondamentale quand on conçoit sa structure de données est que

    Une valeur (métier) n’apparait qu’à un seul endroit.

    Donc, pas de duplication de données. Ici les valeurs contenues dans “Nom zone”, “Numéro zone”, … apparaissent à plusieurs endroits, ce qui te conduit à tous ces problèmes. D’où la solution de Redkap, qui propose d’utiliser le champ ID de la liste parc. Ce champ permet d’identifier un parc de façon unique.

    Dans la liste Centre, tu créés une colonne ParcId, qui contiendra la valeur ID du parc correspondant.

    Donc, si tu veux qu’un centre change de parc, tu as juste la valeur ParcId à modifier.

    Cela débouche après sur une autre “difficulté” tout à fait classique : comment afficher dans une même galerie les données d’un centre et du parc correspondant. Cela peut se faire de plusieurs manières, l’utilisation de la fonction Lookup (également indiquée par Redkap) est une des plus simples à mettre en oeuvre. C’est l’équivalent du recherchev d’Excel.

    CommentID=vz2nxWjoiKGiTu0, PostID=ScEBXbMgfbT0yNB

  • Florian Gajdos

    Membre
    7 septembre 2023 à 13h11

    R3dKap et ypicot merci beaucoup pour vos explications. Je comprends mieux la logique ! Dernière question le Id de la colonne d’une liste correspond à sa position dans la liste ?

    CommentID=m0Rf0tWOVmucOId, PostID=ScEBXbMgfbT0yNB

    • ypicot

      Membre
      7 septembre 2023 à 16h56

      Non, l’ID de la colonne ne correspond pas à sa position dans la liste.

      Plus exactement, cela correspond à sa position tant que tu n’as pas une suppression de ligne. Le mieux est de’ considérer qu’il s’agit d’une valeur aléatoire et sans signification.

      SubCommentID=YBfBKqiYfOnaSrP, CommentID=m0Rf0tWOVmucOId, PostID=ScEBXbMgfbT0yNB

  • R3dKap

    Membre
    7 septembre 2023 à 15h10

    Le Id d’une colonne de recherche d’une liste correspond au ID d’une ligne de la liste liée :

    Voilà un schéma qui te montre ça en détail :

    • y’a une liste Employé avec juste une colonne Titre qui contient le nom de l’employé

    • y’a une liste Formations avec :

      • une colonne Titre qui contient le nom du cours

      • une colonne Employe qui est une colonne de recherche qui pointe vers la liste Employé (et c’est la colonne Titre de Employé qui est affichée dans la colonne Employe de la liste Formations)

    Le First(Formations).Employé renvoie la valeur de la colonne Employe de la première ligne de la liste Formations (flèche rouge du haut). Le résultat est une structure/enregistrement à 2 colonnes : Id et Value (flèche rouge du milieu et rectangle rouge complètement à gauche). La colonne Id de cette structure contient l’ID (tout en majuscule -> voir cercle bleu du haut) de la ligne de l’employé concerné dans la liste Employé (flèche bleu du bas).

    Pas facile à expliquer. Est-ce que t’as compris ? 😅

    CommentID=EVEtgdOW7C14huo, PostID=ScEBXbMgfbT0yNB

  • Florian Gajdos

    Membre
    8 septembre 2023 à 7h33

    Pas facile à expliquer et à comprendre 😄 mais je pense avoir saisi. Je vais mettre en application dans les prochains jours.

    R3dKap et ypicot encore merci pour votre aide.

    CommentID=DI9dOQwBVqfzdZr, PostID=ScEBXbMgfbT0yNB

Connectez-vous pour répondre.