Poznámka
Na prístup k tejto stránke sa vyžaduje oprávnenie. Môžete sa skúsiť prihlásiť alebo zmeniť adresáre.
Na prístup k tejto stránke sa vyžaduje oprávnenie. Môžete skúsiť zmeniť adresáre.
Vzťahuje sa na: Aplikácie
plátna Modelom riadené aplikácie
Poskytuje informácie o chybách počas predchádzajúcich zmien zdroja údajov.
Prehľad
Errors môže vyskytnúť, keď sa zmení záznam 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. Errors možno zistiť pomocou funkcie IsError a nahradiť alebo potlačiť funkciou IfError a App.OnError ako zvyčajne. Ďalšie informácie získate v časti Spracovanie chýb.
- Po operácii Errors vráti funkcia aj chyby pre predchádzajúce operácie. Môže to byť užitočné pri zobrazovaní chybového hlásenia na obrazovke formulára bez potreby zaznamenať chybu v premennej stavu.
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 vráti 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 je prázdny.
- Stĺpec. Stĺpec, ktorý spôsobil chybu, ak sa chyba dá priradiť jednému stĺpcu. Ak nie, je prázdna.
- Správa. Opis chyby. Tento reťazec chyby sa môže zobrazovať koncovému používateľovi. Toto hlásenie môže byť generované zdrojom údajov, môže byť dlhé a môže obsahovať nespracované názvy stĺpcov, ktoré nemusia mať pre používateľa žiadny význam.
- 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. |
Errors možno vrátiť pre celý zdroj údajov, alebo iba pre vybratý riadok tak, že do funkcie poskytnete argument Záznam .
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ť do Errorsa v týchto prípadoch vráti príslušné informácie o chybe. Pri ďalšom použití údajových funkcií pre rovnaký zdroj údajov sa informácie o tejto chybe vymažú.
Ak nedošlo k žiadnym chybám, tabuľka, ktorá Errors vráti hodnotu, bude prázdna a bude ju možné testovať pomocou funkcie IsEmpty .
Syntax
Errors( DataSource [, Record ] )
- 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 , zdrojom údajov, pre ktorý sa Power Apps pokúsi zistiť konflikty:
Poznámka
Power Apps sa nepokúsi zistiť konflikty pri zmenách tabuliek Dataverse.
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 premennejEditRecord:
- 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. Keďže ide o podporovaný zdroj údajov na zisťovanie konfliktov, 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 false, pretože Errors funkcia 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. Znova 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(Errors( 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 ) ) - Ak chcete vrátiť zmenu, keď používateľ vyberie tlačidlo, nastavte vlastnosť tlačidla OnSelect na tento vzorec:
ReloadButton.OnSelect = Revert( IceCream, EditRecord )