Zdieľať cez


Funkcia Errors

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:

Zmrzlina.

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 )