Créer et modifier des enregistrements à l’aide de la fonction Patch

Effectué

La fonction Patch vous permet de créer et modifier des enregistrements dans une source de données si l’utilisation d’un contrôle Formulaire ne répond pas à vos besoins. La fonction Patch est utilisée le plus souvent lorsque vous devez agir selon des données sans interactions utilisateur de manière répétitive. Vous l’utilisez également si la conception de votre application ne permet pas l’utilisation de formulaires.

Créer un enregistrement à l’aide de la fonction Patch

La fonction Patch vous permet de créer un enregistrement dans votre source de données. Pour créer un enregistrement, il existe trois parties dans la formule.

  1. Incluez le nom de la source de données que vous souhaitez modifier. Il peut s’agir d’une source de données tabulaires (par exemple, Microsoft Dataverse ou SharePoint) ou d’une collection. Pour les besoins de l’exemple, vous allez utiliser CustomerOrders comme nom de source de données.

  2. La fonction Defaults renvoie un enregistrement qui comporte les valeurs par défaut de la source de données. Si une colonne dans la source de données n’a pas de valeur par défaut, cette propriété n’est pas présente. L’utilisation de la fonction Defaults avec la source de données indique à la fonction Patch de créer un enregistrement.

  3. Incluez les colonnes que vous souhaitez renseigner dans le nouvel enregistrement. À ce stade, vous spécifiez le nom de la colonne à mettre à jour suivi de la valeur à écrire dans cette colonne. Pour les besoins de cet exemple, vous allez mettre à jour les colonnes Region et Country avec une valeur de chaîne.

Voici un exemple de formule :

Patch(CustomerOrders, Defaults(CustomerOrders), {Region: "Americas", Country: "Canada"})

Cette formule crée un enregistrement dans la source de données CustomerOrders et définit Region sur Americas et Country sur Canada. Notez que vous ne définissez aucune information de clé primaire (colonne ID) mise à jour par la source de données en fonction de ses paramètres.

Modifier un enregistrement à l’aide de la fonction Patch

Vous pouvez également modifier un enregistrement dans la source de données. Pour ce faire, il existe trois parties dans la formule.

  1. Incluez le nom de la source de données que vous souhaitez modifier. Il peut s’agir d’une source de données tabulaires (par exemple, Dataverse ou SharePoint) ou d’une collection. Pour les besoins de l’exemple, vous allez utiliser CustomerOrders comme nom de source de données.

  2. L’enregistrement que vous souhaitez modifier dans la source de données. La méthode la plus courante pour spécifier cet enregistrement consiste à le récupérer de la source de données à l’aide de la fonction LookUp. Si vous utilisez une galerie et que vous souhaitez mettre à jour l’enregistrement actuel, vous pouvez référencer l’enregistrement à l’aide de la fonction ThisItem. Pour les besoins de cet exemple, vous allez utiliser une fonction LookUp.

  3. Incluez les modifications que vous souhaitez apporter. À ce stade, vous spécifiez le nom de la colonne à mettre à jour suivi de la valeur à écrire dans cette colonne. Pour les besoins de cet exemple, vous allez mettre à jour les colonnes Region et Country avec une valeur de chaîne.

Voici un exemple de formule :

Patch(CustomerOrders, LookUP(CustomerOrders, ID = 1), {Region: "Asia", Country: "China"})

Cette formule met à jour l’enregistrement portant l’ID 1 dans la table CustomerOrders en définissant la colonne Region sur Asia et la colonne Country sur China. S’il existe des valeurs dans ces champs, elles sont remplacées.

Mettre à jour des colonnes avec la fonction Patch

La logique principale de la plupart des fonctions Patch consiste à mettre à jour les colonnes appropriées avec les informations correctes. La fonction Patch repose en grande partie sur cette logique. Tirez le meilleur parti de la fonction Patch à l’aide des points suivants.

  • Veillez à mettre à jour toutes les colonnes requises dans votre source de données.

  • Vous pouvez mettre à jour un nombre quelconque de colonnes facultatives.

  • Vérifiez que vos noms de colonnes sont correctement orthographiés et portent la casse adéquate. Les noms de colonnes respectent la casse.

  • Vérifiez que vous écrivez le type de données correct. Par exemple, si votre colonne dans la source de données est de type numérique, vous ne pouvez pas y écrire une valeur de chaîne, même si cette chaîne comporte un nombre.

