Delen via


Errors functie

Van toepassing op: Modelgestuurde apps voor canvas-apps

Biedt foutinformatie voor eerdere wijzigingen in een gegevensbron.

Samenzicht

Errors kan optreden wanneer een record van een gegevensbron wordt gewijzigd. Er zijn veel oorzaken mogelijk, zoals netwerkstoringen, ontoereikende machtigingen en bewerkingsconflicten.

De functies die gegevens in gegevensbronnen wijzigen, zoals Patch, Collect, Remove, RemoveIf, Update, UpdateIf en SubmitForm rapporteren fouten op twee manieren:

  • Elk van deze functies retourneert een foutwaarde als resultaat van de bewerking. Errors kan worden gedetecteerd met IsError en zoals gebruikelijk worden vervangen of onderdrukt door IfError en App.OnError . Zie Foutafhandeling voor meer informatie.
  • Na de bewerking retourneert de Errors functie ook de fouten voor eerdere bewerkingen. Het kan handig zijn voor het weergeven van het foutbericht op een formulierscherm zonder dat u de fout in een statusvariabele hoeft vast te leggen.

U kunt bepaalde fouten voorkomen voordat ze plaatsvinden met behulp van de functies Validate en DataSourceInfo. Zie Werken met gegevensbronnen voor meer suggesties voor het werken met en voorkomen van fouten.

Beschrijving

De Errors functie retourneert een tabel met fouten die de volgende kolommen bevat:

  • Dossier. De record in de gegevensbron waarin de fout optrad. Als de fout is opgetreden tijdens het maken van een record, is deze kolom leeg.
  • Kolom. De kolom die de fout veroorzaakt heeft, indien de fout kan worden toegeschreven aan één kolom. Zo niet, dan is het leeg.
  • Bericht. Een beschrijving van de fout. Deze fouttekenreeks kan worden weergegeven voor de eindgebruiker. Dit bericht kan worden gegenereerd door de gegevensbron en kan lang zijn en onbewerkte kolomnamen bevatten die mogelijk geen betekenis hebben voor de gebruiker.
  • Fout. Een foutcode die kan worden gebruikt in formules om te helpen bij het oplossen van de fout:
ErrorKind Beschrijving
ErrorKind.Conflict Er is nog een wijziging gemaakt in dezelfde record, wat leidt tot een conflict. Gebruik de functie Refresh om de record opnieuw te laden en probeer de wijziging vervolgens opnieuw.
ErrorKind.ConstraintViolation Er zijn een of meer beperkingen overtreden.
ErrorKind.CreatePermission Er is een poging gedaan om een record te maken en de huidige gebruiker is niet gemachtigd om records te maken.
ErrorKind.DeletePermission Er is een poging gedaan om een record te verwijderen en de huidige gebruiker is niet gemachtigd om records te verwijderen.
ErrorKind.EditPermission Er is een poging gedaan om een record te bewerken en de huidige gebruiker is niet gemachtigd om records te bewerken.
ErrorKind.GeneratedValue Er is een poging gedaan om een kolom te wijzigen die de gegevensbron automatisch genereert.
ErrorKind.MissingRequired De waarde voor een vereiste kolom ontbreekt in de record.
ErrorKind.None Er is geen fout.
ErrorKind.NotFound Er is een poging gedaan om een record te bewerken of te verwijderen, maar de record kan niet worden gevonden. De record is mogelijk door een andere gebruiker gewijzigd.
ErrorKind.ReadOnlyValue Er is een poging gedaan om een kolom te wijzigen die alleen-lezen is.
ErrorKind.Sync Er is een fout gerapporteerd door de gegevensbron. Controleer de kolom Bericht voor meer informatie.
ErrorKind.Unknown Er is een onbekend type fout opgetreden.
ErrorKind.Validation Er is een algemeen validatieprobleem gedetecteerd dat niet past bij een van de andere soorten.

Errors kan worden geretourneerd voor de hele gegevensbron of alleen voor een geselecteerde rij door het argument Record op te geven voor de functie.

Lapje of een andere datafunctie kan een leeg waarde als er bijvoorbeeld geen record kon worden aangemaakt. U kunt een lege waarde doorgeven aan Errorsen in deze gevallen worden de juiste foutgegevens geretourneerd. Bij volgend gebruik van gegevensfuncties in dezelfde gegevensbron wordt deze foutinformatie gewist.

Als er geen fouten zijn, is de tabel die Errors retourneert leeg en kan worden getest met de functie IsEmpty .

Syntaxis

Errors( DataSource [, Record ] )

  • DataSource - Vereist. De gegevensbron waarvoor u fouten wilt ophalen.
  • Dossier – Optioneel. Een specifieke record waarvoor u fouten wilt ophalen. Als u dit argument niet opgeeft, retourneert de functie fouten voor de gehele gegevensbron.

Voorbeelden

Stapsgewijs

In dit voorbeeld werken we met de IJsgegevensbron , een gegevensbron waarvoor Power Apps conflicten probeert te detecteren:

IceCream.

Opmerking

Power Apps probeert geen conflicten te detecteren voor wijzigingen in Dataverse-tabellen.

Via de app laadt een gebruiker de record Chocolate in een formulier voor gegevensinvoer en wijzigt vervolgens de waarde van Quantity in 90. De record waarmee moet worden gewerkt, is geplaatst in de contextvariabeleEditRecord:

  • UpdateContext( { BewerkenRecord: LookUp(IJs, Smaak = "Chocolade") } )

Gebruik de functie Patch om deze wijziging door te voeren in de gegevensbron:

  • Patch(Ijs, BewerkenRecord, Galerij.Updates)

Waarbij Gallery.Updatesresulteert in { Quantity: 90 }, omdat alleen de eigenschap Quantity is gewijzigd.

Helaas heeft iemand anders net voordat de functie Patch werd aangeroepen de Quantity voor Chocolate gewijzigd in 80. Omdat dit een ondersteunde gegevensbron is voor conflictdetectie, detecteert Power Apps dit en staat de conflicterende wijziging niet toe. U kunt hierop controleren met de volgende formule:

  • IsEmpty( Errors( IJs, Record Bewerken ) )

Dit retourneert onwaar, omdat de Errors functie de volgende tabel heeft geretourneerd:

Record Kolom Bericht Fout
{ Smaak: "Chocolade", Hoeveelheid: 100 } leeg "Een andere gebruiker heeft de record gewijzigd die u probeert te wijzigen. Laad de record opnieuw en probeer het opnieuw.' ErrorKind.Conflict

U kunt een label op het formulier plaatsen om de gebruiker deze fout te tonen.

  • Om de fout te tonen, stelt u de eigenschap Text van het label in op deze formule:
    Label.Text = First(Errors( IJs, RecordBewerken)). Bericht

U kunt ook een knop Opnieuw laden aan het formulier toevoegen, zodat de gebruiker efficiënt het conflict kan oplossen.

  • Als u wilt dat de knop alleen wordt weergegeven wanneer er een conflict is opgetreden, stelt u de eigenschap Visible in op deze formule:
    ! IsEmpty( Lookup( Errors( IJs, Record Bewerken ), Error = ErrorKind.Conflict ) )
  • Als u de wijziging wilt herstellen, die de gebruiker de knop selecteert, stelt u de eigenschap OnSelect in op deze formule:
    ReloadButton.OnSelect = terugkeren( IJs, BewerkRecord )