Função Erros no PowerAppsErrors function in PowerApps

Fornece informações de erro para alterações anteriores em uma fonte de dados.Provides error information for previous changes to a data source.

Visão geralOverview

Erros podem ocorrer quando um registro de uma fonte de dados é alterado.Errors can happen when a record of a data source is changed. Muitas causas são possíveis, incluindo interrupções de rede, permissões inadequadas e conflitos de edição.Many causes are possible, including network outages, inadequate permissions, and edit conflicts.

A função Patch e outras funções de dados não retornam erros diretamente.The Patch function and other data functions don't directly return errors. Em vez disso, elas retornam o resultado de sua operação.Instead they return the result of their operation. Depois que uma função de dados é executada, você pode usar a função Erros para obter os detalhes de qualquer erro.After a data function executes, you can use the Errors function to obtain the details of any errors. É possível verificar a existência de erros com a função [IsEmpty] na fórmula IsEmpty( Errors ( ... ) ).You can check for the existence of errors with the [IsEmpty] function in the formula IsEmpty( Errors ( ... ) ).

Você pode evitar alguns erros antes que eles ocorram usando as funções Validar e DataSourceInfo.You can avoid some errors before they happen by using the Validate and DataSourceInfo functions. Consulte trabalhando com fontes de dados para obter mais sugestões sobre como trabalhar com erros e evitá-los.See working with data sources for more suggestions on how to work with and avoid errors.

DescriçãoDescription

A função Erros retorna uma tabela de erros que contém as seguintes colunas:The Errors function returns a table of errors that contains the following columns:

  • Registro.Record. O registro da fonte de dados que tinha o erro.The record in the data source that had the error. Se o erro tiver ocorrido durante a criação de um registro, essa coluna ficará em branco.If the error occurred during the creation of a record, this column will be blank.
  • Coluna.Column. A coluna que causou o erro, se o erro puder ser atribuído a uma única coluna.The column that caused the error, if the error can be attributed to a single column. Se não, isso estará em branco.If not, this will be blank.
  • Mensagem.Message. Uma descrição do erro.A description of the error. Essa cadeia de caracteres de erro pode ser exibida para o usuário final.This error string can be displayed for the end user. Lembre-se de que essa mensagem pode ser gerada pela fonte de dados e pode ser longa e conter nomes brutos de coluna que podem não ter nenhum significado para o usuário.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.
  • Erro.Error. Um código de erro que pode ser usado em fórmulas para ajudar a resolver o erro:An error code that can be used in formulas to help resolve the error:
ErrorKindErrorKind DescriçãoDescription
ErrorKind.ConflictErrorKind.Conflict Outra alteração foi feita ao mesmo registro, resultando em um conflito de alteração.Another change was made to the same record, resulting in a change conflict. Use a função Renovar para recarregar o registro e tente a alteração novamente.Use the Refresh function to reload the record and try the change again.
ErrorKind.ConstraintViolationErrorKind.ConstraintViolation Uma ou mais restrições foram violadas.One or more constraints have been violated.
ErrorKind.CreatePermissionErrorKind.CreatePermission Foi feita uma tentativa de criar um registro e o usuário atual não tem permissão para criar registros.An attempt was made to create a record, and the current user doesn't have permission to create records.
ErrorKind.DeletePermissionErrorKind.DeletePermission Foi feita uma tentativa de excluir um registro e o usuário atual não tem permissão para excluir registros.An attempt was made to delete a record, and the current user doesn't have permission to delete records.
ErrorKind.EditPermissionErrorKind.EditPermission Foi feita uma tentativa de editar um registro e o usuário atual não tem permissão para editar registros.An attempt was made to edit a record, and the current user doesn't have permission to edit records.
ErrorKind.GeneratedValueErrorKind.GeneratedValue Foi feita uma tentativa de alterar uma coluna que a fonte de dados gera automaticamente.An attempt was made to change a column that the data source generates automatically.
ErrorKind.MissingRequiredErrorKind.MissingRequired O valor de uma coluna obrigatória está ausente no registro.The value for a required column is missing from the record.
ErrorKind.NoneErrorKind.None Não há nenhum erro.There is no error.
ErrorKind.NotFoundErrorKind.NotFound Foi feita uma tentativa de editar ou excluir um registro, mas o registro não pode ser encontrado.An attempt was made to edit or delete a record, but the record couldn't be found. Outro usuário pode ter alterado o registro.Another user may have changed the record.
ErrorKind.ReadOnlyValueErrorKind.ReadOnlyValue Foi feita uma tentativa de alterar uma coluna que é somente leitura.An attempt was made to change a column that's read only.
ErrorKind.SyncErrorKind.Sync Um erro foi relatado pela fonte de dados.An error was reported by the data source. Verifique a coluna Mensagem para obter mais informações.Check the Message column for more information.
ErrorKind.UnknownErrorKind.Unknown Ocorreu um erro, mas de um tipo desconhecido.There was an error, but of an unknown kind.
ErrorKind.ValidationErrorKind.Validation Foi detectado um problema de validação geral, que não se encaixa em um dos outros tipos.There was a general validation issue detected, that did not fit one of the other kinds.

