Compartir a través de


Errors Función

Se aplica a: Aplicaciones de lienzo basadas en modelos

Proporciona información de error para los cambios anteriores en un origen de datos.

Información general

Errors puede ocurrir cuando se cambia un registro de un origen de datos. Esto puede deberse a numerosas causas, como interrupciones de red, permisos inadecuados y conflictos de edición.

Las funciones que modifican el contenido de los orígenes de datos, como Patch, Collect, Remove, RemoveIf, Update, UpdateIf y SubmitForm informan de los errores de dos maneras:

  • Cada una de estas funciones devuelve un valor de error como resultado de la operación. Errors se puede detectar con IsError y reemplazar o suprimir con IfError y App.OnError como de costumbre. Para obtener más información, consulte Control de errores.
  • Después de la operación, la Errors función también devolverá los errores de las operaciones anteriores. Puede ser útil para mostrar el mensaje de error en una pantalla de formulario sin necesidad de capturar el error en una variable de estado.

Puede evitar que se produzcan algunos errores mediante las funciones Validate y DataSourceInfo. En el tema relativo al trabajo con orígenes de datos, encontrará más sugerencias sobre cómo trabajar con los errores y evitarlos.

Descripción

La Errors función devuelve una tabla de errores que contiene las columnas siguientes:

  • Registro. Registro del origen de datos que contenía el error. Si se produjo el error durante la creación de un registro, esta columna está en blanco.
  • Columna. Columna que produjo el error, en caso de que el error pueda atribuirse a una sola columna. Si no es así, está en blanco.
  • Mensaje. Descripción del error. Esta cadena de error se puede mostrar para el usuario final. El origen de datos puede generar este mensaje y puede ser largo y contener nombres de columna sin procesar que pueden no tener ningún significado para el usuario.
  • Error. Código de error que se puede usar en las fórmulas para ayudar a resolver el error:
ErrorKind Descripción
ErrorKind.Conflict Se ha realizado otro cambio en el mismo registro, lo que produce un conflicto de cambios. Use la función Refresh para volver a cargar el registro e intente de nuevo el cambio.
ErrorKind.ConstraintViolation Se han infringido una o más restricciones.
ErrorKind.CreatePermission Se ha intentado crear un registro, pero el usuario actual no tiene permiso para crear registros.
ErrorKind.DeletePermission Se ha intentado eliminar un registro, pero el usuario actual no tiene permiso para eliminar registros.
ErrorKind.EditPermission Se ha intentado editar un registro, pero el usuario actual no tiene permiso para editar registros.
ErrorKind.GeneratedValue Se ha intentado cambiar una columna que el origen de datos genera automáticamente.
ErrorKind.MissingRequired El valor de una columna necesaria no está en el registro.
ErrorKind.None No hay ningún error.
ErrorKind.NotFound Se ha intentado editar o eliminar un registro, pero no se pudo encontrar. Es posible que otro usuario haya cambiado el registro.
ErrorKind.ReadOnlyValue Se ha intentado cambiar una columna que es de solo lectura.
ErrorKind.Sync El origen de datos ha notificado un error. Consulte la columna Mensaje para obtener más información.
ErrorKind.Unknown Se ha producido un error, pero es de tipo desconocido.
ErrorKind.Validation Se detectó un problema de validación general que no encajaba con uno de los otros tipos.

Errors se puede devolver para todo el origen de datos o solo para una fila seleccionada proporcionando el argumento Record a la función.

Parche u otra función de datos puede devolver un blanco valor si, por ejemplo, no se pudo crear un registro. Puede pasar en blanco a Errorsy devuelve la información de error adecuada en estos casos. El uso posterior de funciones de datos en el mismo origen de datos borra esta información de error.

Si no hay errores, la tabla que Errors devuelve estará vacía y se puede probar con la función IsEmpty .

Sintaxis

Errors( DataSource [, Record ] )

  • DataSource: requerido. Origen de datos para el que quiere devolver errores.
  • Registro - Opcional. Registro específico para el que quiere devolver errores. Si no especifica este argumento, la función devuelve errores para todo el origen de datos.

Ejemplos

Paso a paso

En este ejemplo, trabajaremos con el origen de datos IceCream , un origen de datos para el que Power Apps intentará detectar conflictos:

Helado.

Nota:

Power Apps no intenta detectar conflictos de cambios en las tablas de Dataverse.

A través de la aplicación, un usuario carga el registro Chocolate en un formulario de entrada de datos y cambia el valor de Quantity a 90. El registro con el que se va a trabajar se coloca en la variable de contextoEditRecord:

  • ActualizarContexto( { EditRecord: LookUp(Helado, Sabor = "Chocolate") } )

Para realizar este cambio en el origen de datos, se usa la función Patch:

  • Parche (IceCream, EditRecord, Galería.Actualizaciones)

Donde Gallery.Updates se evalúa como { Quantity: 90 }, ya que solo se ha modificado la propiedad Quantity .

Por desgracia, justo antes de que se invoque la función Patch, otra persona modifica la propiedad Quantity de Chocolate y la establece en 80. Dado que se trata de un origen de datos compatible para la detección de conflictos, Power Apps lo detectará y no permitirá que se produzca el cambio en conflicto. Puede comprobar esta situación mediante la fórmula:

  • IsEmpty( Errors( IceCream, EditRecord ) )

Lo que devuelve false, porque la Errors función devolvió la tabla siguiente:

Registro Columna Mensaje Error
{ Flavor: "Chocolate", Quantity: 100 } blanco "Otro usuario ha modificado el registro que está intentando modificar. Vuelva a cargar el registro e inténtelo de nuevo". ErrorKind.Conflict

Puede colocar una etiqueta en el formulario para mostrar este error al usuario.

  • Para mostrar el error, establezca la propiedad Text de la etiqueta en esta fórmula:
    Label.Text = First(Errors( IceCream, EditRecord )). Mensaje

También puede agregar un botón Recargar en el formulario para que el usuario pueda resolver eficazmente el conflicto.

  • Para mostrar el botón solo cuando se haya producido un conflicto, establezca la propiedad Visible del botón en esta fórmula:
    ! IsEmpty( Lookup( Errors( IceCream, EditRecord ), Error = ErrorKind.Conflict ) )
  • Para revertir el cambio, que el usuario selecciona el botón, establezca su propiedad OnSelect en esta fórmula:
    ReloadButton.OnSelect = revertir(Helado, EditarRegistro)