Fornece informações de erro para alterações anteriores em uma fonte de dados.

Visão geral

Erros podem ocorrer quando um registro de uma fonte de dados é alterado. Muitas causas são possíveis, incluindo interrupções de rede, permissões inadequadas e conflitos de edição.

A função Patch e outras funções de dados não retornam erros diretamente. Em vez disso, elas retornam o resultado de sua operação. Depois que uma função de dados é executada, você pode usar a função Erros para obter os detalhes de qualquer erro. É possível verificar a existência de erros com a função [IsEmpty] na fórmula IsEmpty( Errors ( ... ) ).

Você pode evitar alguns erros antes que eles ocorram usando as funções Validar e DataSourceInfo. Consulte trabalhando com fontes de dados para obter mais sugestões sobre como trabalhar com erros e evitá-los.

Descrição

A função Erros retorna uma tabela de erros que contém as seguintes colunas:

  • Registro. O registro da fonte de dados que tinha o erro. Se o erro tiver ocorrido durante a criação de um registro, essa coluna ficará em branco.

  • Coluna. A coluna que causou o erro, se o erro puder ser atribuído a uma única coluna. Se não, isso estará em branco.

  • Mensagem. Uma descrição do erro. Essa cadeia de caracteres de erro pode ser exibida para o usuário final. 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.

  • Erro. Um código de erro que pode ser usado em fórmulas para ajudar a resolver o erro:

ErrorKind Descrição
ErrorKind.Conflict Outra alteração foi feita ao mesmo registro, resultando em um conflito de alteração. Use a função Renovar para recarregar o registro e tente a alteração novamente.
ErrorKind.ConstraintViolation Uma ou mais restrições foram violadas.
ErrorKind.CreatePermission Foi feita uma tentativa de criar um registro e o usuário atual não tem permissão para criar registros.
ErrorKind.DeletePermission Foi feita uma tentativa de excluir um registro e o usuário atual não tem permissão para excluir registros.
ErrorKind.EditPermission Foi feita uma tentativa de editar um registro e o usuário atual não tem permissão para editar registros.
ErrorKind.GeneratedValue Foi feita uma tentativa de alterar uma coluna que a fonte de dados gera automaticamente.
ErrorKind.MissingRequired O valor de uma coluna obrigatória está ausente no registro.
ErrorKind.None Não há nenhum erro.
ErrorKind.NotFound Foi feita uma tentativa de editar ou excluir um registro, mas o registro não pode ser encontrado. Outro usuário pode ter alterado o registro.
ErrorKind.ReadOnlyValue Foi feita uma tentativa de alterar uma coluna que é somente leitura.
ErrorKind.Sync Um erro foi relatado pela fonte de dados. Verifique a coluna Mensagem para obter mais informações.
ErrorKind.Unknown Ocorreu um erro, mas de um tipo desconhecido.
ErrorKind.Validation Foi detectado um problema de validação geral, que não se encaixa em um dos outros tipos.

Erros podem ser retornados para toda a fonte de dados ou apenas uma linha selecionada, fornecendo o argumento Registro para a função.

Patch ou outra função de dados poderão retornar um valor em branco se, por exemplo, um registro não puder ser criado. Você pode passar em branco para Erros e ele retornará informações de erro apropriadas nesses casos. O uso subsequente das funções de dados na mesma fonte de dados removerá as informações desse erro.

Se não houver nenhum erro, a tabela que retornará Erros ficará vazia e poderá ser testada com a função IsEmpty.

Sintaxe

Errors( DataSource [, Record ] )

  • DataSource – Obrigatório. A fonte de dados para qual você deseja retornar erros.
  • Registro – opcional. Um registro específico para qual você deseja retornar erros. Se você não especificar esse argumento, a função retornará erros para toda a fonte de dados.

Exemplos

Passo a passo

Para este exemplo, trabalharemos com a fonte de dados IceCream:

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. O registro a ser trabalhado é colocado na variável de contexto EditRecord:

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

Para fazer essa alteração na fonte de dados, a função Patch é usada:

  • Patch( IceCream, EditRecord, Gallery.Updates )

em que Gallery.Updates é avaliada como { Quantidade: 90}, já que apenas a propriedade Quantidade foi modificada.

Infelizmente, logo antes de a função Patch ter sido invocada, alguém modificou a Quantidade de Chocolate para 80. O PowerApps detectará isso e não permitirá que a alteração conflitante ocorra. Você pode verificar essa situação com a fórmula:

  • IsEmpty( Errors( IceCream, EditRecord ) )

que retorna false, porque a função Erros retornou a tabela a seguir:

Registro Coluna Mensagem Erro
{ Sabor: "Chocolate", Quantidade: 100 } em branco "Outro usuário modificou o registro que você está tentando modificar. Recarregue o registro e tente novamente." ErrorKind.Conflict

Você pode colocar um rótulo no formulário para mostrar esse erro ao usuário.

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

  • Para exibir o botão somente quando um conflito tiver ocorrido, defina a propriedade Visível do botão como esta fórmula:
    !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:
    ReloadButton.OnSelect = Revert( IceCream, EditRecord )