Sdílet prostřednictvím


Errors Funkce

Platí pro: Modelem řízené aplikace plátna

Poskytuje informace o chybách u předchozích změn zdroje dat.

Přehled

Errors může dojít při změně záznamu zdroje dat. Příčin může být řada, například výpadky sítě, nedostatečná oprávnění a konflikty úprav.

Funkce, které mění zdroje dat, jako Patch, Collect, Remove, RemoveIf, Update, UpdateIf a SubmitForm hlásí chyby dvěma způsoby:

  • Každá z těchto funkcí vrátí chybovou hodnotu jako výsledek operace. Errors lze zjistit pomocí isError a nahradit nebo potlačit ifError a App.OnError jako obvykle. Další informace naleznete v článku Zpracování chyb.
  • Po operaci Errors vrátí funkce také chyby pro předchozí operace. Může být užitečné pro zobrazení chybové zprávy na obrazovce formuláře, aniž by bylo nutné zachytit chybu ve stavové proměnné.

Některým chybám se dá vyhnout ještě před jejich vznikem pomocí funkcí Validate a DataSourceInfo. Další návrhy k tomu, jak pracovat s chybami a jak se jim vyhýbat, najdete v tématu o práci se zdroji dat.

Popis

Funkce Errors vrátí tabulku chyb, která obsahuje následující sloupce:

  • Záznam. Záznam ve zdroji dat, který obsahuje chybu. Pokud k chybě došlo při vytváření záznamu, je tento sloupec prázdný.
  • Sloupec. Sloupec, který způsobil chybu, pokud lze danou chybu přiřadit jednomu sloupci. Pokud ne, je to prázdné.
  • Zpráva. Popis chyby. Tento text chyby se může zobrazovat koncovému uživateli. Tato zpráva může být generována zdrojem dat a může být dlouhá a obsahovat nezpracované názvy sloupců, které nemusí mít pro uživatele žádný význam.
  • Chyba. Kód chyby, který je možné použít ve vzorcích, aby se usnadnilo vyřešení chyby:
ErrorKind Popis
ErrorKind.Conflict Ve stejném záznamu se provedla jiná změna a výsledkem je konflikt změn. Pomocí funkce Refresh znovu načtěte záznam a zkuste provést danou změnu znovu.
ErrorKind.ConstraintViolation Porušilo se jedno nebo více omezení.
ErrorKind.CreatePermission Došlo k pokusu o vytvoření záznamu a aktuální uživatel nemá oprávnění k vytváření záznamů.
ErrorKind.DeletePermission Došlo k pokusu o odstranění záznamu a aktuální uživatel nemá oprávnění k odstraňování záznamů.
ErrorKind.EditPermission Došlo k pokusu o úpravy záznamu a aktuální uživatel nemá oprávnění k úpravám záznamů.
ErrorKind.GeneratedValue Došlo k pokusu o změnu sloupce, který zdroj dat generuje automaticky.
ErrorKind.MissingRequired Hodnota pro požadovaný sloupec v záznamu chybí.
ErrorKind.None Není žádná chyba.
ErrorKind.NotFound Došlo k pokusu o úpravy nebo odstranění záznamu, ale záznam se nenašel. Záznam mohl změnit jiný uživatel.
ErrorKind.ReadOnlyValue Došlo k pokusu o změnu sloupce, který je jen pro čtení.
ErrorKind.Sync Zdroj dat oznámil chybu. Další informace najdete ve sloupci Zpráva.
ErrorKind.Unknown Došlo k chybě neznámého typu.
ErrorKind.Validation Zjistil se obecný problém s ověřováním, který se nevejde do jednoho z ostatních typů.

Errors lze vrátit pro celý zdroj dat nebo pouze pro vybraný řádek zadáním argumentu Záznam funkci.

Náplast nebo jiná datová funkce může vrátit a prázdný hodnotu, pokud například nelze vytvořit záznam. Do pole můžete předat prázdnouErrorshodnotu a v těchto případech vrátí příslušné informace o chybě. Následné použití datových funkcí ve stejném zdroji dat vymaže tyto informace o chybě.

Pokud nedojde k žádným chybám, bude tabulka, která Errors vrací, prázdná a je možné ji otestovat pomocí funkce IsEmpty .

Syntaxe

Errors( Zdroj dat [, Záznam ] )

  • ZdrojDat – povinné. Zdroj dat, pro který chcete vrátit chyby.
  • Záznam – Volitelné. Konkrétní záznam, pro který chcete vrátit chyby. Pokud nezadáte tento argument, funkce vrátí chyby pro celý zdroj dat.

Příklady

Podrobný postup

V tomto příkladu budeme pracovat se zdrojem dat IceCream , což je zdroj dat, pro který se Power Apps pokusí detekovat konflikty:

Zmrzlina.

Poznámka:

Power Apps se nepokoušá detekovat konflikty pro změny tabulek Dataverse.

Uživatel načte prostřednictvím aplikace do formuláře pro vkládání dat záznam Chocolate a pak změní hodnotu Quantity na 90. Záznam, se kterým se má pracovat, se nachází v kontextové proměnnéEditRecord:

  • UpdateContext( { EditRecord: LookUp( IceCream, Flavour = "Chocolate" ) } )

K provedení této změny ve zdroji dat se používá funkce Patch:

  • Oprava (IceCream, EditRecord, Gallery.Updates)

Where Gallery.Updates se vyhodnotí jako { Quantity: 90 }, protože byla změněna pouze vlastnost Množství .

Bohužel zrovna před voláním funkce Patch někdo jiný změnil vlastnost Quantity pro záznam Chocolate na 80. Vzhledem k tomu, že se jedná o podporovaný zdroj dat pro detekci konfliktů, Služba Power Apps tuto chybu zjistí a nepovolí konfliktní změnu. Tuto situaci můžete vyhledat pomocí vzorce:

  • IsEmpty( Errors( IceCream; EditRecord ) )

Vrátí hodnotu false, protože funkce vrátila Errors následující tabulku:

Záznam Sloupec Zpráva Chybové
{ Flavor: "Chocolate"; Quantity: 100 } prázdný Another user has modified the record that you're trying to modify. Znovu načtěte záznam a zkuste to znovu." ErrorKind.Conflict

Můžete do formuláře umístit popisek, který zobrazí tuto chybu uživateli.

  • Pokud chcete tuto chybu zobrazit, nastavte do vlastnosti Text tohoto popisku tento vzorec:
    Label.Text = First(Errors( IceCream; EditRecord )). Zpráva

Můžete také do formuláře přidat tlačítko Načíst znovu, aby mohl uživatel tento konflikt účinně vyřešit.

  • Pokud chcete toto tlačítko zobrazit jenom v případě, že došlo ke konfliktu, nastavte do vlastnosti Visible tohoto tlačítka tento vzorec:
    ! IsEmpty( Lookup( Errors( IceCream; EditRecord ); Error = ErrorKind.Conflict ) )
  • Pokud chcete vrátit změnu, kterou uživatel vybere, nastavte její vlastnost OnSelect na tento vzorec:
    ReloadButton.OnSelect = vrátit se k uloženému( IceCream, EditRecord )