Funkce Errors
Platí pro: aplikace plátna modelem řízené aplikace
Poskytuje informace o chybách u předchozích změn zdroje dat.
Přehled
Když se záznam zdroje dat změní, může docházet k chybám. 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. Chyby lze detekovat pomocí IsError a nahradit nebo potlačit pomocí IfError a App.OnError jako obvykle. Další informace naleznete v článku Zpracování chyb.
- Po operaci vrátí funkce Errors také chyby pro předchozí operace. To 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 vrací 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, bude tento sloupec prázdný.
- Sloupec. Sloupec, který způsobil chybu, pokud lze danou chybu přiřadit jednomu sloupci. Pokud ne, bude tento sloupec prázdný.
- Zpráva. Popis chyby. Tento text chyby se může zobrazovat koncovému uživateli. Mějte na paměti, že tato zpráva může být generovaná zdrojem dat, může být dlouhá a může obsahovat nezpracované názvy sloupců, které nemusejí být pro uživatele srozumitelné.
- 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 | Žádná chyba neexistuje. |
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 | Vyskytl se obecný problém s ověřováním, který neodpovídá žádnému z dalších typů. |
Chyby se můžou vracet pro celý zdroj dat, nebo jenom pro vybraný řádek, pokud do této funkce zadáte argument Záznam.
Náplast nebo jiná datová funkce může vrátit a prázdný hodnotu, pokud například nelze vytvořit záznam. Prázdnou hodnotu můžete předat do funkce Errors a tato funkce vrátí v těchto případech informace o příslušné chybě. Při dalším použití datových funkcí u stejného datového zdroje se informace o této chybě vymažou.
Pokud žádné chyby neexistují, bude tabulka vrácená funkcí Errorsprázdná a bude ji možné testovat pomocí funkce IsEmpty.
Syntaxe
Chyby ( DataSource [, Záznam ])
- DataSource – 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:
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)
kde Gallery.Updates se vyhodnotí jako { Quantity: 90 }, protože se změnila jenom vlastnost Quantity.
Bohužel zrovna před voláním funkce Patch někdo jiný změnil vlastnost Quantity pro záznam Chocolate na 80. Aplikace Power Apps to rozpozná a nepovolí, aby se konfliktní změna provedla. Tuto situaci můžete vyhledat pomocí vzorce:
- IsEmpty( Errors( IceCream, EditRecord) )
který vrátí hodnotu false, protože funkce Errors vrátila 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. Please reload the record and try again. (Jiný uživatel změnil záznam, který se pokoušíte změnit. Načtěte znovu 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 )).Message
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 zpátky, když uživatel vybere toto tlačítko, nastavte do jeho vlastnosti OnSelect tento vzorec:
ReloadButton.OnSelect = vrátit se k uloženému( IceCream, EditRecord )