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:

  • Record. 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.
  • Message. 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é.
  • Error. 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.

Funkcia Patch alebo iná údajová funkcia môže vracať prázdnu hodnotu, ak sa napríklad záznam nedá vytvoriť. 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

ErrorsDataSource [, Record ] )

  • DataSource – povinné. Zdroj údajov, pre ktorý chcete vrátiť chyby.
  • Record – 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 premennejEditRecord:

  • UpdateContext( { EditRecord: LookUp( IceCream, Flavor = "Čokoláda" ) } )

Na vykonanie tejto zmeny v zdroji údajov sa používa funkcia Patch:

  • Patch( 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 } blank „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(Errors( IceCream, EditRecord )).Message

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 )