Question sur les collections

Étiquetté : 

  • Question sur les collections

    Posté par Usager supprimé sur 3 novembre 2022 à 20h24

    Bonjour,

    Je suis nouveau chez vous et j’essaye tant bien que mal a me former seul sur power apps.

    Mais je sèche sur un problème depuis 1 mois et je ne trouve pas d’aide dans la doc ni sur le net, alors je viens vers vous.

    ma question est la suivante : peut ton avoir une collection dans une collection?

    et si oui, comment la mettre a jour?

    J’ai essayé plusieurs solutions qui me semble logique, mais rien ne marche.

    Merci de votre aide.

    PostID=TKBmKhYLTh5UzWR

    Usager supprimé a répondu Il y a 10 mois, 3 semaines 1 Membre · 2 Réponses
  • 2 Réponses
  • R3dKap

    Membre
    3 novembre 2022 à 20h57

    Salut Julien,

    Alors oui c’est possible mais effectivement la mise à jour est un peu “tricky” à faire.

    En fait, la logique est la suivante :

    • on considère que la colonne de la collection parente qui contient la collection enfant est une donnée comme une autre

    • et donc, pour la mettre à jour il faut fournir à cette colonne une collection entière

    • il faut donc passer par une collection intermédiaire dans laquelle on va placer la collection enfant

    • on met à jour la collection intermédiaire

    • on met à jour la collection parente en lui fournissant la collection enfant dans son ensemble

    Peut-être un exemple sera plus parlant :

    ClearCollect(n    colHeroes; n    {n        Name: "Starlight";n        Gender: "F"n    };n    {n        Name: "Captain America";n        Gender: "F"n    }n);;nClearCollect(n    colUniverses;n    {n        Name: "Marvel";n        Heroes: colHeroesn    }n);;n// ----- Code pour corriger le genre de 'Captain America'nUpdateContext(// Récupérer l'élément parent où la collection enfant doit être modifiéen    {n        locUniverse: LookUp(colUniverses; Name = "Marvel")n    }n);;n// Récupérer la collection enfant de l'élément parentnClearCollect(colTempHeroes; locUniverse.Heroes);;nPatch(// Modifier la collection enfantn    colTempHeroes;n    LookUp(n        colTempHeroes;n        Name = "Captain America"n    );n    {n        Gender: "M"n    }n);;nPatch(// Mettre à jour la collection enfant de l'élément parentn    colUniverses;n    locUniverse;n    {n        Heroes: colTempHeroesn    }n)

    Remarque : évidemment, en termes de perfs, l’idée même d’imbriquer une collection dans une autre n’est pas terrible car il y a des chances que pour mettre à jour la collection enfant pour l’ensemble des lignes de la collection parent il faille imbriquer 2 boucles ForAll()… mais y’a moyen d’optimiser un peu selon les cas

    Voilà, j’espère que c’est suffisamment clair. J’ai pas testé le code mais le principe est là…

    N’hésite pas si t’as besoin encore d’aide…

    CommentID=uajk3tawzta5hu3, PostID=TKBmKhYLTh5UzWR

  • Usager supprimé

    Membre
    3 novembre 2022 à 21h14

    Merci pour la réponse.

    L’idée ne m’avait pas effleuré effectivement.

    L’idée de base était de simplifier ma collection “parent” en regroupant certains éléments, mais effectivement a la vue de ce que je veut faire avec sa va bien alourdir mon app.

    Je vais simplifier tout ça 😜

    CommentID=QriAp7oVl2yql3n, PostID=TKBmKhYLTh5UzWR

Connectez-vous pour répondre.