Funkcia chýb
Vzťahuje sa na: aplikácie plátna aplikácie s podporou modelov
Poskytuje informácie o chybách počas predchádzajúcich zmien zdroja údajov.
Prehľad
Chyby môžu vznikať pri zmene záznamu zdroja údajov. Príčin môže byť veľa, napríklad výpadky siete, nedostatočné povolenia, konflikty úprav.
Funkcie, ktoré upravujú údaje v zdrojoch údajov, napríklad Patch, Collect, Remove, RemoveIf, Update, UpdateIf a SubmitForm, hlásia chyby dvoma spôsobmi:
- Každá z týchto funkcií vráti chybovú hodnotu ako výsledok operácie. Chyby možno zistiť pomocou IsError a nahradiť alebo potlačiť pomocou IfError a App. OnError ako obvykle. Ďalšie informácie získate v časti Spracovanie chýb.
- Po operácii funkcia Errors vráti aj chyby pre predchádzajúce operácie. Môže to byť užitočné na zobrazenie chybovej správy na obrazovke formulára bez potreby zachytiť chybu v stavovej premennej.
Vzniku niektorých chýb môžete predchádzať pomocou funkcií Validate a DataSourceInfo. Ďalšie návrhy o tom, ako s chybami pracovať a ako sa im vyhýbať nájdete v článku o práci so zdrojmi údajov.
Popis
Funkcia Errors vracia tabuľku chýb, ktorá obsahuje nasledujúce stĺpce:
- Záznam. Záznam v zdroji údajov, v ktorom sa vyskytla chyba. Ak chyba vznikla počas vytvárania záznamu, tento stĺpec bude prázdny.
- Stĺpec. Stĺpec, ktorý spôsobil chybu, ak sa chyba dá priradiť jednému stĺpcu. Ak nie, bude tento stĺpec prázdny.
- Správa. Opis chyby. Tento reťazec chyby sa môže zobrazovať koncovému používateľovi. Majte na pamäti, že toto hlásenie môže byť generované zdrojom údajov, môže byť dlhé a môže obsahovať nespracované názvy stĺpcov, ktoré nemusia byť pre používateľa zrozumiteľné.
- Chyba. Kód chyby, ktorý je možné použiť vo vzorcoch za účelom uľahčenia vyriešenia chyby:
ErrorKind | Popis |
---|---|
ErrorKind.Conflict | V rovnakom zázname bola vykonaná iná zmena, výsledkom je konflikt zmien. Pomocou funkcie Refresh opäť načítajte záznam a skúste danú zmenu urobiť znova. |
ErrorKind.ConstraintViolation | Porušilo sa jedno alebo viac obmedzení. |
ErrorKind.CreatePermission | Došlo k pokusu o vytvorenie záznamu a aktuálny používateľ nemá povolenie na vytváranie záznamov. |
ErrorKind.DeletePermission | Došlo k pokusu o odstránenie záznamu a aktuálny používateľ nemá povolenie na odstraňovanie záznamov. |
ErrorKind.EditPermission | Došlo k pokusu o úpravu záznamu a aktuálny používateľ nemá povolenie na upravovanie záznamov. |
ErrorKind.GeneratedValue | Došlo k pokusu o zmenu stĺpca, ktorý zdroj údajov generuje automaticky. |
ErrorKind.MissingRequired | Hodnota pre požadovaný stĺpec v zázname chýba. |
ErrorKind.None | Chyba neexistuje. |
ErrorKind.NotFound | Došlo k pokusu o úpravu alebo odstránenie záznamu, ale záznam sa nenašiel. Záznam mohol zmeniť iný používateľ. |
ErrorKind.ReadOnlyValue | Došlo k pokusu o zmenu stĺpca, ktorý je iba na čítanie. |
ErrorKind.Sync | Zdroj údajov oznámil chybu. Ďalšie informácie nájdete v stĺpci Message. |
ErrorKind.Unknown | Vyskytla sa chyba neznámeho typu. |
ErrorKind.Validation | Vyskytol sa všeobecný problém s overovaním, ktorý nezodpovedá žiadnemu z ďalších typov. |
Chyby je možné vrátiť pre celý zdroj údajov, alebo iba pre vybraný riadok, ak do tejto funkcie zadáte argument Record.
Náplasť alebo iná dátová funkcia môže vrátiť a prázdna hodnotu, ak sa napríklad nepodarilo vytvoriť záznam. Prázdnu hodnotu môžete poslať funkcii Errors, ktorá v týchto prípadoch vráti príslušnú informáciu o chybe. Pri ďalšom použití údajových funkcií pre rovnaký zdroj údajov sa informácie o tejto chybe vymažú.
Ak neprišlo k žiadnym chybám, bude tabuľka, ktorú vráti funkcia Errorsprázdna a bude ju možné testovať pomocou funkcie IsEmpty.
Syntax
Chyby ( DataSource [, Záznam ])
- DataSource – povinné. Zdroj údajov, pre ktorý chcete vrátiť chyby.
- Záznam – Voliteľné. Konkrétny záznam, pre ktorý chcete vrátiť chyby. Ak tento argument nezadáte, funkcia vráti chyby pre celý zdroj údajov.
Príklady
Podrobný popis
V tomto príklade budeme pracovať so zdrojom údajov IceCream:
Používateľ načíta do formulára na zadávanie údajov prostredníctvom aplikácie záznam Čokoláda a potom zmení hodnotu Quantity na 90. Záznam, s ktorým sa má pracovať, sa nachádza v kontextovej premennej EditRecord:
- UpdateContext( { EditRecord: LookUp( IceCream, Flavour = "Chocolate" ) } )
Na vykonanie tejto zmeny v zdroji údajov sa používa funkcia Patch:
- Oprava (IceCream, EditRecord, Gallery.Updates)
kde sa Gallery.Updates vyhodnotí ako { Quantity: 90 }, keďže sa upravila iba vlastnosť Quantity.
Bohužiaľ, tesne pred vyvolaním funkcie Patch niekto iný upravil vlastnosť Quantity pre záznam Čokoláda na 80. Power Apps to zistí a nepovolí vykonanie konfliktnej zmeny. Túto situáciu môžete skontrolovať pomocou vzorca:
- IsEmpty( Errors( IceCream, EditRecord) )
ktorá vráti hodnotu nepravda, pretože funkcia Errors vrátila nasledujúcu tabuľku:
Record | Stĺpec | Správa | Chyba |
---|---|---|---|
{ Flavor: "Čokoláda", Quantity: 100 } | prázdna | „Iný používateľ upravil záznam, ktorý sa pokúšate upraviť vy. Opätovne načítajte záznam a skúste to znova.“ | ErrorKind.Conflict |
Do formulára môžete pridať označenie, ktoré zobrazí chybu používateľovi.
- Ak chcete túto chybu zobraziť, nastavte vlastnosť označenia Text na tento vzorec:
Label.Text = First(Chyby( IceCream, EditRecord )).Správa
Do formulára tiež môžete pridať tlačidlo Načítať znovu, aby používateľ mohol účinne vyriešiť tento konflikt.
- Ak chcete, aby sa tlačidlo zobrazovalo iba keď nastane konflikt, nastavte jeho vlastnosť Visible na tento vzorec:
!IsEmpty( Lookup( Errors( IceCream, EditRecord ), Error = ErrorKind.Conflict ) ) - Keď chcete naspäť vrátiť zmenu, keď používateľ vyberie tlačidlo, nastavte vlastnosť tlačidla OnSelect na tento vzorec:
ReloadButton.OnSelect = Revert( IceCream, EditRecord )