Exporter une collection vers Dataverse

Étiquetté : , ,

  • Exporter une collection vers Dataverse

    Posté par Karlemagne sur 4 novembre 2022 à 15h47

    Bonjour à tous,

    Après plusieurs mois de développement et de tests + débogage de mon appli de gestion de vêtements, je reviens vers vous.

    A la base, mon appli fonctionne parfaitement bien. Utilisant mon appli en WiFi, le seul soucis qu’il me restait à résoudre, c’était une question de lenteur entre le moment ou je validais la sortie (ou le retour) d’un vêtement et l’enregistrement dans la Dataverse. Je devais attendre la fin de l’enregistrement pour pouvoir scanner le vêtement suivant. J’ai résolu ce problème en important ma Dataverse dans une collection, ce qui me permet d’avoir un fonctionnement de recherche et de modification instantanée. La ou je bloque, c’est pour transférer mes modifications (pouvant inclure suppression ou ajout de ligne) de la collection vers ma Dataverse. Sur internet j’ai trouvé 2 solutions, mais aucune des 2 ne fonctionnent :

    ForAll(MyCollection;Patch(MyDataverse;ThisRecord))
    Patch(MyDataverse;MyCollection)

    Auriez-vous une solution à me proposer svp ?

    En vous remerciant de votre retour.

    PostID=U3V8PuuSONXBLo3

    Karlemagne a répondu Il y a 9 mois, 2 semaines 1 Membre · 5 Réponses
  • 5 Réponses
  • DavidZed

    Membre
    4 novembre 2022 à 18h22

    Hello Karlemagne ,

    Ce que je fais généralement dans ce genre de cas, c’est que j’ajoute une colonne à ma collection avec un AddColumns() dans le ClearCollect() ou Collect(), ex :

    ClearCollect(AddColumns(Source;”Flag”;””))

    Quand je fais une modif sur ma collection, je change la valeur “FLAG” pour “New” / “Edit” / “Remove”

    et pour le Patch, je filtre sur ma collection (je n’ai plus les formules en tête, il me semble notamment que j’étais parvenu à m’affranchir du ForAll(), ce qui accélérait grandement le temps de traitement) :

    Je supprime de la collection tous les records dont le flag est “” : RemoveIf(Collection;Flag="")

    Pour tous les FLAG=”New” : Patch(Source, Defaults(Source),{updates})

    Pour tous les FLAG=”Edit” : Patch(Source, ThisRecord,{updates})

    Pour tous les FLAG=”Remove” : Remove(Source, ThisRecord)

    PS: ne pas oublier d’inclure un DropColumns() pour exclure la colonne Flag du Patch, sinon ça plantera 🙂

    CommentID=9AEUIeLWBTaQJMI, PostID=U3V8PuuSONXBLo3

  • DavidZed

    Membre
    4 novembre 2022 à 19h34

    J’ai retrouvé ce que j’avais fait pour le patch (attention syntaxe en en-US”) :

    // On supprime de la source tous les items qui ont été flagés "à supprimer" dans la collectionnRemove(n        Source,n        DropColumns(n            Filter(n                Collection,n                Flag = "remove"n            ),n            "Flag"n        )n    );n// On met à jour la source avec tous les items qui ont été flagés "Modifié" dans la collectionnPatch(n        Source,n        DropColumns(n            Filter(n                Collection,n                Flag = "edit"n            ),n            "Flag"n        )n    );n// On ajoute à la source tous les items qui ont été flagés "Nouveau" dans la collectionnForAll(n        Filter(n            Collection,n            Flag = "new"n        ),n        Patch(n            Source,n            Defaults(Source),n            {n                [Updates]n            }n        )n    )

    Cette méthode a l’avantage de limiter le traitement au strict nécessaire en excluant les items qui ne sont pas modifiés, de plus on utilise juste un ForAll() pour les ajouts, les modifications et suppressions sont traités en lots, ce qui est beaucoup plus rapide.

    CommentID=xQRvyzSSE6uDnTN, PostID=U3V8PuuSONXBLo3

    • Karlemagne

      Membre
      7 novembre 2022 à 9h00

      Bonjour DavidZed,

      Merci de ton retour. J’ai appliqué le code, sauf que PowerApps me met une erreur dans le ForAll à cause du {[Updates]}.

      Ai-je fais une erreur que je ne verrais pas malgré le nombre de fois ou j’ai relus ton code et le mien ?

      La partie Edition fonctionne à merveille 👍

      SubCommentID=SEa4PofMpClHwvn, CommentID=xQRvyzSSE6uDnTN, PostID=U3V8PuuSONXBLo3

    • DavidZed

      Membre
      7 novembre 2022 à 17h48

      Le [Updates] n’est pas à mettre tel quel 😄 C’était juste pour te montrer l’endroit où mettre tes valeurs entre les {}

      La syntaxe est :

      {'Nom de la colonne' : Valeur}

      Exemple :

      Patch(n   'Liste_Animaux' ;n   Defaults('Liste_Animaux');n   {n       Title:"Médor";n       Race:"Teckel sous stéroïdes";n       Age:3;n       'Date de naissance':Date(2019;06;18);n       Poids:34,78;n   }n)

      SubCommentID=kajyuXnUaW4dVSE, CommentID=xQRvyzSSE6uDnTN, PostID=U3V8PuuSONXBLo3

    • Karlemagne

      Membre
      8 novembre 2022 à 6h59

      Autant pour moi. Les journées sont longues et fatiguantes en ce moment. Je corrige de suite mon code.

      SubCommentID=5v8PyUzf9G87t9H, CommentID=xQRvyzSSE6uDnTN, PostID=U3V8PuuSONXBLo3

Connectez-vous pour répondre.