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 at 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?

    • This discussion was modified 4 months ago by  Emmanuel.
    R3dKap a répondu 3 months, 3 weeks ago 2 Membres · 5 Réponses
  • 5 Réponses
  • R3dKap

    Member
    26 décembre 2024 at 18h34
  • Emmanuel

    Member
    27 décembre 2024 at 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.

    • This reply was modified 4 months ago by  Emmanuel.
  • R3dKap

    Member
    27 décembre 2024 at 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

    Member
    28 décembre 2024 at 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.

    • This reply was modified 4 months ago by  Emmanuel.
    • This reply was modified 4 months ago by  Emmanuel.
    • This reply was modified 4 months ago by  Emmanuel.
  • R3dKap

    Member
    2 janvier 2025 at 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.