Bemærk
Adgang til denne side kræver godkendelse. Du kan prøve at logge på eller ændre mapper.
Adgang til denne side kræver godkendelse. Du kan prøve at ændre mapper.
Gælder for: Lærredsapps
Modeldrevne apps
Indeholder oplysninger om fejl i forbindelse med tidligere ændringer af en datakilde.
Oversigt
Errors kan ske, 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. Errors kan registreres med IsError og erstattes eller undertrykkes med IfError og App.OnError som normalt. Du kan finde flere oplysninger under Fejlhåndtering.
- Efter handlingen returnerer funktionen Errors også fejlene for tidligere handlinger. Det kan være nyttigt til at vise fejlmeddelelsen på en formularskærm uden at skulle 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. Denne meddelelse kan genereres af datakilden og kan være lang og indeholde rå kolonnenavne, der muligvis ikke har nogen betydning 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 til en af de andre typer. |
Errors kan returneres for hele datakilden eller kun for en markeret række ved at angive argumentet Post til funktionen.
Patch eller en anden datafunktion kan returnere en tom værdi, hvis der f.eks. ikke kunne oprettes en post. Du kan overføre blank til Errors, og den returnerer relevante fejloplysninger i disse tilfælde. Efterfølgende brug af datafunktioner i den samme datakilde rydder disse fejloplysninger.
Hvis der ikke er nogen fejl, vil den tabel, der returneres, Errors være tom og kan testes med funktionen IsEmpty .
Syntaks
Errors( DataSource [, 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 , der er en datakilde, som Power Apps vil forsøge at registrere konflikter for:
Notat
Power Apps forsøger ikke at registrere konflikter for ændringer i Dataverse-tabeller.
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 )
Where 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. Da dette er en understøttet datakilde til konfliktregistrering, registrerer Power Apps dette og tillader ikke, at den modstridende ændring finder sted. Du kan søge efter denne situation med formlen:
- IsEmpty( Errors( IceCream, EditRecord ) )
Hvilket returnerer false, fordi 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. Genindlæs posten, 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 ændringen, som brugeren vælger knappen, skal du angive dens egenskab OnSelect til denne formel:
ReloadButton.OnSelect = genindlæse( IceCream, EditRecord )