Zdieľať cez


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:

Zmrzlina.

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 )