Función Erros en Power Apps

Ofrece información de erros para cambios anteriores a unha orixe de datos.

Visión xeral

Pódense producir erros cando se cambia un rexistro dunha orixe de datos. Son posibles moitas causas, incluídas interrupcións na rede, permisos inadecuados e conflitos de edición.

A función Patch e outras funcións de datos non devolven erros directamente. En cambio, devolven o resultado da súa operación. Despois de executar unha función de datos, pode empregar a función Erros para obter os detalles de calquera erro. Pode comprobar a existencia de erros coa función [IsEmpty] na fórmula IsEmpty( Errors ( ... ) ).

Pode evitar algúns erros antes de que se produzan usando as funcións Validate e DataSourceInfo. Consulte traballar con orixes de datos para obter máis suxestións sobre como traballar con e evitar erros.

Descripción

A función Erros devolve unha táboa de erros que contén as seguintes columnas:

  • Rexistro. O rexistro da orixe de datos que tiña o erro. Se o erro se produciu durante a creación dun rexistro, esta columna estará en branco.
  • Columna. A columna que causou o erro, se o erro se pode atribuír a unha única columna. Do contrario, aparecerá en branco.
  • Mensaxe. Descrición do erro. Esta cadea de erro pode mostrarse para o usuario final. Teña en conta que esta mensaxe pode ser xerada pola orixe de datos e pode ser longa e conter nomes de columnas sen procesar que poden non ter ningún significado para o usuario.
  • Erro. Un código de erro que se pode usar en fórmulas para axudar a resolver o erro:
ErrorKind Descripción
ErrorKind.Conflict Realizouse outro cambio no mesmo rexistro, dando lugar a un conflito de cambio. Use a función Refresh para cargar de novo o rexistro e probar de novo o cambio.
ErrorKind.ConstraintViolation Infrinxíronse unha ou varias restricións.
ErrorKind.CreatePermission Intentouse crear un rexistro e o usuario actual non ten permiso para crear rexistros.
ErrorKind.DeletePermission Intentouse eliminar un rexistro e o usuario actual non ten permiso para eliminar rexistros.
ErrorKind.EditPermission Intentouse editar un rexistro e o usuario actual non ten permiso para editar rexistros.
ErrorKind.GeneratedValue Intentouse cambiar unha columna que a orixe de datos xera automaticamente.
ErrorKind.MissingRequired Falta o valor dunha columna obrigatoria no rexistro.
ErrorKind.None Non hai ningún erro.
ErrorKind.NotFound Intentouse editar ou eliminar un rexistro, pero non se atopou o rexistro. É posible que outro usuario cambie o rexistro.
ErrorKind.ReadOnlyValue Intentouse cambiar unha columna que só é de lectura.
ErrorKind.Sync A orixe de datos denunciou un erro. Consulte a columna Mensaxe para obter máis información.
ErrorKind.Unknown Houbo un erro, pero dun tipo descoñecido.
ErrorKind.Validation Detectouse un problema xeral de validación que non se adaptaba a ningún dos outros tipos.

Pódense devolver erros da orixe de datos completa ou só nunha fila seleccionada proporcionando o argumento Rexistro para a función.

Patch ou outra función de datos pode devolver un valor en branco , por exemplo, non se puido crear un rexistro. Pode pasar en branco a Erros e devolverá información de erros axeitada nestes casos. O uso posterior de funcións de datos na mesma orixe de datos borrará esta información de erro.

Se non hai erros, a táboa que devolve Erros estará baleira e poderá probarse coa función IsEmpty.

Sintaxe

Errors ( DataSource [, Record ] )

  • DataSource : necesario. A orixe de datos da que desexa recuperar erros.
  • Record : Opcional. Rexistro específico do que desexa recuperar erros. Se non especifica este argumento, a función devolverá os erros da orixe de datos completa.

Exemplos

Paso a paso

Para este exemplo, traballaremos coa orixe de datos Xeado :

Xeado

A través da aplicación, un usuario carga o rexistro de Chocolate nun formulario de entrada de datos e logo cambia o valor de Cantidade a 90. O rexistro co que traballar colócase na variable de contexto EditRecord :

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

Para facer este cambio na orixe de datos, utilizarase a función Patch :

  • Patch( IceCream, EditRecord, Gallery.Updates )

onde Gallery.Updates avalía en { Quantity: 90 } , dado que só se modificou a propiedade Quantity.

Por desgraza, xusto antes de invocar a función Patch , alguén máis modifica a Cantidade para Chocolate a 80. Power Apps detectará isto e non permitirá que se produza o cambio conflitivo. Pode comprobar esta situación coa fórmula:

  • IsEmpty( Errors( IceCream, EditRecord ) )

que devolverá o valor falso , porque a función Erros devolveu a seguinte táboa:

Rexistro Columna Mensaxe Erro
{ Flavor: "Chocolate", Quantity: 100 } en branco "Outro usuario modificou o rexistro que está intentando modificar. Cargue de novo o rexistro e ténteo de novo". ErrorKind.Conflict

Pode colocar unha etiqueta no formulario para mostrar este erro ao usuario.

  • Para amosar o erro, axuste a propiedade Text da etiqueta nesta fórmula:
    Label.Text = First(Errors( IceCream, EditRecord )).Message

Tamén pode engadir un botón de Cargar de novo ao formulario para que o usuario poida resolver o conflito de forma eficiente.

  • Para mostrar o botón só cando se produciu un conflito, configure a propiedade Visible do botón nesta fórmula:
    !IsEmpty( Lookup( Errors( IceCream, EditRecord ), Error = ErrorKind.Conflict ) )
  • Para reverter o cambio co que o usuario selecciona o botón, axuste a súa propiedade OnSelect nesta fórmula:
    ReloadButton.OnSelect = Revert( IceCream, EditRecord )