Funkcija pogrešaka
Primjenjuje se na sljedeće: Aplikacije radnog područja Aplikacije stvorene prema modelu
Pruža informacije o pogrešci za prethodne promjene izvoru podataka.
Pregled
Pogreške se mogu dogoditi kada se neki zapis izvora podataka promijeni. Mogući su mnogi uzroci, uključujući i prekide mreže, neadekvatne dozvole i konflikte pri uređivanju.
Funkcije koje mijenjaju podatke u izvorima podataka, kao što su Patch, Collect, Remove, RemoveIf, Update, UpdateIf i SubmitForm prijavljuju pogreške na dva načina:
- Svaka od ovih funkcija vratit će vrijednost pogreške kao rezultat operacije. Pogreške se mogu otkriti pomoću funkcije IsError i zamijeniti ili potisnuti funkcijama IfError i App.OnError kao i obično. Dodatne informacije potražite u odjeljku Otklanjanje pogrešaka.
- Nakon operacije, funkcija Errors također će vratiti pogreške za prethodne operacije.. Ovo može biti korisno za prikaz poruke o pogrešci na zaslonu obrasca bez potrebe za bilježenjem pogreške u varijabli stanja.
Neke pogreške možete izbjeći prije nego što se pojave, korištenjem funkcija Validate i DataSourceInfo. Pogledajte rad s izvorima podataka za više prijedloga o tome kako raditi s pogreškama i kako ih izbjeći.
Opis
Funkcija Errors vraća tablicu pogrešaka koja sadrži sljedeće stupce:
- Zapis. Zapis izvora podataka koji je imao pogrešku. Ako se pogreška dogodila tijekom stvaranja zapisa, ovaj stupac imat će vrijednost prazno.
- Stupac. Stupac koji je uzrokovao pogrešku, ako se pogreška može pripisati jednom stupcu. U suprotnom, imat će vrijednost prazno.
- Poruka. Opis pogreške. Ovaj se niz pogreške može prikazati krajnjem korisniku. Imajte na umu da ovu poruku može generirati izvor podataka i da može biti dugačka te će sadržavati sirove nazive stupaca koji korisniku ne moraju značiti ništa.
- Greška. Kôd pogreške koji se može koristiti u formulama za razrješavanje pogreške:
ErrorKind | Opis |
---|---|
ErrorKind.Conflict | Druga je promjena načinjena istom zapisu, što je rezultiralo konfliktom promjene. Upotrijebite funkciju Refresh da biste ponovno učitali zapis i pokušajte ponovno s promjenom. |
ErrorKind.ConstraintViolation | Prekršeno je jedno ili više ograničenja. |
ErrorKind.CreatePermission | Pokušalo se stvoriti neki zapis, a trenutačni korisnik nema dozvolu za stvaranje zapisa. |
ErrorKind.DeletePermission | Pokušalo se izbrisati neki zapis, a trenutačni korisnik nema dozvolu za brisanje zapisa. |
ErrorKind.EditPermission | Pokušalo se uredti neki zapis, a trenutačni korisnik nema dozvolu za uređivanje zapisa. |
ErrorKind.GeneratedValue | Pokušalo se promijeniti stupac koji izvor podataka automatski generira. |
ErrorKind.MissingRequired | Vrijednost za potrebni stupac nedostaje iz zapisa. |
ErrorKind.None | Nema pogreške. |
ErrorKind.NotFound | Pokušalo se urediti ili izbrisati neki zapis, ali zapis nije pronađen. Drugi je korisnik možda promijenio zapis. |
ErrorKind.ReadOnlyValue | Pokušalo se promijeniti stupac koji je samo za čitanje. |
ErrorKind.Sync | Izvor podataka je prijavio pogrešku. Dodatne informacije potražite u stupcu Poruka. |
ErrorKind.Unknown | Došlo je do pogreške, ali nepoznate vrste. |
ErrorKind.Validation | Otkriven je opći problem s provjerom valjanosti koji nije odgovarao nijednoj drugoj vrsti. |
Pogreške se mogu vratiti za cijeli izvor podataka ili samo za odabrani redak unosom argumenta Record te funkcije.
Patch ili neka druga podatkovna funkcija može vratiti praznu vrijednost ako, na primjer, zapis nije moguće stvoriti. Možete proslijediti prazno u funkciju Errors koja će u tim slučajevima vratiti odgovarajuće informacije o pogrešci. Naknadna upotreba funkcija za rad s podatcima na tom izvoru podataka izbrisat će ove podatke o pogrešci.
Ako nema pogrešaka, tablica koju funkcija Errors vrati imat će vrijednost prazno i može se testirati funkcijom IsEmpty.
Sintaksa
Pogreške( Izvor podataka[; Zapis] )
- Izvor podataka– obavezno. Izvor podataka čije pogreške želite vratiti.
- Zapis– Nije obavezno. Određeni zapis čije pogreške želite vratiti. Ako ne navedete ovaj argument, funkcija vraća pogreške za cijeli izvor podataka.
Primjeri
Korak po korak
U ovom primjeru koristit ćemo izvor podataka IceCream:
U ovoj aplikaciji korisnik učitava zapis Chocolate u obrazac za unos podataka, a zatim mijenja vrijednost Quantity na 90. Zapis s kojim treba raditi smješten je u kontekstnu varijabluEditRecord:
- UpdateContext( { EditRecord: LookUp( IceCream, Flavor = "Čokolada" ) } )
Da bi se to promijenilo u izvoru podataka, koristi se funkcija Patch:
- Patch( IceCream, EditRecord, Gallery.Updates )
gdje Gallery.Updates daje rezultat { Quantity: 90 } budući da je izmijenjeno samo svojstvo Quantity.
Nažalost, tik prije no što je pozvana funkcija Patch, netko drugi modificira vrijednost Quantity za Chocolate na 80. Aplikacija Power Apps otkrit će to i neće dopustiti da se dogodi konfliktna promjena. Možete provjeriti postoji li ova situacija formulom:
- IsEmpty( Errors( IceCream, EditRecord ) )
koja vraća false jer je funkcija Errors vratila sljedeću tablicu:
Zapis | Stupac | Poruka | Pogreška |
---|---|---|---|
{ Flavor: "Chocolate", Quantity: 100 } | prazno | „Drugi je korisnik izmijenio zapis koji pokušavate izmijeniti. Ponovno učitajte zapis i pokušajte opet.” | ErrorKind.Conflict |
Na obrazac možete staviti oznaku koja će korisniku pokazati ovu pogrešku.
- Da biste pokazali tu pogrešku, postavite svojstvo Text te oznake na ovu formulu:
Label.Text = First(Errors( IceCream, EditRecord )). Poruka
Možete uz to dodati gumb Reload na obrazac da bi korisnik mogao učinkovito razriješiti konflikt.
- Da bi se gumb prikazao samo kada dođe do sukoba, postavite svojstvo Visible gumba na ovu formulu:
! IsEmpty( Lookup( Errors( IceCream, EditRecord ), Error = ErrorKind.Conflict ) ) - Da biste vratili promjenu kada korisnik odabere taj gumb, postavite njezino svojstvo OnSelect na ovu formulu:
ReloadButton.OnSelect = Revert( IceCream, EditRecord )