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:

  • Post. 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.
  • Meddelelse. 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

Errors( DataSource [, Record ] )

  • DataSource – påkrævet. Den datakilde, du vil returnere fejl for.
  • Record – valgfri. 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:

Ice Cream.

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, Smag = "Chokolade" ) } )

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( Errors( IceCream, EditRecord ) )

hvilket returnerer falsk, da funktionen Errors returnerede følgende tabel:

Post Søjle Meddelelse Fejl
{ Flavor: "Chocolate", Quantity: 100 } blank "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 )).Message

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 = Revert( IceCream, EditRecord )