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:
- Rekord. 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.
- Viga. 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.
Paiga - või muu andmefunktsioon võib tagastada tühja väärtuse, kui näiteks kirjet ei saanud luua. Saate edastada tühja Tõ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:
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( jäätis, maitse = "šokolaad" ) } )
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( vead( 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(Vead( IceCream, EditRecord )). Sõnum
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 = ennistama( IceCream, EditRecord )