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 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 est récupérée, puis la fonction est appliquée. Le résultat peut donc être incomplet. Un point bleu apparaît au moment de l’autorisation pour vous rappeler cette limitation et vous suggérer d’utiliser des fonctions équivalentes pouvant être déléguées lorsque vous le pouvez. Pour plus d’informations, consultez la vue d’ensemble des délégations.

Syntaxe

Update( DataSource, OldRecord, NewRecord [, All ] )

  • *DataSource* : requis. Source de données contenant l’enregistrement à remplacer.

  • *OldRecord* : requis. Enregistrement à remplacer.

  • NewRecord* : requis. 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 un *espace vide.

  • All : facultatif. Dans une collection, le même enregistrement peut apparaître plusieurs fois. Spécifiez l’argument All pour supprimer toutes les copies de l’enregistrement.

UpdateIf( DataSource, Condition1, ChangeRecord1 [, Condition2, ChangeRecord2, ... ] )

  • *DataSource* : requis. Source de données contenant l’enregistrement ou les enregistrements à modifier.

  • Condition(s)* : requis. 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)* : requis. 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 à 150. 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 vide dans le résultat.

La source de données IceCream a été modifiée.
UpdateIf( IceCream, true, { Quantity: 0 } ) Donne à tous les enregistrements de la source de données une propriété Quantity ayant pour valeur 0.

La source de données IceCream a été modifiée.

Étape par étape

  1. 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.

  2. Nommez la galerie ProductGallery.

  3. Ajoutez un curseur appelé UnitsSold, puis définissez sa propriété Max en utilisant l’expression suivante :
    ProductGallery.Selected.UnitsInStock

  4. Ajoutez un bouton, puis définissez sa propriété OnSelect sur la formule suivante :
    UpdateIf(Inventory, ProductName = ProductGallery.Selected.ProductName, {UnitsInStock:UnitsInStock-UnitsSold.Value})

  5. 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.