Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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 :
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)
Où 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 )