Errors-funktionen
Gäller för: Arbetsyteappar Modellbaserade appar
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:
- Rekord. Posten i datakällan som innehöll felet. Om felet uppstod under genereringen av en post, kommer den här kolumnen att vara blank.
- Spalt. 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 tomt värde om det till exempel inte gick att skapa en post. 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
Fel ( DataSource [, Post ] )
- DataSource – Obligatoriskt. Datakällan som du vill returnera fel för.
- Spela in – 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:
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 = "Choklad" ) } )
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 ( Fel ( 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 = Första (Fel ( IceCream, EditRecord )). Meddelande
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 = Återställ( IceCream, EditRecord )