Funkce Errors v PowerAppsErrors function in PowerApps

Poskytuje informace o chybách u předchozích změn zdroje dat.Provides error information for previous changes to a data source.

PřehledOverview

Když se záznam zdroje dat změní, může docházet k chybám.Errors can happen when a record of a data source is changed. Příčin může být řada, například výpadky sítě, nedostatečná oprávnění a konflikty úprav.Many causes are possible, including network outages, inadequate permissions, and edit conflicts.

Funkce Patch a další datové funkce nevracejí chyby přímo.The Patch function and other data functions don't directly return errors. Místo toho vracejí výsledek své operace.Instead they return the result of their operation. Po provedení datové funkce můžete podrobnosti o případných chybách získat pomocí funkce Errors.After a data function executes, you can use the Errors function to obtain the details of any errors. Výskyt chyb můžete zkontrolovat pomocí funkce [IsEmpty] ve vzorci IsEmpty( Errors ( ... ) ).You can check for the existence of errors with the [IsEmpty] function in the formula IsEmpty( Errors ( ... ) ).

Některým chybám se dá vyhnout ještě před jejich vznikem pomocí funkcí Validate a ZdrojDatInfo.You can avoid some errors before they happen by using the Validate and DataSourceInfo functions. 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.See working with data sources for more suggestions on how to work with and avoid errors.

PopisDescription

Funkce Errors vrací tabulku chyb, která obsahuje následující sloupce:The Errors function returns a table of errors that contains the following columns:

  • Záznam:Record. Záznam ve zdroji dat, který obsahuje chybu.The record in the data source that had the error. Pokud k chybě došlo při vytváření záznamu, bude tento sloupec prázdný.If the error occurred during the creation of a record, this column will be blank.
  • Sloupec:Column. Sloupec, který způsobil chybu, pokud lze danou chybu přiřadit jednomu sloupci.The column that caused the error, if the error can be attributed to a single column. Pokud ne, bude tento sloupec prázdný.If not, this will be blank.
  • Zpráva:Message. Popis chyby.A description of the error. Tento text chyby se může zobrazovat koncovému uživateli.This error string can be displayed for the end user. 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é.Be aware that this message may be generated by the data source and could be long and contain raw column names that may not have any meaning to the user.
  • Chyba:Error. Kód chyby, který je možné použít ve vzorcích, aby se usnadnilo vyřešení chyby:An error code that can be used in formulas to help resolve the error:
ErrorKindErrorKind PopisDescription
ErrorKind.ConflictErrorKind.Conflict Ve stejném záznamu se provedla jiná změna a výsledkem je konflikt změn.Another change was made to the same record, resulting in a change conflict. Pomocí funkce Refresh znovu načtěte záznam a zkuste provést danou změnu znovu.Use the Refresh function to reload the record and try the change again.
ErrorKind.ConstraintViolationErrorKind.ConstraintViolation Porušilo se jedno nebo více omezení.One or more constraints have been violated.
ErrorKind.CreatePermissionErrorKind.CreatePermission Došlo k pokusu o vytvoření záznamu a aktuální uživatel nemá oprávnění k vytváření záznamů.An attempt was made to create a record, and the current user doesn't have permission to create records.
ErrorKind.DeletePermissionErrorKind.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ů.An attempt was made to delete a record, and the current user doesn't have permission to delete records.
ErrorKind.EditPermissionErrorKind.EditPermission Došlo k pokusu o úpravy záznamu a aktuální uživatel nemá oprávnění k úpravám záznamů.An attempt was made to edit a record, and the current user doesn't have permission to edit records.
ErrorKind.GeneratedValueErrorKind.GeneratedValue Došlo k pokusu o změnu sloupce, který zdroj dat generuje automaticky.An attempt was made to change a column that the data source generates automatically.
ErrorKind.MissingRequiredErrorKind.MissingRequired Hodnota pro požadovaný sloupec v záznamu chybí.The value for a required column is missing from the record.
ErrorKind.NoneErrorKind.None Žádná chyba neexistuje.There is no error.
ErrorKind.NotFoundErrorKind.NotFound Došlo k pokusu o úpravy nebo odstranění záznamu, ale záznam se nenašel.An attempt was made to edit or delete a record, but the record couldn't be found. Záznam mohl změnit jiný uživatel.Another user may have changed the record.
ErrorKind.ReadOnlyValueErrorKind.ReadOnlyValue Došlo k pokusu o změnu sloupce, který je jen pro čtení.An attempt was made to change a column that's read only.
ErrorKind.SyncErrorKind.Sync Zdroj dat oznámil chybu.An error was reported by the data source. Další informace najdete ve sloupci Zpráva.Check the Message column for more information.
ErrorKind.UnknownErrorKind.Unknown Došlo k chybě neznámého typu.There was an error, but of an unknown kind.
ErrorKind.ValidationErrorKind.Validation Vyskytl se obecný problém s ověřováním, který neodpovídá žádnému z dalších typů.There was a general validation issue detected, that did not fit one of the other kinds.

