Felfunktionen i PowerAppsErrors function in PowerApps

Ger information om fel för tidigare ändringar till en datakälla.Provides error information for previous changes to a data source.

ÖversiktOverview

Fel kan inträffa när en post till en datakälla har ändrats.Errors can happen when a record of a data source is changed. Många orsaker är möjliga, inklusive nätverksproblem, otillräckliga behörigheter och redigeringskonflikter.Many causes are possible, including network outages, inadequate permissions, and edit conflicts.

Funktionen Patch och andra datafunktioner returnerar inte fel direkt.The Patch function and other data functions don't directly return errors. I stället returnerar de resultatet av deras funktion.Instead they return the result of their operation. När en datafunktion körs, kan du använda funktionen Errors för att hämta information om eventuella fel.After a data function executes, you can use the Errors function to obtain the details of any errors. Du kan kontrollera om det finns fel med funktionen [IsEmpty] i formeln IsEmpty( Errors ( ... ) ).You can check for the existence of errors with the [IsEmpty] function in the formula IsEmpty( Errors ( ... ) ).

Du kan undvika fel innan de inträffar genom att använda funktionerna Validate och DataSourceInfo.You can avoid some errors before they happen by using the Validate and DataSourceInfo functions. Se arbeta med datakällor för fler förslag på hur du arbetar med och undviker fel.See working with data sources for more suggestions on how to work with and avoid errors.

BeskrivningDescription

Funktionen Errors returnerar en tabell med fel som innehåller följande kolumner:The Errors function returns a table of errors that contains the following columns:

  • Post.Record. Posten i datakällan som innehöll felet.The record in the data source that had the error. Om felet uppstod under genereringen av en post, kommer den här kolumnen att vara tom.If the error occurred during the creation of a record, this column will be blank.
  • Kolumn.Column. Kolumnen som orsakade felet, om felet kan bero på en enskild kolumn.The column that caused the error, if the error can be attributed to a single column. Om inte, kommer denna att vara tom.If not, this will be blank.
  • Meddelande.Message. En beskrivning av felet.A description of the error. Den här felsträngen kan visas för slutanvändaren.This error string can be displayed for the end user. Tänk på att det här meddelandet kan genereras av datakällan och kan vara långt och innehålla kolumnnamn i rådata som kanske inte har någon betydelse för användaren.Be aware that this message may be generated by the data source and could be long and contain raw column names that may not have any meaning to the user.
  • Fel.Error. En felkod som kan användas i formler för att lösa problemet:An error code that can be used in formulas to help resolve the error:
ErrorKindErrorKind BeskrivningDescription
ErrorKind.ConflictErrorKind.Conflict En annan ändring gjordes för samma post, vilket resulterade i en ändringskonflikt.Another change was made to the same record, resulting in a change conflict. Använd funktionen Refresh för att läsa in posten på nytt och prova att göra ändringen igen.Use the Refresh function to reload the record and try the change again.
ErrorKind.ConstraintViolationErrorKind.ConstraintViolation Ett eller flera villkor har överskridits.One or more constraints have been violated.
ErrorKind.CreatePermissionErrorKind.CreatePermission Ett försök gjordes att skapa en post och den aktuella användaren har inte behörighet att skapa poster.An attempt was made to create a record, and the current user doesn't have permission to create records.
ErrorKind.DeletePermissionErrorKind.DeletePermission Ett försök gjordes att ta bort en post, och den aktuella användaren har inte behörighet att ta bort poster.An attempt was made to delete a record, and the current user doesn't have permission to delete records.
ErrorKind.EditPermissionErrorKind.EditPermission Ett försök gjordes att redigera en post och den aktuella användaren har inte behörighet att redigera poster.An attempt was made to edit a record, and the current user doesn't have permission to edit records.
ErrorKind.GeneratedValueErrorKind.GeneratedValue Ett försök gjordes att ändra en kolumn som datakällan genererade automatiskt.An attempt was made to change a column that the data source generates automatically.
ErrorKind.MissingRequiredErrorKind.MissingRequired Värdet för en obligatorisk kolumn saknas från posten.The value for a required column is missing from the record.
ErrorKind.NoneErrorKind.None Det finns inga fel.There is no error.
ErrorKind.NotFoundErrorKind.NotFound Ett försök gjordes att redigera eller ta bort en post, men det gick inte att hitta posten.An attempt was made to edit or delete a record, but the record couldn't be found. En annan användare kan ha ändrat posten.Another user may have changed the record.
ErrorKind.ReadOnlyValueErrorKind.ReadOnlyValue Ett försök gjordes att ändra en kolumn som är skrivskyddad.An attempt was made to change a column that's read only.
ErrorKind.SyncErrorKind.Sync Ett fel rapporterades av datakällan.An error was reported by the data source. Kontrollera meddelandekolumnen för mer information.Check the Message column for more information.
ErrorKind.UnknownErrorKind.Unknown Det uppstod ett fel, men av ett okänt slag.There was an error, but of an unknown kind.
ErrorKind.ValidationErrorKind.Validation Ett allmänt verifieringsproblem upptäcktes, som inte passade in på någon annan sort.There was a general validation issue detected, that did not fit one of the other kinds.

