Dijeli putem


Errors funkcija

Odnosi se na: Aplikacije platna – aplikacije utemeljene na modelu

Pruža informacije o pogrešci za prethodne promjene izvoru podataka.

Pregled

Errors može se dogoditi kada se promijeni zapis izvora podataka. 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 tih funkcija vraća vrijednost pogreške kao rezultat operacije. Errors može se otkriti pomoću pogreške IsError i zamijeniti ih ili potisnuti funkcijama IfErrori App.OnError kao i obično. Dodatne informacije potražite u odjeljku Otklanjanje pogrešaka.
  • Nakon operacije funkcija će Errors vratiti i pogreške za prethodne operacije. Može biti koristan za prikaz poruke o pogrešci na zaslonu obrasca bez potrebe za snimanjem 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 pojavila tijekom stvaranja zapisa, stupac je prazan.
  • Stupac. Stupac koji je uzrokovao pogrešku, ako se pogreška može pripisati jednom stupcu. Ako nije, prazna je.
  • Poruka. Opis pogreške. Ovaj se niz pogreške može prikazati krajnjem korisniku. Ovu poruku može generirati izvor podataka i može sadržavati dugačke i neobrađene nazive stupaca koji korisniku možda nemaju značenja.
  • 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ćeniti problem s provjerom valjanosti koji nije odgovarao jednoj od drugih vrsta.

Errors može se vratiti za cijeli izvor podataka ili samo za odabrani redak ako funkciju uvede argument Zapis.

Patch ili neka druga podatkovna funkcija može vratiti praznu vrijednost ako, na primjer, zapis nije moguće stvoriti. Možete proslijediti prazninu u Errors, a u tim slučajevima vraća odgovarajuće informacije o pogrešci. Daljnje korištenje podatkovnih funkcija u istom izvoru podataka briše te informacije o pogrešci.

Ako nema pogrešaka, tablica koja vraća Errors bit će prazna i može se testirati pomoću funkcije IsEmpty.

Sintaksa

Errors( DataSource [, Record ] )

  • 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 ćemo primjeru raditi s izvorom podataka IceCream , izvorom podataka za koji će Power Apps pokušati otkriti sukobe:

Sladoled.

Napomena

Power Apps ne pokušava otkriti sukobe u vezi s promjenama tablica za Dataverse.

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 )

Pri čemu funkcija Gallery.Updates ima vrijednost { Količina: 90 }, budući da je izmijenjeno samo svojstvo Količina.

Nažalost, tik prije no što je pozvana funkcija Patch, netko drugi modificira vrijednost Quantity za Chocolate na 80. Budući da je ovo podržani izvor podataka za otkrivanje sukoba, Power Apps će to otkriti i neće dopustiti sukobljene promjene. Možete provjeriti postoji li ova situacija formulom:

  • IsEmpty( Errors( IceCream, EditRecord )

Što vraća false jer je funkcija Errors vratila sljedeću tablicu:

Zapis Stupac Poruka Pogreška
{ Okus: "Čokolada", Količina: 100 } prazno „Drugi je korisnik izmijenio zapis koji pokušavate izmijeniti. Ponovno učitajte zapis i pokušajte ponovno." 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, kojom korisnik odabire gumb, postavite njegovo svojstvo OnSelect na ovu formulu:
    ReloadButton.OnSelect = Revert( IceCream, EditRecord )