Vigade funktsioon

Kehtib: lõuendirakendused Mudelipõhised rakendused

Pakub tõrgetega seotud teavet andmeallikas varasemate muudatuste kohta.

Ülevaade

Tõrked võivad juhtuda, kui muudetakse andmeallika kirjet. Paljud põhjused on võimalikud, sh võrgu katkestused, ebapiisavad õigused ja muudatuste vastuolud.

Funktsioonid, mis muudavad andmeid andmeallikas, nagu näiteks Paik, Kogu, Eemalda, RemoveIf, Värskenda, UpdateIf ja SubmitForm, teatavad tõrkeid kahel viisil.

  • Kõik need funktsioonid tagastavad toimingu tulemusena tõrkeväärtuse. Nagu ikka, on tõrkeid võimalik tuvastada funktsiooniga IsError ja asendada või keelata funktsiooniga IfError ning App.OnError. Lisateavet leiate jaotisest Veakäsitlus.
  • Toimingu järel tagastab funktsioon Tõrked ka eelmiste toimingute tõrked. See võib olla kasulik tõrketeate kuvamisel vormi kuval, ilma et oleks vaja jäädvustada tõrget oleku muutujas.

Saate vältida tõrkeid, enne kui need juhtuvad, kasutades fuktsioone Validate ja DataSourceInfo. Vt andmeallikatega töötamine, et teada saada, kuidas töötada andmeallikatega ja vältida tõrkeid.

Kirjeldus

Funktsioon Errors tagastab tõrgete tabeli, mis sisaldab järgmisi veerge:

  • Kirje. Andmeallika kirje, millel oli tõrge. Kui kirje loomise ajal ilmnes tõrge, on see veerg tühi.
  • Veerg. Tõrget põhjustanud veerg, kui tõrget saab seostada ühe veeruga. Kui mitte, on see tühi.
  • Sõnum. Tõrke kirjeldus. Selle tõrke stringi saab kuvada lõppkasutaja jaoks. Pange tähele, et selle sõnumi võib luua andmeallikas ja see võib olla pikk ning sisaldada tooreid veergude nimesid, millel ei pruugi olla mingit tähendust kasutajale.
  • Tõrge. Tõrkekood, mida saab kasutada tõrgete lahendamiseks valemites.
ErrorKind Kirjeldus
ErrorKind.Conflict Teine muutus tehti samale samale kirjele, mille tulemuseks on muudatuste vastuolu. Kasutage funktsiooni Refresh (Värskenda) kirje laadimiseks ja proovige siis uuesti muuta.
ErrorKind.ConstraintViolation Rikutud on ühte või mitut piirangut.
ErrorKind.CreatePermission Tehti katse luua kirjet ja praegusel kasutajal pole kirjete loomiseks õigust.
ErrorKind.DeletePermission Tehti katse kustutada kirjet ja praegusel kasutajal pole kirjete kustutamise õigust.
ErrorKind.EditPermission Tehti katse muuta kirjet ja praegusel kasutajal pole kirjete muutmise õigust.
ErrorKind.GeneratedValue Tehti katse muuta veergu, mille andmeallikas automaatselt genereerib.
ErrorKind.MissingRequired Kirjest puudub nõutava veeru väärtus.
ErrorKind.None Tõrkeid pole.
ErrorKind.NotFound Prooviti kirjet redigeerida või kustutada, kuid kirjet ei leitud. Võimalik, et mõni teine kasutaja on kirjet muutnud.
ErrorKind.ReadOnlyValue Tehti katse muuta veergu, mis on kirjutuskaitstud.
ErrorKind.Sync Andmeallikas teatas tõrkest. Vaadake lisateavet veerust Sõnum.
ErrorKind.Unknown Ilmnes tõrge, kuid tundmatut tüüpi.
ErrorKind.Validation Tuvastati üldine valideerimise probleem, mis ei sobinud mõne muu tüübiga.

Tõrkeid saab tagastada kogu andmeallika või ainult valitud rea jaoks, pakkudes Kirje argumenti funktsioonile.

Paik või mõni muu andmefunktsioon võib tagastada väärtuse tühi, kui ei saanud näiteks kirjet luua. Saate edastada tühjaTõrgetele ja see tagastab neil juhtudel sobiva tõrketeabe. Andmefunktsioonide edasine kasutamine samal andmeallikal kustutab selle tõrke teabe.

Kui tõrkeid pole, on tabel, mille funktsioon Errors tagastab tühi ja seda saab katsetada funktsiooniga IsEmpty.

Süntaks

Errors( DataSource [, Record ] )

  • DataSource – Nõutav. Andmeallikas, mille jaoks soovite tõrkeid tagastada.
  • Kirje – valikuline. Teatud kirje, mille jaoks soovite tõrkeid tagastada. Kui te seda argumenti ei määra, tagastab funktsioon tõrked kogu andmeallikas.

Näited

Samm-sammult

Selles näites töötame andmeallikaga IceCream:

Jäätis.

Rakenduse kaudu laadib kasutaja kirje Šokolaad andmesisestuse vormi ja seejärel muudab Koguse väärtuseks 90. Kirje, millega soovite töötada, paigutatakse konteksti muutujasseEditRecord:

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

Kui soovite selle muudatuse andmeallikas teha, kasutage funktsiooni Patch.

  • Patch( IceCream, EditRecord, Gallery.Updates )

kus Gallery.Updates võrdub { Quantity: 90 }, kuna ainult atribuuti Quantity on muudetud.

Kahjuks, just enne funktsiooni Patch käivitamist, muudab keegi teine Šokolaadi koguse Quantity 80-ks. Power Apps tuvastab selle ja ei luba vastuolulistel muudatustel esineda. Saate seda olukorda kontrollida järgmise valemi abil.

  • IsEmpty( Errors( IceCream, EditRecord ) )

mis tagastab väärtuse väär, sest funktsioon Errors tagastas järgmise tabeli:

Kirje Veerg Teade Tõrge
{ Flavor: "Chocolate", Quantity: 100 } tühi Mõni teine kasutaja on muutnud kirjet, mida proovite muuta. Laadige kirje ja proovige uuesti. ErrorKind.Conflict

Saate panna vormile sildi, mis näitab seda tõrget kasutajale.

  • Tõrke kuvamiseks määrake sildi atribuut Text sellele valemile.
    Label.Text = First(Errors( IceCream, EditRecord )).Message

Vormile saate lisada ka nupu Laadi uuesti, nii et kasutaja saab konflikti tõhusalt lahendada.

  • Nupu kuvamiseks ainult konflikti tekkimisel seadke nupu atribuut Nähtav sellele valemile.
    !IsEmpty( Lookup( Errors( IceCream, EditRecord ), Error = ErrorKind.Conflict ) )
  • Kui soovite ennistada muudatuse, mille kasutaja valib nupu abil, määrake selle OnSelectatribuut sellele valemile.
    ReloadButton.OnSelect = Revert( IceCream, EditRecord )