Funktionen Errors
Gælder for: Lærredapps Modelbaserede apps
Indeholder oplysninger om fejl i forbindelse med tidligere ændringer af en datakilde.
Oversigt
Fejl kan opstå, når en post i en datakilde ændres. Der kan være mange årsager, herunder netværksafbrydelser, utilstrækkelige tilladelser og redigeringskonflikter.
De funktioner, der ændrer dataene i datakilder som f.eks. rapportfejl af typerne Patch, Collect, Remove, RemoveIf, Update, UpdateIf og SubmitForm på to måder:
- Hver af disse funktioner returnerer en fejlværdi som resultat af handlingen. Der kan registreres fejl ved hjælp af IsError, og de kan erstattes eller undertrykkes med IfError og App.OnError som normalt. Du kan finde flere oplysninger under Fejlhåndtering.
- Efter handlingen returnerer funktionen Fejl også fejlene for tidligere handlinger. Det kan være praktisk, hvis du vil have vist fejlmeddelelsen på et formularskærmbillede, uden at du behøver at registrere fejlen i en tilstandsvariabel.
Du kan undgå nogle fejl, inden de opstår, ved at bruge funktionerne Validate og DataSourceInfo. Du kan få flere forslag til, hvordan du arbejder med og undgår fejl, i Arbejde med datakilder.
Beskrivelse
Funktionen Errors returnerer en tabel med fejl, der indeholder følgende kolonner:
- Rekord. Posten i den datakilde, hvor fejlen var. Hvis fejlen opstod under oprettelsen af en post, er denne kolonne tom.
- Kolonne. Den kolonne, der forårsagede fejlen, hvis fejlen kan tilskrives en enkelt kolonne. Hvis ikke, er den tom.
- Budskab. En beskrivelse af fejlen. Slutbrugeren kan få vist denne fejlstreng. Vær opmærksom på, at datakilden kan generere denne meddelelse, og at den kan være lang og indeholde rå kolonnenavne, som ikke giver mening for brugeren.
- Fejl. En fejlkode, der kan bruges i formler til at hjælpe med at løse fejlen:
ErrorKind | Beskrivelse |
---|---|
ErrorKind.Conflict | Der blev udført en anden ændring af den samme post, hvilket resulterede i en ændringskonflikt. Brug funktionen Refresh til at genindlæse posten, og prøv at foretage ændringen igen. |
ErrorKind.ConstraintViolation | En eller flere begrænsninger er blevet overtrådt. |
ErrorKind.CreatePermission | Det blev forsøgt at oprette en post, og den aktuelle bruger har ikke tilladelse til at oprette poster. |
ErrorKind.DeletePermission | Det blev forsøgt at slette en post, og den aktuelle bruger har ikke tilladelse til at slette poster. |
ErrorKind.EditPermission | Det blev forsøgt at redigere en post, og den aktuelle bruger har ikke tilladelse til at redigere poster. |
ErrorKind.GeneratedValue | Det blev forsøgt at ændre en kolonne, som datakilden har oprettet automatisk. |
ErrorKind.MissingRequired | Værdien for en påkrævet kolonne mangler i posten. |
ErrorKind.None | Der er ingen fejl. |
ErrorKind.NotFound | Det blev forsøgt at redigere eller slette en post, men posten blev ikke fundet. En anden bruger har muligvis ændret posten. |
ErrorKind.ReadOnlyValue | Det blev forsøgt at ændre en kolonne, der er skrivebeskyttet. |
ErrorKind.Sync | Datakilden rapporterede en fejl. Se flere oplysninger i kolonnen Meddelelse. |
ErrorKind.Unknown | Der opstod en fejl, men af en ukendt type. |
ErrorKind.Validation | Der blev registreret et generelt valideringsproblem, som ikke passede sammen med nogen af de andre former. |
Fejl kan returneres for hele datakilden, eller kun for en markeret række ved at angive argumentet Record i funktionen.
Patch eller en anden datafunktion kan returnere en tom værdi, hvis der f.eks. ikke kunne oprettes en post. Du kan sende tom til Errors, så returneres relevante oplysninger om fejlene i disse tilfælde. Efterfølgende brug af datafunktionerne på den samme datakilde fjerner oplysningerne om disse fejl.
Hvis der ikke er nogen fejl, er den tabel, som returneres vha. Errors, empty og kan undersøges med funktionen IsEmpty.
Syntaks
Fejl( Datakilde [; Record ] )
- DataSource – Påkrævet. Den datakilde, du vil returnere fejl for.
- Optag – Valgfrit. Den bestemte post, du vil returnere fejl for. Hvis du ikke angiver dette argument, returnerer funktionen fejl for hele datakilden.
Eksempler
Trin for trin
I dette eksempel arbejder vi med datakilden IceCream:
Via appen indlæser en bruger posten Chocolate i en formular til indtastning af data og ændrer derefter værdien af Quantity til 90. Den post, der arbejdes med, er placeret i kontekstvariablenEditRecord:
- UpdateContext( { EditRecord: LookUp( IceCream, Flavor = "Chocolate" ) } )
For at foretage denne ændring i datakilden bruges funktionen Patch:
- Patch( IceCream, EditRecord, Gallery.Updates )
hvor Gallery.Updates evalueres til { Quantity: 90 }, da det kun er egenskaben Quantity, der er blevet ændret.
Lige før funktionen Patch blev aktiveret, ændrede en anden bruger desværre Quantity for Chocolate til 80. Power Apps registrerer det og tillader ikke, at den modstridende ændring træder i kraft. Du kan søge efter denne situation med formlen:
- IsEmpty( Fejl( IceCream, EditRecord ) )
hvilket returnerer falsk, da funktionen Errors returnerede følgende tabel:
Post | Søjle | Meddelelse | Fejl |
---|---|---|---|
{ Flavor: "Chocolate", Quantity: 100 } | hvid | "En anden bruger har ændret posten, som du forsøger at ændre. Indlæs posten igen, og prøv igen". | ErrorKind.Conflict |
Du kan placere en etiket på formularen for at vise fejlen til brugeren.
- Hvis etiketten skal vises, skal du indstille etikettens Text-egenskab til denne formel:
Label.Text = First(Errors( IceCream, EditRecord )). Budskab
Du kan også føje en Reload-knap til formularen, så brugeren kan løse konflikten effektivt.
- Hvis knappen kun skal vises, når der opstår en konflikt, skal du indstille knappens Visible-egenskab til denne formel:
! IsEmpty( Lookup( Errors( IceCream, EditRecord ), Error = ErrorKind.Conflict) ) - Hvis du vil gendanne ændringerne, som bruger foretager ved at vælge knappen, skal du indstille dens OnSelect-egenskab til denne formel:
ReloadButton.OnSelect = genindlæse( IceCream, EditRecord )