Patch |
Correctif |
|---|---|
| Power Fx | |
Syntaxe
| Patch( DataSource, BaseRecord, ChangeRecord1 [, ChangeRecord2, ... ]) |
| Patch( DataSource, BaseRecordsTable, ChangeRecordTable1 [, ChangeRecordTable2, ... ] ) |
| Patch( Record1, Record2 [, ...] ) |
Paramètres
| Nom | Description |
|---|---|
| DataSource | Ce paramètre représente la source de données (par exemple, une table ou une collection) dans laquelle l'enregistrement sera créé ou modifié. |
| BaseRecord | Ce paramètre représente l'enregistrement à modifier. Si l'enregistrement n'existe pas encore, il peut être vide (par exemple, Defaults(DataSource)) pour créer un nouvel enregistrement. |
| ChangeRecord1, ... | Ces paramètres représentent un ou plusieurs enregistrements contenant les modifications à appliquer à BaseRecord. |
| BaseRecordsTable | Ce paramètre est une table contenant plusieurs enregistrements à modifier. Utilisé pour les opérations en masse. |
| ChangeRecordTable1, ... | Ces paramètres représentent les modifications correspondantes aux enregistrements dans BaseRecordsTable. |
| Record1, Record2, ... | Ces paramètres représentent les enregistrements à fusionner. Si aucune DataSource n'est précisée, Patch agit comme un opérateur de fusion (merge). |
Description
Cette fonction permet de modifier ou de créer un enregistrement dans une source de données.
Remarques
- Polyvalence pour la mise à jour et la création d'enregistrements : La fonction Patch est l'une des plus puissantes de Power Fx, car elle permet à la fois de modifier un enregistrement existant dans une source de données ou d'en créer un nouveau. L'utilisation de Defaults(DataSource) comme BaseRecord permet de générer un nouvel enregistrement avec les champs spécifiés dans les ChangeRecords. Cette double capacité en fait un outil central pour gérer les formulaires de saisie et les flux de travaux automatisés.
- Fonctionnement sans DataSource comme opérateur de fusion : Lorsqu'aucune DataSource n'est précisée, Patch peut être utilisé pour fusionner des enregistrements (c'est-à-dire combiner plusieurs objets en un seul). Cela permet de construire dynamiquement des enregistrements avant de les envoyer à une source de données, ou de manipuler des objets en mémoire. Ce comportement est utile pour le traitement de données temporaires ou l'agrégation d'informations issues de plusieurs étapes.
- Compatible avec des modifications en masse : Patch supporte une version "batch" prenant une table d'enregistrements de base (BaseRecordsTable) et appliquant les modifications correspondantes à partir de tables de changements. Cela permet de traiter efficacement plusieurs mises à jour en une seule instruction, ce qui est essentiel pour les performances, surtout lors d'interactions avec des sources à distances comme SharePoint ou Dataverse.
- Pas de validation automatique des types de données : Lorsque vous utilisez Patch, aucune validation stricte des types n'est effectuée automatiquement. Par exemple, si un champ numérique reçoit une chaîne de caractères, l'opération peut échouer silencieusement ou entraîner une erreur. Il est donc recommandé de s'assurer que les types des champs dans les ChangeRecords correspondent bien à ceux de la source de données.
- Déclenchement automatique des flux Power Automate ou flux de travaux : Lorsqu'un Patch modifie ou crée un enregistrement dans des sources de données comme Dataverse ou SharePoint, cela peut déclencher des flux Power Automate ou des flux de travaux associés à ces entités. Il est donc important d'être conscient des effets secondaires possibles, surtout dans des contextes de production ou avec des automatisations complexes.
- Gestion explicite des champs non modifiés : La fonction Patch ne modifie que les champs explicitement inclus dans les ChangeRecords. Les champs non mentionnés conservent leur valeur d'origine. Cela permet un contrôle fin sur ce qui est modifié, mais oblige à faire attention à ne pas omettre involontairement un champ critique lors de la mise à jour d'un enregistrement.
- Différence notable avec Update et UpdateIf : Contrairement à Update ou UpdateIf, la fonction Patch permet d'agir sur un seul enregistrement (ou plusieurs) avec une plus grande précision. Elle permet également la création de nouveaux éléments, ce que Update ne peut pas faire. De plus, Patch peut être combiné avec LookUp pour cibler un élément spécifique, ce qui n'est pas aussi direct avec UpdateIf.
- Peut entraîner des erreurs en cas de conflits de verrouillage : Lorsqu'on utilise Patch dans un environnement multi-utilisateur, des erreurs peuvent survenir si un autre utilisateur a modifié le même enregistrement entre-temps. Power Apps n'effectue pas automatiquement de gestion des conflits ou de verrouillage optimiste. Il est conseillé d'utiliser des techniques comme la vérification des horodatages ou des identifiants de version pour s'assurer que les données ne sont pas écrasées accidentellement.
Dernière mise à jour : Jeudi, le 1 Mai 2025