Funktion „Errors“

Gilt für: Canvas-Apps Modellgesteuerte Apps

Enthält Fehlerinformationen zu vorherigen Änderungen an einer Datenquelle.

Überblick

Es kann zu Fehlern kommen, wenn der Datensatz einer Quelle geändert wird. Dafür gibt viele Ursachen, wie z. B. einen Netzwerkausfall, unzureichende Berechtigungen oder Bearbeitungskonflikte.

Die Funktionen, die Daten in Datenquellen ändern, wie Patch, Collect, Remove, RemoveIf, Update, UpdateIf und SubmitForm, melden Fehler auf zwei Arten:

  • Jede dieser Funktionen gibt als Ergebnis des Vorgangs einen Fehlerwert zurück. Wie gewohnt können Fehler mit IsError erkannt und mit IfError und App.OnError ersetzt bzw. unterdrückt werden. Weitere Informationen finden Sie unter Fehlerbehandlung.
  • Nach dem Vorgang gibt die Funktion Errors auch die Fehler für vorherige Vorgänge zurück. Dies kann nützlich sein, um die Fehlermeldung auf einem Formularbildschirm anzuzeigen, ohne den Fehler in einer Zustandsvariablen erfassen zu müssen.

Einige Fehler können Sie im Vorfeld vermeiden, wenn Sie die Funktionen Validate und DataSourceInfo verwenden. Weitere Informationen dazu, wie Sie mit Fehler umgehen oder sie vermeiden können, finden Sie unter Working with data sources (Arbeiten mit Datenquellen).

Beschreibung

Die Errors-Funktion gibt eine Tabelle von Fehlern mit den folgenden Spalten zurück:

  • Datensatz. Der Datensatz in der Datenquelle, die den Fehler enthält. Wenn der Fehler während der Erstellung eines Datensatzes aufgetreten ist, hat diese Spalte den Wert blank.
  • Spalte. Die Spalte, die den Fehler verursacht hat, wenn der Fehler auf eine einzelne Spalte zurückverfolgt werden kann. Andernfalls hat die Spalte den Wert leer.
  • Meldung. Eine Beschreibung des Fehlers. Diese Fehlerzeichenfolge kann für den Endbenutzer angezeigt werden. 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.
  • Fehler. Ein Fehlercode, der in Formeln verwendet werden kann, um den Fehler zu beheben:
ErrorKind Beschreibung
ErrorKind.Conflict Am selben Datensatz wurde eine andere Änderung vorgenommen, die zu einem Änderungskonflikt geführt hat. Verwenden Sie die Refresh-Funktion, um den Datensatz zu laden, und wiederholen Sie die Änderung.
ErrorKind.ConstraintViolation Mindestens eine Einschränkung wurde verletzt.
ErrorKind.CreatePermission Es wurde versucht, einen Datensatz zu erstellen, und der aktuelle Benutzer verfügt nicht über die Berechtigung zum Erstellen von Datensätzen.
ErrorKind.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.
ErrorKind.EditPermission Es wurde versucht, einen Datensatz zu bearbeiten, und der aktuelle Benutzer verfügt nicht über die Berechtigung zum Bearbeiten von Datensätzen.
ErrorKind.GeneratedValue Es wurde versucht, eine Spalte zu ändern, die die Datenquelle automatisch generiert.
ErrorKind.MissingRequired Der Wert für eine erforderliche Spalte fehlt im Datensatz.
ErrorKind.None Es liegt kein Fehler vor.
ErrorKind.NotFound Es wurde versucht, einen Datensatz zu bearbeiten oder zu löschen, aber der Datensatz konnte nicht gefunden werden. Ein anderer Benutzer hat den Datensatz möglicherweise geändert.
ErrorKind.ReadOnlyValue Es wurde versucht, eine Spalte zu ändern, die schreibgeschützt ist.
ErrorKind.Sync Von der Datenquelle wurde ein Fehler gemeldet. Überprüfen Sie die Meldungsspalte auf weitere Informationen.
ErrorKind.Unknown Es ist ein Fehler aufgetreten, der jedoch unbekannt ist.
ErrorKind.Validation Es wurde ein allgemeines Validierungsproblem erkannt, das keinem anderen entspricht.

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.

Patch or another data function may return a leer Patch oder eine andere Datenfunktion können einen Wert blank zurückgeben, wenn z.B. ein Datensatz nicht erstellt werden konnte. Sie können den Wert Blank an Errors übergeben, und es werden entsprechende Fehlerinformationen in diesen Fällen zurückgeben. Bei einer späteren Verwendung der Datenfunktionen auf der gleichen Datenquelle werden diese Fehlerinformationen gelöscht.

Wenn keine Fehler vorliegen, ist die Tabelle, die Errors zurückgibt, leer und kann mit der IsEmpty-Funktion getestet werden.

Syntax

Errors( DataSource [, Record ] )

  • DataSource – Erforderlich. Die Datenquelle, für die Fehler zurückgegeben werden sollen.
  • Datensatz - Optional. Ein bestimmter Datensatz, für den Fehler zurückgegeben werden sollen. Wenn Sie dieses Argument nicht angeben, gibt die Funktion für die gesamte Datenquelle Fehler zurück.

Beispiele

Schritt für Schritt

In diesem Beispiel arbeiten wir mit der Datenquelle IceCream:

Icecream.

Über die App lädt ein Benutzer den Schokoladendatensatz in ein Dateneingabeformular und ändert anschließend den Wert für Quantity auf 90. Der Datensatz, mit dem gearbeitet wird, befindet sich in der KontextvariablenEditRecord:

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

Für diese Änderung in der Datenquelle wird die Patch-Funktion verwendet:

  • Patch( IceCream, EditRecord, Gallery.Updates )

wobei Gallery.Updates den Wert { Quantity: 90 } ergibt, da nur die Quantity-Eigenschaft geändert wurde.

Leider hat eine andere Person kurz vor dem Aufrufen der Patch-Funktion den Wert für Quantity für Schokolade auf 80 geändert. Power Apps erkennt dies und verhindert einen Änderungskonflikt. Sie können dies anhand der folgenden Formel überprüfen:

  • IsEmpty( Errors( IceCream, EditRecord ) )

Diese gibt FALSE zurück, da die Errors-Funktion die folgende Tabelle zurückgegeben hat:

Datensatz Spalte Nachricht Fehler
{ Flavor: "Chocolate", Quantity: 100 } leer „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.“) Please reload the record and try again.“ (Laden Sie den Datensatz neu, und versuchen Sie es erneut.) ErrorKind.Conflict

Sie können eine Bezeichnung auf dem Formular platzieren, um dem Benutzer diesen Fehler anzeigen.

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

  • Um die Schaltfläche nur dann anzuzeigen, wenn ein Konflikt aufgetreten ist, legen Sie die Visible-Eigenschaft der Schaltfläche auf diese Formel fest:
    !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:
    ReloadButton.OnSelect = Revert( IceCream, EditRecord )