Il existe quatre sources pour transmettre des valeurs dans votre formule afin de corriger votre source de données :

  • Vous pouvez coder en dur une valeur. Par exemple, si vous souhaitez corriger le statut de l’enregistrement avec « En attente », votre formule Patch ressemblerait à ceci :

    Patch(CustomerOrders, Default(CustomerOrders), {Status: "Pending"})
    

    Cette formule crée un enregistrement et définit la colonne Statut sur la valeur de chaîne « En attente ».

  • Vous pouvez référencer une variable. Par exemple, vous pouvez stocker la chaîne « En cours d’évaluation » dans une variable nommée varStatus avec la formule suivante.

    Set(varStatus, "Under Review")
    

    Votre formule Patch serait alors la suivante :

    Patch(CustomerOrders, Default(CustomerOrders), {Status: varStatus})
    

    Cette formule crée un enregistrement et définit la colonne Statut sur la valeur de chaîne « En cours d’évaluation ».

  • Vous pouvez référencer la valeur à partir de la propriété d’un contrôle. Vous pouvez, par exemple, définir la valeur à partir d’un menu déroulant nommé Dropdown1 comportant les régions. Votre formule Patch ressemblerait à ceci :

    Patch(CustomerOrders, Default(CustomerOrders), {Status: Dropdown1.Selected.Value})
    

    Cette formule crée un enregistrement et définit la colonne Statut sur la valeur de l’élément sélectionné dans le menu déroulant.

  • Vous pouvez utiliser la sortie d’une formule. Par exemple, vous pouvez définir la valeur de la colonne Owner à l’aide de la valeur de FullName issue de la fonction User(). Votre formule Patch ressemblerait à ceci :

    Patch(CustomerOrders, Default(CustomerOrders), {Owner: User().FullName})
    

    Cette formule crée un enregistrement et définit la colonne Owner sur la valeur FullName de l’utilisateur actuel à partir de Microsoft Entra ID.

Exemple de fonction Patch

Prenons un autre exemple : ici, vous allez essayer de créer une solution afin que les utilisateurs se connectent au cours à leur arrivée. Ce type de solution Power Apps est courant et la fonction Patch vous aide à obtenir rapidement des résultats.

Capture d’écran d’un exemple de fonction Patch dans une solution Power Apps.

Décomposition de la solution

Ici, nous avons une simple application canevas connectée à notre source de données (ConnexionCoursFormation). La source de données comprend les colonnes suivantes : Cours de formation, FirstName, LastName, EmailAddress et SignInStatus. Il s’agit des informations que nous souhaitons capturer lorsqu’un utilisateur clique sur le bouton Sign In. Dans la barre de formule, vous voyez le code suivant :

Patch(TrainingClassSignIn,Defaults(TrainingClassSignIn),{TrainingClass:TrainingClassDD.Selected.Value, FirstName:FirstNameInput.Text, LastName:LastNameInput.Text, EmailAddress:EmailAddressInput.Text, SignInStatus:"Attended"})

En fait, chaque fois que quelqu’un clique sur le bouton Sign In, Power Apps écrit un nouvel enregistrement dans la source de données TrainingClassSignIn. Quant aux données réécrites pour la connexion de l’utilisateur, vous pouvez voir que ces informations sont obtenues à partir des différents contrôles que nous avons ajoutés (codés par couleur dans la formule). Vous remarquerez peut-être également que le code définit systématiquement le paramètre SignInStatus sur « Attended » pour chaque nouvel enregistrement envoyé.

Comme vous pouvez le voir, la fonction Patch est flexible et puissante. La fonction Patch a davantage de fonctionnalités, notamment la possibilité de mettre à jour plusieurs enregistrements et de fusionner des enregistrements. Pour en savoir plus sur ces scénarios, consultez Fonction Patch dans Power Apps.