Fonctions Update et UpdateIf
S’applique à : Applications canevas Applications pilotées par modèle
Permet de mettre à jour des enregistrements dans une source de données.
Description
Fonction Update
La fonction Update permet de remplacer un enregistrement complet dans une source de données. En revanche, les fonctions UpdateIf et Patch modifient simplement une ou plusieurs valeurs d’un enregistrement, sans s’occuper des autres.
Dans le cadre d’une collection, l’enregistrement complet doit correspondre. Les collections autorisent des enregistrements en double. Ainsi, plusieurs enregistrements peuvent correspondre. Vous pouvez utiliser l’argument RemoveFlags.All pour mettre à jour toutes les copies d’un enregistrement. Dans le cas contraire, une seule copie de l’enregistrement est mise à jour.
Si la source de données génère automatiquement une valeur de colonne, la valeur de cette colonne doit être réaffirmée.
Fonction UpdateIf
Utilisez la fonction UpdateIf pour modifier une ou plusieurs valeurs d’un ou de plusieurs enregistrements qui correspondent à une ou plusieurs conditions. La condition peut être une formule au choix de type true ou false, ainsi qu’elle peut référencer des colonnes de la source de données par leur nom. La fonction évalue la condition pour chaque enregistrement, puis modifie un enregistrement pour lequel le résultat est true.
Pour indiquer une modification, utilisez un enregistrement de modification contenant de nouvelles valeurs de propriété. Si vous mentionnez cet enregistrement de modification en ligne avec des accolades, les formules de propriété peuvent référencer des propriétés de l’enregistrement en cours de modification. Ce comportement vous permet de modifier les enregistrements d’après une formule.
Tout comme avec la fonction UpdateIf, vous pouvez également utiliser la fonction Patch pour modifier certaines colonnes d’un enregistrement sans affecter les autres colonnes.
Les fonctions Update et UpdateIf renvoient toutes deux la source de données modifiée sous la forme d’une table. Vous devez utiliser l’une de ces deux fonctions dans une formule de comportement.
Délégation
Lorsqu’elles sont utilisées avec une source de données, ces fonctions ne peuvent pas être déléguées. Seule la première partie de la source de données sera extraite, puis la fonction sera appliquée. Il se peut que le résultat ne représente pas une vue d’ensemble complète. Un avertissement peut s’afficher au moment de la création pour vous rappeler cette limitation.
Prise en charge de la délégation
Seules certaines sources de données prennent en charge UpdateIf. Si un source de données ne prend pas en charge cette fonctionnalité, Power Apps enverra désormais une requête au serveur et récupérera toutes les données correspondant à l’expression de filtre jusqu’à un maximum de 500 ou 2 000 ou la taille de la page de données. Ensuite, il mettra à jour ces enregistrements et les renverra chacun au serveur pour être mis à jour.
Syntaxe
Mettre à jour( DataSource, OldRecord, NewRecord [, All ] )
- DataSource : obligatoire. Source de données contenant l’enregistrement à remplacer.
- OldRecord : obligatoire. Enregistrement à remplacer.
- NewRecord : obligatoire. Enregistrement de remplacement. Il ne s’agit pas d’un enregistrement de modification. L’enregistrement complet est remplacé, et les propriétés manquantes contiendront une valeur blank.
- RemoveFlags.All – Facultatif. Dans une collection, le même enregistrement peut apparaître plusieurs fois. Spécifiez l’argument RemoveFlags.All pour mettre à jour toutes les copies de l’enregistrement.
UpdateIf( DataSource, Condition1, ChangeRecord1 [, Condition2, ChangeRecord2, ... ] )
- DataSource : obligatoire. Source de données contenant l’enregistrement ou les enregistrements à modifier.
- Condition(s) : obligatoire. Formule renvoyant la valeur true pour l’enregistrement ou les enregistrements à modifier. Vous pouvez utiliser les noms de colonne de DataSource dans la formule.
- ChangeRecord(s) : obligatoire. Pour chaque condition correspondante, enregistrement de modification des valeurs de la nouvelle propriété à appliquer aux enregistrements de DataSource qui remplissent la condition. Si vous mentionnez cet enregistrement en ligne avec des accolades, les valeurs de propriété de l’enregistrement existant peuvent être utilisées dans les formules de la propriété.
Exemples
Dans ces exemples, vous allez remplacer ou modifier des enregistrements dans une source de données appelée IceCream qui commence par les données de cette table :
Formule | Description | Résultat |
---|---|---|
Update( IceCream, First( Filter( IceCream, Flavor="Chocolate" ) ), { ID: 1, Flavor: "Mint Chocolate", Quantity:150 } ) |
Remplace un enregistrement à partir de la source de données. | La source de données IceCream a été modifiée. |
UpdateIf( IceCream, Quantity > 175, { Quantity: Quantity + 10 } ) | Modifie les enregistrements dont la valeur Quantity est supérieure à 175. Le champ Quantity est incrémenté de 10, et aucun autre champ n’est modifié. | La source de données IceCream a été modifiée. |
Update( IceCream, First( Filter( IceCream, Flavor="Strawberry" ) ), { ID: 3, Flavor: "Strawberry Swirl"} ) |
Remplace un enregistrement à partir de la source de données. La propriété Quantity n’a pas été fournie dans l’enregistrement de remplacement, de sorte que la propriété est blank dans le résultat. | La source de données IceCream a été modifiée. |
UpdateIf( IceCream, true, { Quantity: 0 } ) | Définit la valeur de la propriété Quantity à tous les enregistrements de la source de données sur 0. | La source de données IceCream a été modifiée. |
Pas à pas
Importez ou créez une collection appelée Inventory, puis affichez-la dans une galerie comme décrit dans l’article Afficher les données dans une galerie.
Nommez la galerie ProductGallery.
Ajoutez un curseur appelé UnitsSold, puis définissez sa propriété Max en utilisant l’expression suivante :
ProductGallery.Selected.UnitsInStockAjoutez un bouton, puis définissez sa propriété OnSelect sur la formule suivante :
UpdateIf(Inventory, ProductName = ProductGallery.Selected.ProductName, {UnitsInStock:UnitsInStock-UnitsSold.Value})Appuyez sur F5, sélectionnez un produit dans la galerie, spécifiez une valeur avec le curseur, puis cliquez sur le bouton.
Le nombre d’unités en stock pour le produit spécifié diminue d’après la quantité que vous avez indiquée.