Share via


Función de erros

Aplícase a: Aplicacións de lenzo Aplicacións baseadas en modelos

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.

As funcións que modifican os datos nas orixes de datos, como erros de informes Parche, Collect, Eliminar, RemoveIf, Actualizar, UpdateIf e SubmitForm de dúas maneiras:

  • Cada unha destas funcións devolverá un valor de erro como resultado da operación. Os erros pódense detectar con IsError e substituírse ou eliminarse con IfError e App.OnError como de costume. Consulte Control de erros para obter máis información.
  • Despois da operación, a función Erros devolverá tamén os erros das operacións anteriores. Isto pode ser útil para mostrar a mensaxe de erro nunha pantalla de formulario sen necesidade de capturar o erro nunha variable de estado.

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 – Obrigatorio. 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 contextoEditRecord:

  • UpdateContext( { EditRecord: LookUp( 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 } blank "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 )