Compartir por


Errors Función

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

Errors Pode ocorrer cando se modifica un rexistro dunha fonte 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 devolve un valor de erro como resultado da operación. Errors pode ser detectado con IsError e substituído ou suprimido por IfError e App.OnError como de costume. Consulte Control de erros para obter máis información.
  • Despois da operación, a Errors función tamén devolverá os erros das operacións anteriores. 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 Errors función devolve unha táboa de erros que contén as seguintes columnas:

  • Gravar. O rexistro da orixe de datos que tiña o erro. Se se produciu o erro durante a creación dun rexistro, esta columna está en branco.
  • Columna. A columna que causou o erro, se o erro se pode atribuír a unha única columna. Se non, está en branco.
  • Mensaxe. Descrición do erro. Esta cadea de erro pode mostrarse para o usuario final. Esta mensaxe pode ser xerada pola fonte de datos e pode ser longa e conter nomes de columnas brutos 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 de validación xeral, que non se axustaba a un dos outros tipos.

Errors pode ser devolto para toda a fonte de datos, ou só para unha fila seleccionada proporcionando o argumento Record á función.

Parche ou outra función de datos pode devolver a en branco valor se, por exemplo, non se puido crear un rexistro. Pode pasar en branco a Errors, e devolve a información de erro adecuada nestes casos. O uso posterior de funcións de datos na mesma fonte de datos elimina esta información de erro.

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

Sintaxe

Errors( DataSource [, Record ] )

  • DataSource – Obrigatorio. A orixe de datos da que desexa recuperar erros.
  • Gravar - 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 fonte de datos de IceCream , unha fonte de datos para a que Power Apps intentará detectar conflitos:

Sorbete.

Nota

Power Apps non intenta detectar conflitos para os cambios nas táboas de Dataverse.

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:

  • Parche (IceCream, EditRecord, Gallery.Updates)

Onde Gallery.Updates avalía como { Cantidade: 90 }, xa que só se modificou a propiedade Cantidade .

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

  • IsEmpty( Errors( IceCream, EditRecord ) )

O que devolve false, porque a Errors función devolve a seguinte táboa:

Rexistro Columna Mensaxe Erro
{ Sabor: "Chocolate", Cantidade: 100 } en branco "Outro usuario modificou o rexistro que está intentando modificar. Volve cargar o rexistro e téntao 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 )). Mensaxe

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, que o usuario selecciona o botón, estableza a súa propiedade OnSelect nesta fórmula:
    ReloadButton.OnSelect = Revertir( IceCream, EditRecord )