Deli z drugimi prek


Funkcija napak

Velja za: Aplikacije Canvas Aplikacije, ki temeljijo na modelu

Zagotavlja informacije o napakah za prejšnje spremembe vira podatkov.

Pregled

Do napak lahko pride, ko je zapis vira podatkov spremenjen. Možnih je veliko vzrokov, vključno z izpadi omrežja, neustreznimi dovoljenji in spori pri urejanju.

Funkcije, ki spreminjajo podatke v virih podatkov, kot so Patch, Collect, Remove, RemoveIf, Update, UpdateIf in SubmitForm, o napakah poročajo na dva načina:

  • Vsaka od teh funkcij bo kot rezultat operacije vrnila vrednost napake. Napake je mogoče zaznati s funkcijo IsError in jih, tako kot ponavadi, nadomestiti ali prekiniti z IfError in App.OnError. Za več informacij glejte Obravnavanje napak.
  • Po operaciji bo funkcija Errors vrnila tudi napake za prejšnje operacije. To je lahko uporabno pri prikazu sporočila o napaki na zaslonu obrazca brez potrebe po zajemu napake v spremenljivki stanja.

Nekatere napake lahko preprečite, preden se zgodijo, s funkcijama Validate in DataSourceInfo. Glejte delo z viri podatkov za več predlogov o tem, kako delati z napakami in jih preprečevati.

Opis

Funkcija Errors vrne tabelo napak, ki vsebuje naslednje stolpce:

  • Zapis. Zapis v viru podatkov, ki je imel napako. Če je do napake prišlo med ustvarjanjem zapisa, bo ta stolpec prazen.
  • Stolpec. Stolpec, ki je povzročil napako, če je napako mogoče pripisati enemu stolpcu. Če ni, bo to prazno.
  • Sporočilo. Opis napake. Ta niz napake je lahko prikazan končnemu uporabniku. Zavedajte se, da lahko vir podatkov ustvari to sporočilo, ki je lahko dolgo in vsebuje neobdelana imena stolpca, ki morda uporabniku ne povedo ničesar.
  • Napaka. Koda napake, ki se lahko uporabi v formulah kot pomoč za odpravljanje težave:
ErrorKind Opis
ErrorKind.Conflict Za isti zapis je bila izvedena druga sprememba, da je nastal spor pri spremembah. Uporabite funkcijo Refresh, da znova naložite zapis in poskusite znova spremeniti.
ErrorKind.ConstraintViolation Ena ali več omejitev je bilo kršenih.
ErrorKind.CreatePermission Prišlo je do poskusa ustvarjanja zapisa in trenutni uporabnik nima dovoljenja za ustvarjanje zapisov.
ErrorKind.DeletePermission Prišlo je do poskusa brisanja zapisa in trenutni uporabnik nima dovoljenja za brisanje zapisov.
ErrorKind.EditPermission Prišlo je do poskusa urejanja zapisa in trenutni uporabnik nima dovoljenja za urejanje zapisov.
ErrorKind.GeneratedValue Prišlo je do poskusa spreminjanja stolpca, ki ga vir podatkov ustvari samodejno.
ErrorKind.MissingRequired Vrednost za obvezen stolpec v zapisu manjka.
ErrorKind.None Ni napake.
ErrorKind.NotFound Prišlo je do poskusa urejanja ali brisanja zapisa, toda zapisa ni bilo mogoče najti. Drug uporabnik je morda spremenil zapis.
ErrorKind.ReadOnlyValue Prišlo je do poskusa spremembe stolpca, ki je samo za branje.
ErrorKind.Sync Vir podatkov je sporočil napako. Preverite stolpec »Sporočila« za več informacij.
ErrorKind.Unknown Prišlo je do napake, toda vrsta je neznana.
ErrorKind.Validation Odkrita je bila težava s splošnim preverjanjem veljavnosti, ki ni ustrezala nobeni od drugih vrst.

Napake so lahko vrnjene za celoten vir podatkov ali samo za izbrano vrstico z zagotovitvijo argumenta Zapis funkciji.

Patch ali druga podatkovna funkcija lahko vrne prazno vrednost, če npr. ni bilo mogoče ustvariti zapisa. Možnost prazno lahko posredujete funkciji Errors, ki bo vrnila primerne informacije o napakah v teh primerih. Poznejša uporaba podatkovnih funkcij v istem viru podatkov bo počistila te informacije o napakah.

Če ni napak, bo tabela, ki jo vrne funkcija Errors, prazna in jo je mogoče preskusiti s funkcijo IsEmpty.

Sintaksa

Errors( DataSource [, Record ] )

  • DataSource – obvezno. Vir podatkov, za katerega želite vrniti napake.
  • Record – izbirno. Določen zapis, za katerega želite vrniti napake. Če ne določite tega argumenta, funkcija vrne napake za celoten vir podatkov.

Primeri

Korak za korakom

V tem primeru bomo delali z virom podatkov IceCream:

Sladoled.

Prek aplikacije uporabnik naloži zapis »Chocolate« v obrazec za vnos podatkov in nato spremeni vrednost za Quantity na 90. Zapis, s katerim se opravi delo, je umeščen v spremenljivko kontekstaEditRecord:

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

Za uveljavitev te spremembe v viru podatkov je uporabljena funkcija Patch:

  • Patch( IceCream, EditRecord, Gallery.Updates )

kjer je Gallery.Updates ovrednoteno na { Quantity: 90 }, ker je bila spremenjena samo lastnost Quantity.

Žal tik pred priklicem funkcije Patch nekdo drug spremeni Quantity za »Chocolate« na 80. Power Apps to zazna in ne dovoli, da bi prišlo do spremembe, ki je v sporu. To situacijo lahko preverite s formulo:

  • IsEmpty( Errors( IceCream, EditRecord ) )

kar vrne false, ker je funkcija Errors vrnila naslednjo tabelo:

Zapis Stolpični grafikon Sporočilo Napaka
{ Flavor: "Chocolate", Quantity: 100 } prazno »Drug uporabnik je spremenil zapis, ki ga poskušate spremeniti. Znova naložite zapis in poskusite znova.« ErrorKind.Conflict

Na obrazec lahko umestite oznako, da prikažete to napako uporabniku.

  • Za prikaz napake nastavite lastnost Besedilo oznake na to formulo:
    Label.Text = First(Errors( IceCream, EditRecord )).Message

V obrazec lahko dodate tudi gumb Znova naloži, tako da lahko uporabnik učinkovito odpravi spor.

  • Za prikaz gumba samo, ko pride do spora, nastavite lastnost Visible gumba na to formulo:
    !IsEmpty( Lookup( Errors( IceCream, EditRecord ), Error = ErrorKind.Conflict ) )
  • Za povrnitev spremembe, ko uporabnik izbere ta gumb, nastavite lastnost OnSelect na to formulo:
    ReloadButton.OnSelect = Revert( IceCream, EditRecord )