Errors-funksjonen

Gjelder: Lerretsapper Modelldrevne apper

Gir feilinformasjon om tidligere endringer i en datakilde.

Oversikt

Feil kan skje når en post i en datakilde blir endret. Det er mange mulige årsaker, inkludert nettverksbrudd, utilstrekkelige tillatelser og redigeringskonflikter.

Funksjonene som endrer data i datakilder, som Patch, Collect, Remove, RemoveIf, Update, UpdateIf, and SubmitForm rapporterer feil på to måter:

  • Hver av disse funksjonene returnerer en feilverdi som et resultat av operasjonen. Feil kan registreres med IsError og erstattes eller hindres med IfError og App.OnError som vanlig. Se Feilhåndtering for mer informasjon.
  • Etter operasjonen returnerer Errors-funksjonen også feilene for tidligere operasjoner. Dette kan være nyttig for å vise feilmeldingen på skjemaskjermbildet uten at du trenger å registrere feilen i en tilstandsvariabel.

Du kan unngå feil før de skjer, ved hjelp av Validate- og DataSourceInfo-funksjonene. Du kan se Slik arbeider du med datakilder for flere forslag om hvordan du arbeider med og unngår feil.

Beskrivelse

Errors-funksjonen returnerer en tabell over feil, som inneholder følgende kolonner:

  • Oppføring. Posten i datakilden som hadde feilen. Denne kolonnen er tom hvis feilen oppstod under oppretting av en post.
  • Kolonne. Kolonnen som forårsaket feilen, hvis feilen kan tilskrives en enkelt kolonne. Hvis ikke vil denne være tom.
  • Melding. En beskrivelse av feilen. Denne feilstrengen kan vises for sluttbrukeren. Vær oppmerksom på at denne meldingen kan genereres av datakilden, at den kan være lang og inneholde rå kolonnenavn som kanskje ikke gir mening for brukeren.
  • Feil. En feilkode som kan brukes i formler for å bidra til å løse feilen:
ErrorKind Beskrivelse
ErrorKind.Conflict En annen endring ble utført på samme post, noe som resulterte i en endringskonflikt. Kjør Refresh-funksjonen for å laste inn posten på nytt, og prøv endringen på nytt.
ErrorKind.ConstraintViolation En eller flere begrensninger ble brutt.
ErrorKind.CreatePermission Det ble gjort et forsøk på å opprette en post, og den gjeldende brukeren har ikke tillatelse til å opprette poster.
ErrorKind.DeletePermission Det ble gjort et forsøk på å slette en post, og den gjeldende brukeren har ikke tillatelse til å slette poster.
ErrorKind.EditPermission Det ble gjort et forsøk på å redigere en post, og den gjeldende brukeren har ikke tillatelse til å redigere poster.
ErrorKind.GeneratedValue Det ble gjort et forsøk på å endre en kolonne som datakilden genererer automatisk.
ErrorKind.MissingRequired Verdien for en nødvendig kolonne mangler fra posten.
ErrorKind.None Finner ingen feil.
ErrorKind.NotFound Det ble gjort et forsøk på å redigere eller slette en post, men posten ble ikke funnet. En annen bruker kan ha endret posten.
ErrorKind.ReadOnlyValue Det ble gjort et forsøk på å endre en kolonne som er skrivebeskyttet.
ErrorKind.Sync En feil ble rapportert av datakilden. Kontroller meldingskolonnen for mer informasjon.
ErrorKind.Unknown Det oppstod en feil, men av en ukjent type.
ErrorKind.Validation Det ble oppdaget et generelt problem med validering, som ikke passet med en av de andre typene.

Feil kan returneres for hele datakilden eller for en valgt rad, ved å gi Post-argumentet til funksjonen.

Patch, eller en annen datafunksjon, kan returnere en tom verdi, hvis for eksempel en post ikke kan opprettes. Du kan sende tom til Errors, og det vil returneres aktuell feilinformasjon i disse tilfellene. Etterfølgende bruk av datafunksjoner på den samme datakilden, vil fjerne denne feilinformasjonen.

Tabellen som Errors returnerer, er tom hvis det ikke er noen feil, og den kan testes med IsEmpty-funksjonen.

Syntaks

Errors( DataSource [, Record ] )

  • DataSource – obligatorisk. Datakilden som du ønsker å returnere feil til.
  • Record – valgfritt. En bestemt post som du vil returnere feil til. Funksjonen returnerer feil for hele datakilden hvis du ikke angir dette argumentet.

Eksempler

Trinn for trinn

I dette eksemplet skal vi arbeide med datakilden IceCream:

Iskrem.

En bruker laster inn sjokolade-posten via appen til et skjema for dataregistrering og endrer verdien for Antall til 90. Posten som skal arbeides med, er plassert i kontekstvariabelenEditRecord:

  • UpdateContext( { EditRecord: LookUp( IceCream, Flavor = "Chocolate" ) } )

Patch-funksjonen blir brukt for å gjøre denne endringen i datakilden:

  • Patch( IceCream, EditRecord, Gallery.Updates )

der Gallery.Updates evalueres til { Quantity: 90 }, fordi bare Quantity-egenskapen har blitt endret.

Uheldigvis ble Quantity for Chocolate endret av noen andre til 80 like før Patch-funksjonen ble startet. Power Apps vil oppdage dette og ikke tillate at den motstridende endringen skal oppstå. Du kan se etter denne situasjonen med formelen:

  • IsEmpty( Errors( IceCream, EditRecord ) )

som returnerer usann, fordi Errors-funksjonen returnerte følgende tabell:

Oppføring Kolonne Melding Feil
{ Flavor: "Chocolate", Quantity: 100 } tom «En annen bruker har endret posten som du prøver å endre. Last inn posten på nytt og prøv igjen.» ErrorKind.Conflict

Du kan plassere en etikett i skjemaet for å vise denne feilen til brukeren.

  • Hvis du vil vise feilen, kan du angi etikettens Text-egenskap til denne formelen:
    Label.Text = First(Errors( IceCream, EditRecord )).Message

Du kan også legge til en Last inn på nytt-knapp på skjemaet, slik at brukeren effektivt kan løse konflikten.

  • Hvis du vil vise knappen bare når en konflikt har oppstått, kan du angi knappens Visible-egenskap til denne formelen:
    !IsEmpty( Lookup( Errors( IceCream, EditRecord ), Error = ErrorKind.Conflict ) )
  • For å gå tilbake til endringen der brukeren velger knappen, kan du angi OnSelect-egenskapen til denne formelen:
    ReloadButton.OnSelect = Revert( IceCream, EditRecord )