Del via


funktionen Errors

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:

Ice Cream.

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 )