Errors-funktionen

Gäller appar: Arbetsyteappar Modellbaserade program

Ger information om fel för tidigare ändringar till en datakälla.

Översikt

Fel kan inträffa när en post till en datakälla har ändrats. Många orsaker är möjliga, inklusive nätverksproblem, otillräckliga behörigheter och redigeringskonflikter.

Funktionerna som ändrar data i datakällor, till exempel Korrigering, Samla in, Ta bort, Ta bort Om, Uppdatera, Uppdatera Om samt Skicka in formulär rapporterar fel på två olika sätt:

  • Var och en av dessa funktioner returnerar ett felvärde som ett resultat av åtgärden. Fel kan identifieras med IsError och ersättas eller IfError och Program.OnError. Se Felhantering för mer information.
  • När åtgärden är över returnerar funktionen Fel även felen för tidigare åtgärder. Detta kan vara användbart om du vill visa felmeddelandet på formulärskärmen utan att behöva registrera felet i en tillståndsvariabel.

Du kan undvika fel innan de inträffar genom att använda funktionerna Validate och DataSourceInfo. Se arbeta med datakällor för fler förslag på hur du arbetar med och undviker fel.

Beskrivning

Funktionen Errors returnerar en tabell med fel som innehåller följande kolumner:

  • Post. Posten i datakällan som innehöll felet. Om felet uppstod under genereringen av en post, kommer den här kolumnen att vara blank.
  • Kolumn. Kolumnen som orsakade felet, om felet kan bero på en enskild kolumn. Om inte, kommer denna att vara blank.
  • Meddelande. Beskrivning av felet. Den här felsträngen kan visas för slutanvändaren. 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.
  • Fel. En felkod som kan användas i formler för att lösa problemet:
ErrorKind Beskrivning
ErrorKind.Conflict En annan ändring gjordes för samma post, vilket resulterade i en ändringskonflikt. Använd funktionen Refresh för att läsa in posten på nytt och prova att göra ändringen igen.
ErrorKind.ConstraintViolation Ett eller flera villkor har överskridits.
ErrorKind.CreatePermission Ett försök gjordes att skapa en post och den aktuella användaren har inte behörighet att skapa poster.
ErrorKind.DeletePermission Ett försök gjordes att ta bort en post, och den aktuella användaren har inte behörighet att ta bort poster.
ErrorKind.EditPermission Ett försök gjordes att redigera en post och den aktuella användaren har inte behörighet att redigera poster.
ErrorKind.GeneratedValue Ett försök gjordes att ändra en kolumn som datakällan genererade automatiskt.
ErrorKind.MissingRequired Värdet för en obligatorisk kolumn saknas från posten.
ErrorKind.None Det finns inga fel.
ErrorKind.NotFound Ett försök gjordes att redigera eller ta bort en post, men det gick inte att hitta posten. En annan användare kan ha ändrat posten.
ErrorKind.ReadOnlyValue Ett försök gjordes att ändra en kolumn som är skrivskyddad.
ErrorKind.Sync Ett fel rapporterades av datakällan. Kontrollera meddelandekolumnen för mer information.
ErrorKind.Unknown Det uppstod ett fel, men av ett okänt slag.
ErrorKind.Validation Ett allmänt verifieringsproblem upptäcktes, som inte passade in på någon annan sort.

Fel kan returneras för hela datakällan eller bara för vald rad genom att ange argumentet Record till funktionen.

Patch eller en annan datafunktion kan returnera ett blank värde om till exempel en post inte kunde skapas. Du kan överföra blank till Errors, och det ger i dessa fall information om fel. Att sedan använda datafunktionerna för samma datakälla kommer att rensa felinformationen.

Om det inte finns några fel, kommer tabellen som Errors returnerar att vara tom och kan testas med funktionen IsEmpty.

Syntax

Errors( DataSource [, Record ] )

  • DataSource – Krävs. Datakällan som du vill returnera fel för.
  • Record – valfritt. En viss post som du vill returnera fel för. Om du inte anger argumentet returnerar funktionen fel för hela datakällan.

Exempel

Steg-för-steg

I det här exemplet arbetar vi med datakällan IceCream:

Ice Cream.

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. Posten som ska bearbetas placeras i kontextvariabeln EditRecord:

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

För att göra ändringen i datakällan, används funktionen Patch:

  • Patch( IceCream, EditRecord, Gallery.Updates )

där Gallery.Updates utvärderas till { Quantity: 90 }, eftersom endast egenskapen Quantity har ändrats.

Precis innan funktionen Patch anropades, ändrade någon annan Quantity för Chocolate till 80. Power Apps identifierar detta och tillåter inte ändringen som står i konflikt. Du kan kontrollera efter här situationen med formeln:

  • IsEmpty( Errors( IceCream, EditRecord ) )

vilken returnerar false, eftersom funktionen Errors returnerade följande tabell:

Post Kolumn Meddelande Fel
{ Flavor: "Chocolate", Quantity: 100 } blank "En annan användare har ändrat den post som du försöker ändra. Återställ posten och försök igen." ErrorKind.Conflict

Du kan placera en etikett i formuläret för att visa det här felet för användaren.

  • För att visa felet, ange etikettens egenskap för Text till den här formeln:
    Label.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.

  • Om du vill visa knappen bara när en konflikt uppstår, ange knprogrammets egenskap Visible till den här formeln:
    !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:
    ReloadButton.OnSelect = Revert( IceCream, EditRecord )