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:
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 )