Funktion „Errors“ in PowerAppsErrors function in PowerApps

Enthält Fehlerinformationen zu vorherigen Änderungen an einer Datenquelle.Provides error information for previous changes to a data source.

ÜbersichtOverview

Es kann zu Fehlern kommen, wenn der Datensatz einer Quelle geändert wird.Errors can happen when a record of a data source is changed. Dafür gibt viele Ursachen, wie z.B. einen Netzwerkausfall, unzureichende Berechtigungen oder Bearbeitungskonflikte.Many causes are possible, including network outages, inadequate permissions, and edit conflicts.

Die Patch-Funktion und andere Datenfunktionen geben Fehler nicht direkt zurück.The Patch function and other data functions don't directly return errors. Stattdessen geben sie das Ergebnis des Vorgangs zurück.Instead they return the result of their operation. Nachdem eine Datenfunktion ausgeführt wurde, können Sie mithilfe der Errors-Funktion die Details der Fehler abrufen.After a data function executes, you can use the Errors function to obtain the details of any errors. Suchen Sie über die [IsEmpty]-Funktion in der Formel IsEmpty ( Errors (...)) nach Fehlern.You can check for the existence of errors with the [IsEmpty] function in the formula IsEmpty( Errors ( ... ) ).

Sie können einige Fehler im Vorfeld vermeiden, wenn Sie die Validate und die DataSourceInfo-Funktionen nutzen.You can avoid some errors before they happen by using the Validate and DataSourceInfo functions. Weitere Informationen dazu, wie Sie mit Fehler umgehen oder sie vermeiden können, finden Sie unter Working with data sources (Arbeiten mit Datenquellen).See working with data sources for more suggestions on how to work with and avoid errors.

BeschreibungDescription

Die Errors-Funktion gibt eine Tabelle von Fehlern mit den folgenden Spalten zurück:The Errors function returns a table of errors that contains the following columns:

  • Record.Record. Der Datensatz in der Datenquelle, die den Fehler enthält.The record in the data source that had the error. Wenn der Fehler während der Erstellung eines Datensatzes aufgetreten ist, hat diese Spalte den Wert blank.If the error occurred during the creation of a record, this column will be blank.
  • Column.Column. Die Spalte, die den Fehler verursacht hat, wenn der Fehler auf eine einzelne Spalte zurückverfolgt werden kann.The column that caused the error, if the error can be attributed to a single column. Andernfalls hat die Spalte den Wert leer.If not, this will be blank.
  • Message.Message. Eine Beschreibung des Fehlers.A description of the error. Diese Fehlerzeichenfolge kann für den Endbenutzer angezeigt werden.This error string can be displayed for the end user. Denken Sie daran, dass diese Meldung vielleicht von der Datenquelle generiert wird. Sie kann lang sein und unformatierte Spaltennamen enthalten, die möglicherweise keine Bedeutung für den Benutzer haben.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.
  • Error.Error. Ein Fehlercode, der in Formeln verwendet werden kann, um den Fehler zu beheben:An error code that can be used in formulas to help resolve the error:
ErrorKindErrorKind BeschreibungDescription
ErrorKind.ConflictErrorKind.Conflict Am selben Datensatz wurde eine andere Änderung vorgenommen, die zu einem Änderungskonflikt geführt hat.Another change was made to the same record, resulting in a change conflict. Verwenden Sie die Refresh-Funktion, um den Datensatz zu laden, und wiederholen Sie die Änderung.Use the Refresh function to reload the record and try the change again.
ErrorKind.ConstraintViolationErrorKind.ConstraintViolation Mindestens eine Einschränkung wurde verletzt.One or more constraints have been violated.
ErrorKind.CreatePermissionErrorKind.CreatePermission Es wurde versucht, einen Datensatz zu erstellen, und der aktuelle Benutzer verfügt nicht über die Berechtigung zum Erstellen von Datensätzen.An attempt was made to create a record, and the current user doesn't have permission to create records.
ErrorKind.DeletePermissionErrorKind.DeletePermission Es wurde versucht, einen Datensatz zu löschen, und der aktuelle Benutzer verfügt nicht über die Berechtigung zum Löschen von Datensätzen.An attempt was made to delete a record, and the current user doesn't have permission to delete records.
ErrorKind.EditPermissionErrorKind.EditPermission Es wurde versucht, einen Datensatz zu bearbeiten, und der aktuelle Benutzer verfügt nicht über die Berechtigung zum Bearbeiten von Datensätzen.An attempt was made to edit a record, and the current user doesn't have permission to edit records.
ErrorKind.GeneratedValueErrorKind.GeneratedValue Es wurde versucht, eine Spalte zu ändern, die die Datenquelle automatisch generiert.An attempt was made to change a column that the data source generates automatically.
ErrorKind.MissingRequiredErrorKind.MissingRequired Der Wert für eine erforderliche Spalte fehlt im Datensatz.The value for a required column is missing from the record.
ErrorKind.NoneErrorKind.None Es liegt kein Fehler vor.There is no error.
ErrorKind.NotFoundErrorKind.NotFound Es wurde versucht, einen Datensatz zu bearbeiten oder zu löschen, aber der Datensatz konnte nicht gefunden werden.An attempt was made to edit or delete a record, but the record couldn't be found. Ein anderer Benutzer hat den Datensatz möglicherweise geändert.Another user may have changed the record.
ErrorKind.ReadOnlyValueErrorKind.ReadOnlyValue Es wurde versucht, eine Spalte zu ändern, die schreibgeschützt ist.An attempt was made to change a column that's read only.
ErrorKind.SyncErrorKind.Sync Von der Datenquelle wurde ein Fehler gemeldet.An error was reported by the data source. Überprüfen Sie die Meldungsspalte auf weitere Informationen.Check the Message column for more information.
ErrorKind.UnknownErrorKind.Unknown Es ist ein Fehler aufgetreten, der jedoch unbekannt ist.There was an error, but of an unknown kind.
ErrorKind.ValidationErrorKind.Validation Es wurde ein allgemeines Validierungsproblem erkannt, das keinem anderen entspricht.There was a general validation issue detected, that did not fit one of the other kinds.