Chyby se můžou vracet pro celý zdroj dat, nebo jenom pro vybraný řádek, pokud do této funkce zadáte argument Záznam.Errors can be returned for the entire data source, or for only a selected row by providing the Record argument to the function.

Funkce Patch nebo jiná datová funkce může vracet prázdnou hodnotu, pokud například záznam nejde vytvořit.Patch or another data function may return a blank value if, for example, a record couldn't be created. 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ě.You can pass blank to Errors, and it will return appropriate error information in these cases. Při dalším použití datových funkcí u stejného datového zdroje se informace o této chybě vymažou.Subsequent use of data functions on the same data source will clear this error information.

Pokud žádné chyby neexistují, bude tabulka vrácená funkcí Errors prázdná a bude ji možné testovat pomocí funkce IsEmpty.If there are no errors, the table that Errors returns will be empty and can be tested with the IsEmpty function.

SyntaxeSyntax

Errors( Zdroj dat [; Záznam ] )Errors( DataSource [, Record ] )

  • ZdrojDat – povinné.DataSource – Required. Zdroj dat, pro který chcete vrátit chyby.The data source for which you want to return errors.
  • Záznam – volitelné.Record – Optional. Konkrétní záznam, pro který chcete vrátit chyby.A specific record for which you want to return errors. Pokud nezadáte tento argument, funkce vrátí chyby pro celý zdroj dat.If you don't specify this argument, the function returns errors for the entire data source.

PříkladyExamples

Podrobný postupStep by Step

V tomto příkladu budeme pracovat se zdrojem dat IceCream:For this example, we'll be working with the IceCream data source:

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.Through the app, a user loads the Chocolate record into a data-entry form and then changes the value of Quantity to 90. Záznam, se kterým se má pracovat, se nachází v kontextové proměnné EditRecord:The record to be worked with is placed in the context variable EditRecord:

  • UpdateContext( { EditRecord: First( Filter( IceCream; Flavor = "Chocolate" ) ) } )UpdateContext( { EditRecord: First( Filter( IceCream, Flavor = "Chocolate" ) ) } )

K provedení této změny ve zdroji dat se používá funkce Patch:To make this change in the data source, the Patch function is used:

  • Patch( IceCream; EditRecord; Gallery.Updates )Patch( IceCream, EditRecord, Gallery.Updates )

kde Gallery.Updates se vyhodnotí jako { Quantity: 90 }, protože se změnila jenom vlastnost Quantity.where Gallery.Updates evaluates to { Quantity: 90 }, since only the Quantity property has been modified.

Bohužel zrovna před voláním funkce Patch někdo jiný změnil vlastnost Quantity pro záznam Chocolate na 80.Unfortunately, just before the Patch function was invoked, somebody else modifies the Quantity for Chocolate to 80. Aplikace PowerApps to rozpozná a nepovolí, aby se konfliktní změna provedla.PowerApps will detect this and not allow the conflicting change to occur. Tuto situaci můžete vyhledat pomocí vzorce:You can check for this situation with the formula:

  • IsEmpty( Errors( IceCream; EditRecord ) )IsEmpty( Errors( IceCream, EditRecord ) )

který vrátí hodnotu false, protože funkce Errors vrátila následující tabulku:which returns false, because the Errors function returned the following table:

ZáznamRecord SloupecColumn ZprávaMessage ChybaError
{ Flavor: "Chocolate"; Quantity: 100 }{ Flavor: "Chocolate", Quantity: 100 } prázdná hodnotablank Another user has modified the record that you're trying to modify."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.)Please reload the record and try again." ErrorKind.ConflictErrorKind.Conflict

Můžete do formuláře umístit popisek, který zobrazí tuto chybu uživateli.You can place a label on the form to show this error to the user.

  • Pokud chcete tuto chybu zobrazit, nastavte do vlastnosti Text tohoto popisku tento vzorec:To show the error, set the label's Text property to this formula:
    Label.Text = First(Errors( IceCream, EditRecord )).MessageLabel.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.You can also add a Reload button on the form, so that the user can efficiently resolve the conflict.

  • Pokud chcete toto tlačítko zobrazit jenom v případě, že došlo ke konfliktu, nastavte do vlastnosti Visible tohoto tlačítka tento vzorec:To show the button only when a conflict has occurred, set the button's Visible property to this formula:
    !IsEmpty( Lookup( Errors( IceCream; EditRecord ); Error = ErrorKind.Conflict ) )!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:To revert the change which the user selects the button, set its OnSelect property to this formula:
    ReloadButton.OnSelect = Revert( IceCream; EditRecord )ReloadButton.OnSelect = Revert( IceCream, EditRecord )