Nota
O acceso a esta páxina require autorización. Pode tentar iniciar sesión ou modificar os directorios.
O acceso a esta páxina require autorización. Pode tentar modificar os directorios.
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:
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 )