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:
- Aufzeichnen. 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.
- Nachricht. 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.
Pflaster oder eine andere Datenfunktion gibt einen leer Wert, wenn beispielsweise 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
Fehler ( Datenquelle [, Aufzeichnen ] )
- DataSource : Erforderlich. Die Datenquelle, für die Fehler zurückgegeben werden sollen.
- Aufzeichnen – 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:
Ü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:
- Kontext aktualisieren( { Datensatz bearbeiten: Nachschlagen( Eiscreme, Geschmack = "Schokolade" ) } )
Für diese Änderung in der Datenquelle wird die Patch-Funktion verwendet:
- Patch( IceCream, Datensatz bearbeiten, Galerie.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( Fehler( 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 = Erste(Fehler( IceCream, EditRecord )).Nachricht
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( Fehler( IceCream, EditRecord ), Fehler = Fehlerart.Konflikt ) ) - 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 = wiederherstellen( IceCream, Datensatz bearbeiten )