Fel kan returneras för hela datakällan eller bara för vald rad genom att ange argumentet Record till funktionen.Errors can be returned for the entire data source, or for only a selected row by providing the Record argument to the function.

Patch eller en annan datafunktion kan returnera ett tom värde om till exempel en post inte kunde skapas.Patch or another data function may return a blank value if, for example, a record couldn't be created. Du kan överföra tom till Errors, och det ger i dessa fall information om fel.You can pass blank to Errors, and it will return appropriate error information in these cases. Att sedan använda datafunktionerna för samma datakälla kommer att rensa felinformationen.Subsequent use of data functions on the same data source will clear this error information.

Om det inte finns några fel, kommer tabellen som Errors returnerar att vara tom och kan testas med funktionen IsEmpty.If there are no errors, the table that Errors returns will be empty and can be tested with the IsEmpty function.

SyntaxSyntax

Errors( DataSource [, Record ] )Errors( DataSource [, Record ] )

  • DataSource – Krävs.DataSource – Required. Datakällan som du vill returnera fel för.The data source for which you want to return errors.
  • Record – valfritt.Record – Optional. En viss post som du vill returnera fel för.A specific record for which you want to return errors. Om du inte anger argumentet returnerar funktionen fel för hela datakällan.If you don't specify this argument, the function returns errors for the entire data source.

ExempelExamples

Steg för stegStep by Step

I det här exemplet arbetar vi med datakällan IceCream:For this example, we'll be working with the IceCream data source:

Via appen, läser en användare in poster med Chocolate i ett formulär för inmatning och ändrar värdet för Quantity till 90.Through the app, a user loads the Chocolate record into a data-entry form and then changes the value of Quantity to 90. Posten som ska bearbetas placeras i kontextvariabeln EditRecord:The record to be worked with is placed in the context variable EditRecord:

  • UpdateContext( { EditRecord: First( Filter( IceCream, Flavor = "Chocolate" ) ) } )UpdateContext( { EditRecord: First( Filter( IceCream, Flavor = "Chocolate" ) ) } )

För att göra ändringen i datakällan, används funktionen Patch:To make this change in the data source, the Patch function is used:

  • Patch( IceCream, EditRecord, Gallery.Updates )Patch( IceCream, EditRecord, Gallery.Updates )

där Gallery.Updates utvärderas till { Quantity: 90}, eftersom endast egenskapen Quantity har ändrats.where Gallery.Updates evaluates to { Quantity: 90 }, since only the Quantity property has been modified.

Precis innan funktionen Patch anropades, ändrade någon annan Quantity för Chocolate till 80.Unfortunately, just before the Patch function was invoked, somebody else modifies the Quantity for Chocolate to 80. PowerApps identifierar detta och tillåter inte ändringen som står i konflikt.PowerApps will detect this and not allow the conflicting change to occur. Du kan kontrollera efter här situationen med formeln:You can check for this situation with the formula:

  • IsEmpty( Errors( IceCream, EditRecord ) )IsEmpty( Errors( IceCream, EditRecord ) )

vilken returnerar falskt, eftersom funktionen Errors returnerade följande tabell:which returns false, because the Errors function returned the following table:

PostRecord KolumnColumn MeddelandeMessage FelError
{ Flavor: "Chocolate", Quantity: 100 }{ Flavor: "Chocolate", Quantity: 100 } blankblank "En annan användare har ändrat den post som du försöker ändra."Another user has modified the record that you're trying to modify. Återställ posten och försök igen."Please reload the record and try again." ErrorKind.ConflictErrorKind.Conflict

Du kan placera en etikett i formuläret för att visa det här felet för användaren.You can place a label on the form to show this error to the user.

  • För att visa felet, ange etikettens egenskap för Text till den här formeln:To show the error, set the label's Text property to this formula:
    Label.Text = First(Errors( IceCream, EditRecord )).MessageLabel.Text = First(Errors( IceCream, EditRecord )).Message

Du kan också lägga till knappen Reload i formuläret, så att användaren effektivt kan lösa konflikten.You can also add a Reload button on the form, so that the user can efficiently resolve the conflict.

  • Om du vill visa knappen bara när en konflikt uppstår, ange knappens egenskap Visible till den här formeln:To show the button only when a conflict has occurred, set the button's Visible property to this formula:
    !IsEmpty( Lookup( Errors( IceCream, EditRecord ), Error = ErrorKind.Conflict ) )!IsEmpty( Lookup( Errors( IceCream, EditRecord ), Error = ErrorKind.Conflict ) )
  • För att återställa ändringen som användaren väljer för knappen, ange dess egenskap OnSelect till den här formeln:To revert the change which the user selects the button, set its OnSelect property to this formula:
    ReloadButton.OnSelect = Revert( IceCream, EditRecord )ReloadButton.OnSelect = Revert( IceCream, EditRecord )