Problème de filtre sur table avec relation plusieurs à plusieurs

  • Problème de filtre sur table avec relation plusieurs à plusieurs

    Posté par Emmanuel sur 25 décembre 2024 à 23h43

    Bonjour,

    Je vais vous expliquer ma configuration actuelle et mon problème de manière claire depuis le début afin que nous puissions trouver une solution.

    Dans mon application Power Apps canvas, j’ai deux tables principales :

    1. Partenaires : Cette table gère mes contacts.

    2. Operations : Cette table gère mes projets immobiliers.

    Les contacts peuvent appartenir à différentes catégories, comme “agent immobilier”, “architecte”, “plombier”, etc. Pour gérer ces catégories, j’ai créé une troisième table, Categories, qui a une relation Many-to-Many avec la table Partenaires. La colonne principale de la table Categories est CatNom, qui contient le nom des catégories.

    Pour associer un agent immobilier à un projet, j’ai créé une colonne appelée OpeAgent dans la table Operations. Cette colonne est un Lookup avec une relation Many-to-One, ce qui signifie qu’un agent immobilier peut être associé à plusieurs projets.

    J’ai créé un formulaire pour ajouter de nouvelles opérations basé sur la table Operations. Dans ce formulaire, la colonne OpeAgent utilise une ComboBox, et la formule Choices([@Operations].OpeAgent) me renvoie la liste de tous mes contacts, affichant la colonne ParNomComplet (le nom complet du contact), ce qui me permet de sélectionner l’agent immobilier à affecter au projet.

    Mon problème est que je souhaite simplifier la sélection en filtrant la ComboBox pour qu’elle affiche uniquement les contacts appartenant à la catégorie “agent immobilier”.

    Comment puis-je réaliser ce filtrage dans Power Apps?

    • Cette discussion a été modifiée Il y a 3 semaines, 2 jours par  Emmanuel.
    R3dKap a répondu Il y a 2 semaines, 1 jour 2 Membres · 5 Réponses
  • 5 Réponses
  • R3dKap

    Membre
    26 décembre 2024 à 18h34
  • Emmanuel

    Membre
    27 décembre 2024 à 10h09

    Salut,

    Oui l’article est intéressant mais je suis dans un cas plus complexe en ayant une relation plusieurs à plusieurs entre Categorie et Partenaire, c’est sur ce point que je sèche car je n’ai pas de nom de relation pouvant être utilisé dans power apps.

    • Cette réponse a été modifiée Il y a 3 semaines par  Emmanuel.
  • R3dKap

    Membre
    27 décembre 2024 à 19h33

    Juste histoire d’éclaircir un truc : une relation many to many entre Categories et Partenaire implique donc qu’un contact peut être rattaché à plusieurs catégories. Ça me semble bizarre qu’un contact puisse être à la fois agent immobilier, architecte et plombier… Peux-tu m’éclairer là-dessus stp ?

  • Emmanuel

    Membre
    28 décembre 2024 à 9h30

    C’est sûr qu’avec ces 3 exemples cela peut paraître bizard mais j’ai beaucoup d’autres catégories. Par exemple tu peux avoir un architecte qui fait aussi de la formation, un plombier qui fait de l’investissement … quelques exemples parmis beaucoup d’autres, certains sont même de 3, 4 catégoires différentes.

    J’ai trouvé un moyen qui n’est pas direct et avec un problème de délégation mais qui fonctionne en créant une collection dans OnVisible de ma page qui va effectuer le tri :

    <pre class=”language-php”>ClearCollect(
    AgentsImmobiliers;
    Filter(
    Partenaires;
    "agent immobilier" in Concat(ThisRecord.Categories; CatNom; " | ")
    )
    )

    Ensuite je fais l’appel de la collection dans la Combobox :

    <pre class=”language-php”>Filter(
    Choices([@Operations].OpeAgent);
    ThisRecord.Partenaire in AgentsImmobiliers.Partenaire
    )

    Cela fonctionne, mais si vous avez quelque chose de plus élégant je suis preneur.

    • Cette réponse a été modifiée Il y a 2 semaines, 6 jours par  Emmanuel.
    • Cette réponse a été modifiée Il y a 2 semaines, 6 jours par  Emmanuel.
    • Cette réponse a été modifiée Il y a 2 semaines, 6 jours par  Emmanuel.
  • R3dKap

    Membre
    2 janvier 2025 à 19h31

    @Emmanuel,

    Bon, j’ai trituré et testé ton truc de différentes façons…

    Tout d’abord, n’y aurait-il pas 2 notions différentes qui sont mixées à l’intérieur d’un même groupe d’options ? Tu donnes l’exemple d’un architecte qui fait de la formation ou d’un plombier qui fait de l’investissement. Ne devrais-tu pas créer une colonne de groupe d’options simple (pas de sélection multiple) nommée Fonction ou Métier (pour les valeurs Architecte, Plombier, …) et une autre colonne de groupe d’options multiple nommée Activité (pour les valeurs Formation, Investissement, …). Tu vois ce que je veux dire ? Il faut vraiment que ton modèle de données représente les notions qui existent dans la réalité, ou du moins au plus proche possible de la réalité.

    Ensuite, pour ce qui est de la réduction des valeurs de ta combo aux seules valeurs de contact qui sont des agents immobiliers, puisque le groupe d’options Catégories autorise la sélection multiple, tu es obligé d’utiliser l’opérateur IN qui n’est pas déléguable.

    Ce que je ferais perso, c’est d’apater le modèle de données pour qu’il me rende le service souhaité sans qu’il n’y ait de problème de délégation. Par exemple, une idée serait de créer dans la table Partenaires une colonne Agent immobilier de type Oui/Non qui soit positionnée à Oui pour les contacts qui sont des agents immobiliers. Et d’utiliser cette colonne pour le filtrage de ta combo box…

Connectez-vous pour répondre.