Erros podem ser retornados para toda a fonte de dados ou apenas uma linha selecionada, fornecendo o argumento Registro para a função.Errors can be returned for the entire data source, or for only a selected row by providing the Record argument to the function.

Patch ou outra função de dados poderão retornar um valor em branco se, por exemplo, um registro não puder ser criado.Patch or another data function may return a blank value if, for example, a record couldn't be created. Você pode passar em branco para Erros e ele retornará informações de erro apropriadas nesses casos.You can pass blank to Errors, and it will return appropriate error information in these cases. O uso subsequente das funções de dados na mesma fonte de dados removerá as informações desse erro.Subsequent use of data functions on the same data source will clear this error information.

Se não houver nenhum erro, a tabela que retornará Erros ficará vazia e poderá ser testada com a função IsEmpty.If there are no errors, the table that Errors returns will be empty and can be tested with the IsEmpty function.

SintaxeSyntax

Errors( DataSource [, Record ] )Errors( DataSource [, Record ] )

  • DataSource – Obrigatório.DataSource – Required. A fonte de dados para qual você deseja retornar erros.The data source for which you want to return errors.
  • Registro – opcional.Record – Optional. Um registro específico para qual você deseja retornar erros.A specific record for which you want to return errors. Se você não especificar esse argumento, a função retornará erros para toda a fonte de dados.If you don't specify this argument, the function returns errors for the entire data source.

ExemplosExamples

Passo a passoStep by Step

Para este exemplo, trabalharemos com a fonte de dados IceCream:For this example, we'll be working with the IceCream data source:

Por meio do aplicativo, um usuário carrega o registro Chocolate em um formulário de entrada de dados e, em seguida, altera o valor de Quantidade para 90.Through the app, a user loads the Chocolate record into a data-entry form and then changes the value of Quantity to 90. O registro a ser trabalhado é colocado na variável de contexto 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" ) ) } )

Para fazer essa alteração na fonte de dados, a função Patch é usada:To make this change in the data source, the Patch function is used:

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

em que Gallery.Updates é avaliada como { Quantidade: 90}, já que apenas a propriedade Quantidade foi modificada.where Gallery.Updates evaluates to { Quantity: 90 }, since only the Quantity property has been modified.

Infelizmente, logo antes de a função Patch ter sido invocada, alguém modificou a Quantidade de Chocolate para 80.Unfortunately, just before the Patch function was invoked, somebody else modifies the Quantity for Chocolate to 80. O PowerApps detectará isso e não permitirá que a alteração conflitante ocorra.PowerApps will detect this and not allow the conflicting change to occur. Você pode verificar essa situação com a fórmula:You can check for this situation with the formula:

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

que retorna false, porque a função Erros retornou a tabela a seguir:which returns false, because the Errors function returned the following table:

RegistroRecord ColunaColumn MensagemMessage ErroError
{ Sabor: "Chocolate", Quantidade: 100 }{ Flavor: "Chocolate", Quantity: 100 } em brancoblank "Outro usuário modificou o registro que você está tentando modificar."Another user has modified the record that you're trying to modify. Recarregue o registro e tente novamente."Please reload the record and try again." ErrorKind.ConflictErrorKind.Conflict

Você pode colocar um rótulo no formulário para mostrar esse erro ao usuário.You can place a label on the form to show this error to the user.

  • Para mostrar o erro, defina a propriedade Texto do rótulo para esta fórmula: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

Você também pode adicionar um botão Recarregar no formulário, para que o usuário possa resolver com eficiência o conflito.You can also add a Reload button on the form, so that the user can efficiently resolve the conflict.

  • Para exibir o botão somente quando um conflito tiver ocorrido, defina a propriedade Visível do botão como esta fórmula: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 ) )
  • Para reverter a alteração que o usuário seleciona o botão, defina sua propriedade OnSelect como esta fórmula: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 )