Partager via


Errors Fonction

S’applique à : Applications canevas basées sur des modèles

Fournit des informations d’erreur sur les modifications précédemment apportées à une source de données.

Vue d’ensemble

Errors peut se produire lorsqu’un enregistrement d’une source de données est modifié. Les causes sont multiples. Il peut même s’agir d’une indisponibilité du réseau, d’autorisations inadaptées et de conflits de modification.

Les fonctions qui modifient les données dans les sources de données, telles que Patch, Collect, Remove, RemoveIf, Update, UpdateIf et SubmitForm signalent les erreurs de deux manières :

  • Chacune de ces fonctions retourne une valeur d’erreur à la suite de l’opération. Errors peut être détecté avec IsError et remplacé ou supprimé par IfError et App.OnError comme d’habitude. Pour plus d’informations, voir Gestion des erreurs.
  • Après l’opération, la Errors fonction retourne également les erreurs pour les opérations précédentes. Il peut être utile d’afficher le message d’erreur sur un écran de formulaire sans avoir à capturer l’erreur dans une variable d’état.

Vous pouvez éviter certaines erreurs avant qu’elles ne se produisent à l’aide des fonctions Validate et DataSourceInfo. Consultez la page Utilisation des sources de données pour obtenir des suggestions sur la façon d’utiliser les erreurs et de les éviter.

Description

La Errors fonction retourne une table des erreurs qui contient les colonnes suivantes :

  • Enregistrer. Enregistrement de la source de données qui contenait l’erreur. Si l’erreur s’est produite lors de la création d’un enregistrement, cette colonne est vide.
  • Colonne. Colonne qui a provoqué l’erreur, si l’erreur peut être attribuée à une seule colonne. Si ce n’est pas le cas, il est vide.
  • Message. Description de l’erreur. Cette chaîne d’erreur est parfois présentée à l’utilisateur final. Ce message peut être généré par la source de données et peut être long et contenir des noms de colonnes brutes qui n’ont pas de signification pour l’utilisateur.
  • Erreur. Code d’erreur pouvant être utilisé dans les formules pour aider à résoudre l’erreur :
ErrorKind Description
ErrorKind.Conflict Une autre modification a été apportée au même enregistrement, ce qui a entraîné un conflit de modification. Utilisez la fonction Refresh pour recharger l’enregistrement, puis tentez d’appliquer à nouveau la modification.
ErrorKind.ConstraintViolation Une ou plusieurs contraintes n’ont pas été respectées.
ErrorKind.CreatePermission Une tentative de création d’enregistrement a eu lieu et l’utilisateur actuel n’est pas autorisé à créer des enregistrements.
ErrorKind.DeletePermission Une tentative de suppression d’enregistrement a eu lieu et l’utilisateur actuel n’est pas autorisé à supprimer des enregistrements.
ErrorKind.EditPermission Une tentative de modification d’enregistrement a eu lieu et l’utilisateur actuel n’est pas autorisé à modifier des enregistrements.
ErrorKind.GeneratedValue Une tentative de modification d’une colonne que la source de données génère automatiquement a eu lieu.
ErrorKind.MissingRequired La valeur d’une colonne requise est manquante dans l’enregistrement.
ErrorKind.None Il n’existe aucune erreur.
ErrorKind.NotFound L’enregistrement est introuvable alors qu’une tentative de le modifier ou de le supprimer a eu lieu. Un autre utilisateur a peut-être modifié l’enregistrement.
ErrorKind.ReadOnlyValue Une tentative de modification d’une colonne en lecture seule a eu lieu.
ErrorKind.Sync Une erreur a été signalée par la source de données. Vérifiez la colonne Message pour plus d’informations.
ErrorKind.Unknown Une erreur d’un genre inconnu a eu lieu.
ErrorKind.Validation Un problème de validation général a été détecté, qui ne correspondait pas à l’un des autres types.

Errors peut être retourné pour l’ensemble de la source de données ou pour une seule ligne sélectionnée en fournissant l’argument Record à la fonction.

Correctif ou une autre fonction de données peut renvoyer un vide valeur si, par exemple, un enregistrement n’a pas pu être créé. Vous pouvez passer vide à Errors, et il retourne les informations d’erreur appropriées dans ces cas. L’utilisation ultérieure de fonctions de données sur la même source de données efface ces informations d’erreur.

S’il n’y a aucune erreur, la table qui Errors retourne est vide et peut être testée avec la fonction IsEmpty .

Syntaxe

Errors( DataSource [, Record ] )

  • DataSource : obligatoire. Source de données pour laquelle vous souhaitez renvoyer des erreurs.
  • Enregistrer - Facultatif. Enregistrement spécifique pour lequel vous souhaitez renvoyer des erreurs. Si vous ne spécifiez pas cet argument, la fonction renvoie des erreurs pour toute la source de données.

Exemples

Pas à pas

Pour cet exemple, nous allons utiliser la source de données IceCream , une source de données pour laquelle Power Apps tentera de détecter les conflits :

Glace.

Note

Power Apps ne tente pas de détecter les conflits pour les modifications apportées aux tables Dataverse.

Via l’application, un utilisateur charge l’enregistrement Chocolate dans un formulaire de saisie de données, puis modifie Quantity en lui donnant pour valeur 90. L’enregistrement à utiliser est placé dans la variable contextuelleEditRecord :

  • Mettre à jour le contexte( { EditRecord : LookUp( IceCream, Flavor = "Chocolat" ) } )

Pour effectuer cette modification dans la source de données, la fonction Patch est utilisée :

  • Patch (IceCream, EditRecord, Gallery.Updates)

Gallery.Updates prend la valeur { Quantity : 90 }, car seule la propriété Quantity a été modifiée.

Malheureusement, juste avant que la fonction Patch ne soit appelée, quelqu’un d’autre modifie la propriété Quantity pour Chocolate et lui donne pour valeur 80. Étant donné qu’il s’agit d’une source de données prise en charge pour la détection des conflits, Power Apps détecte cela et n’autorise pas la modification en conflit. Vous pouvez vérifier cette situation à l’aide de la formule suivante :

  • IsEmpty( Errors( IceCream, EditRecord ) )

Qui retourne false, car la Errors fonction a retourné le tableau suivant :

Enregistrement Colonne Message Erreur
{ Flavor : « Chocolate », Quantity : 100 } vide « Un autre utilisateur a modifié l’enregistrement que vous tentez de modifier. Rechargez l’enregistrement et réessayez. » ErrorKind.Conflict

Vous pouvez placer une étiquette sur le formulaire pour signaler cette erreur à l’utilisateur.

  • Pour signaler cette erreur, définissez la propriété Text de l’étiquette à l’aide de la formule suivante :
    Label.Text = First(Errors( IceCream, EditRecord )). Message

Vous pouvez également ajouter un bouton Reload sur le formulaire, afin que l’utilisateur puisse résoudre efficacement les conflits.

  • Pour que le bouton n’apparaisse qu’en cas de conflit, définissez sa propriété Visible à l’aide de la formule suivante :
    ! IsEmpty( Lookup( Errors( IceCream, EditRecord ), Error = ErrorKind.Conflict ) )
  • Pour rétablir la modification, que l’utilisateur sélectionne le bouton, définissez sa propriété OnSelect sur cette formule :
    ReloadButton.OnSelect = Revert( IceCream, EditRecord )