Fehler können für die gesamte Datenquelle oder nur für eine ausgewählte Zeile durch die Bereitstellung des Record-Arguments für die Funktion zurückgegeben werden.Errors can be returned for the entire data source, or for only a selected row by providing the Record argument to the function.

Patch oder eine andere Datenfunktion können einen Wert blank zurückgeben, wenn z.B. ein Datensatz nicht erstellt werden konnte.Patch or another data function may return a blank value if, for example, a record couldn't be created. Sie können den Wert Blank an Errors übergeben, und es werden entsprechende Fehlerinformationen in diesen Fällen zurückgeben.You can pass blank to Errors, and it will return appropriate error information in these cases. Bei einer späteren Verwendung der Datenfunktionen auf der gleichen Datenquelle werden diese Fehlerinformationen gelöscht.Subsequent use of data functions on the same data source will clear this error information.

Wenn keine Fehler vorliegen, ist die Tabelle, die Errors zurückgibt, leer und kann mit der IsEmpty-Funktion getestet werden.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: erforderlich.DataSource – Required. Die Datenquelle, für die Fehler zurückgegeben werden sollen.The data source for which you want to return errors.
  • Record: optional.Record – Optional. Ein bestimmter Datensatz, für den Fehler zurückgegeben werden sollen.A specific record for which you want to return errors. Wenn Sie dieses Argument nicht angeben, gibt die Funktion für die gesamte Datenquelle Fehler zurück.If you don't specify this argument, the function returns errors for the entire data source.

BeispieleExamples

Schritt für SchrittStep by Step

In diesem Beispiel arbeiten wir mit der Datenquelle IceCream:For this example, we'll be working with the IceCream data source:

Über die App lädt ein Benutzer den Schokoladendatensatz in ein Dateneingabeformular und ändert anschließend den Wert für Quantity auf 90.Through the app, a user loads the Chocolate record into a data-entry form and then changes the value of Quantity to 90. Der Datensatz, mit dem gearbeitet wird, befindet sich in der Kontextvariablen 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 diese Änderung in der Datenquelle wird die Patch-Funktion verwendet:To make this change in the data source, the Patch function is used:

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

wobei Gallery.Updates den Wert {Quantity: 90} ergibt, da nur die Quantity-Eigenschaft geändert wurde.where Gallery.Updates evaluates to { Quantity: 90 }, since only the Quantity property has been modified.

Leider hat eine andere Person kurz vor dem Aufrufen der Patch-Funktion den Wert für Quantity für Schokolade auf 80 geändert.Unfortunately, just before the Patch function was invoked, somebody else modifies the Quantity for Chocolate to 80. PowerApps erkennt dies und verhindert einen Änderungskonflikt.PowerApps will detect this and not allow the conflicting change to occur. Sie können dies anhand der folgenden Formel überprüfen:You can check for this situation with the formula:

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

Diese gibt FALSE zurück, da die Errors-Funktion die folgende Tabelle zurückgegeben hat:which returns false, because the Errors function returned the following table:

DatensatzRecord SpalteColumn NachrichtMessage FehlerError
{ Flavor: "Chocolate", Quantity: 100 }{ Flavor: "Chocolate", Quantity: 100 } blankblank „Another user has modified the record that you're trying to modify. (Ein anderer Benutzer hat den Datensatz geändert, den Sie gerade ändern möchten.“)"Another user has modified the record that you're trying to modify. Please reload the record and try again.“ (Laden Sie den Datensatz neu, und versuchen Sie es erneut.)Please reload the record and try again." ErrorKind.ConflictErrorKind.Conflict

Sie können eine Bezeichnung auf dem Formular platzieren, um dem Benutzer diesen Fehler anzeigen.You can place a label on the form to show this error to the user.

  • Um den Fehler anzuzeigen, legen Sie die Bezeichnung der Text-Eigenschaft auf diese Formel fest: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

Sie können auch eine Reload-Schaltfläche zum erneuten Laden im Formular hinzufügen, damit der Benutzer den Konflikt effizient beheben kann.You can also add a Reload button on the form, so that the user can efficiently resolve the conflict.

  • Um die Schaltfläche nur dann anzuzeigen, wenn ein Konflikt aufgetreten ist, legen Sie die Visible-Eigenschaft der Schaltfläche auf diese Formel fest: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 ) )
  • Sie können die Änderung rückgängig machen, für die der Benutzer die Schaltfläche auswählt, indem Sie die OnSelect-Eigenschaft auf diese Formel festlegen: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 )