Deli putem


Funkcija "Greške"

Važi za: Canvas aplikacije Model-driven aplikacije

Pruža informacije o grešci za prethodne promene u izvoru podataka.

Pregled

Greške se mogu dogoditi kada se promeni zapis izvora podataka. Mogući su mnogi uzroci, uključujući prekid mreže, neadekvatne dozvole i neusaglašenosti oko uređivanja.

Funkcije koje menjaju podatke u izvorima podataka, kao što su Patch, Collect, Remove, RemoveIf, Update, UpdateIf i SubmitForm prijavljuju greške na dva načina:

  • Svaka od ovih funkcija će vratiti grešku kao rezultat operacije. Greške se mogu otkriti pomoću funkcije IsError i zameniti ili potisnuti funkcijom IfError i App.OnError, kao i obično. Za više informacija, pogledajte članak Rukovanje greškama.
  • Nakon operacije, funkcija Errors će takođe vratiti greške za prethodne operacije. Ovo može biti korisno za prikazivanje poruke o grešci na ekranu obrasca bez potrebe da hvatate grešku u promenljivoj statusa.

Neke greške možete izbeći pre nego što se one pojave korišćenjem funkcija Validate i DataSourceInfo. Pogledajte rad sa izvorima podataka za više predloga o tome kako raditi i izbegavati greške.

Opis

Funkcija Errors vraća tabelu grešaka koja sadrži sledeće kolone:

  • Zapis. Zapis u izvoru podataka koji je imao grešku. Ako se greška dogodila tokom kreiranja zapisa, ova kolona će biti prazna.
  • Kolona. Kolona koja je izazvala grešku, ako se greška može pripisati jednoj koloni. Ako ne, to će biti prazno.
  • Poruka. Opis greške. Ova niska grešaka se može prikazati krajnjem korisniku. Imajte na umu da ovu poruku može generisati izvor podataka, da može biti dugačka i da može sadržati sirove nazive kolona, koji za korisnika možda nemaju nikakvo značenje.
  • Greška. Kôd greške koji se može koristiti u formulama za rešavanje greške:
ErrorKind Opis
ErrorKind.Conflict Nastala je druga promena za isti zapis, što je dovelo do neusaglašenosti pri promeni. Koristite funkciju Refresh da biste ponovo učitali zapis, pa ponovo pokušajte da obavite promenu.
ErrorKind.ConstraintViolation Jedno ili više ograničenja je prekršeno.
ErrorKind.CreatePermission Načinjen je pokušaj kreiranja zapisa, a trenutni korisnik nema dozvolu za kreiranje zapisa.
ErrorKind.DeletePermission Načinjen je pokušaj brisanja zapisa, a trenutni korisnik nema dozvolu za brisanje zapisa.
ErrorKind.EditPermission Načinjen je pokušaj uređivanja zapisa, a trenutni korisnik nema dozvolu za uređivanje zapisa.
ErrorKind.GeneratedValue Načinjen je pokušaj da se promeni kolona koju izvor podataka automatski generiše.
ErrorKind.MissingRequired Vrednost za potrebnu kolonu nedostaje iz zapisa.
ErrorKind.None Nema greške.
ErrorKind.NotFound Načinjen je pokušaj uređivanja ili brisanja zapisa, ali zapis nije pronađen. Drugi korisnik je možda promenio zapis.
ErrorKind.ReadOnlyValue Načinjen je pokušaj promene kolone koja je samo za čitanje.
ErrorKind.Sync Greška je prijavljena od strane izvora podataka. Proverite kolonu Poruka za više informacija.
ErrorKind.Unknown Došlo je do greške, ali nepoznate vrste.
ErrorKind.Validation Otkriven je opšti problem validacije koji nije odgovarao nijednoj drugoj vrsti.

Greške se mogu vratiti za čitav izvor podataka ili samo za odabrani red pružanjem argumenta funkciji Record.

Patch ili neka druga funkcija podataka može vratiti praznu vrednost ako, na primer, nije moguće kreirati zapis. Možete da prosledite prazno u Errors, a ona će vratiti odgovarajuće informacije o greškama u tim slučajevima. Naredna upotreba funkcije podataka u istom izvoru podataka očistiće ove informacije o grešci.

Ako nema grešaka, tabela koju vraća funkcija Errors biće empty i može se testirati pomoću funkcije IsEmpty.

Sintaksa

Errors( DataSource [, Zapis ] )

  • DataSource – Obavezno. Izvor podataka za koji želite da vraća greške.
  • Record – Opcionalno. Određeni zapis za koji želite da vraća greške. Ako ne navedete ovaj argument, funkcija vraća greške za ceo izvor podataka.

Primeri

Korak po korak

Za ovaj primer, radićemo sa izvorom podataka IceCream:

Sladoled.

Kroz aplikaciju korisnik učitava zapis Čokolada u obrascu za unos podataka, a zatim menja vrednost Količina na 90. Zapis sa kojim se radi smešten je u promenljivu konteksta EditRecord:

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

Da biste izvršili ovu promenu u izvoru podataka, funkcija Patch se koristi:

  • Patch( IceCream, EditRecord, Gallery.Updates )

gde se Gallery.Updates izračunava na { Quantity: 90 }, pošto je izmenjeno samo svojstvo Quantity.

Na žalost, malo pre nego što je funkcija Patch pozvana, neko drugi menja svojstvo Quantity za čokoladu na 80. Power Apps će otkriti to i neće dozvoliti da se dogodi neusaglašena promena. Možete proveriti ovu situaciju pomoću formule:

  • IsEmpty( Errors( IceCream, EditRecord ) )

koja vraća netačno, zato što je funkcija Errors vratila sledeću tabelu:

Zapis Kolona Poruka Greška
{ Flavor: "Chocolate", Quantity: 100 } prazno „Drugi korisnik je izmenio zapis koji pokušavate da izmenite. Ponovo učitajte zapis, a zatim pokušajte ponovo.“ ErrorKind.Conflict

Na obrazac možete staviti oznaku koja će korisniku pokazati ovu grešku.

  • Da biste prikazali grešku, podesite svojstvo Text oznake prema ovoj formuli:
    Label.Text = First(Errors( IceCream, EditRecord )).Message

Takođe možete da dodate dugme Učitaj ponovo na obrazac, tako da korisnik može efikasno rešiti neusaglašenost.

  • Da biste dugme prikazali samo kada je došlo do neusaglašenosti, podesite svojstvo Visible dugmeta prema ovoj formuli:
    !IsEmpty( Lookup( Errors( IceCream, EditRecord ), Error = ErrorKind.Conflict ) )
  • Da biste vratili promenu koju korisnik izabere kada pritisne dugme, podesite njegovo svojstvo OnSelect prema ovoj formuli:
    ReloadButton.OnSelect = Revert( IceCream, EditRecord )