Función Errors en PowerAppsErrors function in PowerApps

Proporciona información de error para los cambios anteriores en un origen de datos.Provides error information for previous changes to a data source.

Información generalOverview

Pueden producirse errores cuando se cambia un registro de un origen de datos.Errors can happen when a record of a data source is changed. Esto puede deberse a numerosas causas, como interrupciones de red, permisos inadecuados y conflictos de edición.Many causes are possible, including network outages, inadequate permissions, and edit conflicts.

La función Patch y otras funciones de datos no devuelven errores directamente.The Patch function and other data functions don't directly return errors. En su lugar, devuelven el resultado de la operación.Instead they return the result of their operation. Una vez que se haya ejecutado una función de datos, puede usar la función Errors para obtener los detalles de los errores.After a data function executes, you can use the Errors function to obtain the details of any errors. Puede comprobar la existencia de errores con la función [IsEmpty] en la fórmula IsEmpty( Errors ( ... ) ).You can check for the existence of errors with the [IsEmpty] function in the formula IsEmpty( Errors ( ... ) ).

Puede evitar que se produzcan algunos errores mediante las funciones Validate y DataSourceInfo.You can avoid some errors before they happen by using the Validate and DataSourceInfo functions. En el tema relativo al trabajo con orígenes de datos, encontrará más sugerencias sobre cómo trabajar con los errores y evitarlos.See working with data sources for more suggestions on how to work with and avoid errors.

DescripciónDescription

La función Errors devuelve una tabla de errores que contiene las columnas siguientes:The Errors function returns a table of errors that contains the following columns:

  • Registro.Record. Registro del origen de datos que contenía el error.The record in the data source that had the error. Si el error se produjo durante la creación de un registro, esta columna estará en blanco.If the error occurred during the creation of a record, this column will be blank.
  • Columna.Column. Columna que produjo el error, en caso de que el error pueda atribuirse a una sola columna.The column that caused the error, if the error can be attributed to a single column. De lo contrario, estará en blanco.If not, this will be blank.
  • Mensaje.Message. Descripción del error.A description of the error. Esta cadena de error se puede mostrar para el usuario final.This error string can be displayed for the end user. Tenga en cuenta que este mensaje puede generarlo el origen de datos, por lo que podría ser largo y contener nombres de columna sin formato carentes de significado para el usuario.Be aware that this message may be generated by the data source and could be long and contain raw column names that may not have any meaning to the user.
  • Error.Error. Código de error que se puede usar en las fórmulas para ayudar a resolver el error:An error code that can be used in formulas to help resolve the error:
ErrorKindErrorKind DescripciónDescription
ErrorKind.ConflictErrorKind.Conflict Se ha realizado otro cambio en el mismo registro, lo que produce un conflicto de cambios.Another change was made to the same record, resulting in a change conflict. Use la función Refresh para volver a cargar el registro e intente de nuevo el cambio.Use the Refresh function to reload the record and try the change again.
ErrorKind.ConstraintViolationErrorKind.ConstraintViolation Se han infringido una o más restricciones.One or more constraints have been violated.
ErrorKind.CreatePermissionErrorKind.CreatePermission Se ha intentado crear un registro, pero el usuario actual no tiene permiso para crear registros.An attempt was made to create a record, and the current user doesn't have permission to create records.
ErrorKind.DeletePermissionErrorKind.DeletePermission Se ha intentado eliminar un registro, pero el usuario actual no tiene permiso para eliminar registros.An attempt was made to delete a record, and the current user doesn't have permission to delete records.
ErrorKind.EditPermissionErrorKind.EditPermission Se ha intentado editar un registro, pero el usuario actual no tiene permiso para editar registros.An attempt was made to edit a record, and the current user doesn't have permission to edit records.
ErrorKind.GeneratedValueErrorKind.GeneratedValue Se ha intentado cambiar una columna que el origen de datos genera automáticamente.An attempt was made to change a column that the data source generates automatically.
ErrorKind.MissingRequiredErrorKind.MissingRequired El valor de una columna necesaria no está en el registro.The value for a required column is missing from the record.
ErrorKind.NoneErrorKind.None No hay ningún error.There is no error.
ErrorKind.NotFoundErrorKind.NotFound Se ha intentado editar o eliminar un registro, pero no se pudo encontrar.An attempt was made to edit or delete a record, but the record couldn't be found. Es posible que otro usuario haya cambiado el registro.Another user may have changed the record.
ErrorKind.ReadOnlyValueErrorKind.ReadOnlyValue Se ha intentado cambiar una columna que es de solo lectura.An attempt was made to change a column that's read only.
ErrorKind.SyncErrorKind.Sync El origen de datos ha notificado un error.An error was reported by the data source. Consulte la columna Mensaje para obtener más información.Check the Message column for more information.
ErrorKind.UnknownErrorKind.Unknown Se ha producido un error, pero es de tipo desconocido.There was an error, but of an unknown kind.
ErrorKind.ValidationErrorKind.Validation Se ha detectado un problema de validación general que no se corresponde con ninguno de los demás tipos.There was a general validation issue detected, that did not fit one of the other kinds.

Los errores pueden devolverse para el origen de datos completo o para una sola fila seleccionada si se proporciona el argumento Record a la función.Errors can be returned for the entire data source, or for only a selected row by providing the Record argument to the function.

La función Patch u otras funciones de datos pueden devolver un valor en blanco si, por ejemplo, no se pudo crear un registro.Patch or another data function may return a blank value if, for example, a record couldn't be created. Si pasa un valor en blanco a Errors, le devolverá información de error adecuada en estos casos.You can pass blank to Errors, and it will return appropriate error information in these cases. El uso posterior de funciones de datos en el mismo origen de datos borrará esta información de error.Subsequent use of data functions on the same data source will clear this error information.

Si no hay ningún error, la tabla que Errors devuelve estará vacía y se podrá probar con la función IsEmpty.If there are no errors, the table that Errors returns will be empty and can be tested with the IsEmpty function.

SintaxisSyntax

Errors( DataSource [, Record ] )Errors( DataSource [, Record ] )

  • DataSource: requerido.DataSource – Required. Origen de datos para el que quiere devolver errores.The data source for which you want to return errors.
  • Record: opcional.Record – Optional. Registro específico para el que quiere devolver errores.A specific record for which you want to return errors. Si no especifica este argumento, la función devuelve errores para todo el origen de datos.If you don't specify this argument, the function returns errors for the entire data source.

EjemplosExamples

Paso a pasoStep by Step

En este ejemplo, vamos a trabajar con el origen de datos IceCream:For this example, we'll be working with the IceCream data source:

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.Through the app, a user loads the Chocolate record into a data-entry form and then changes the value of Quantity to 90. El registro con el que se va a trabajar se coloca en la variable de contexto EditRecord:The record to be worked with is placed in the context variable EditRecord:

  • UpdateContext( { EditRecord: First( Filter( IceCream, Flavor = "Chocolate" ) ) } )UpdateContext( { EditRecord: First( Filter( IceCream, Flavor = "Chocolate" ) ) } )

Para realizar este cambio en el origen de datos, se usa la función Patch:To make this change in the data source, the Patch function is used:

  • Patch( IceCream, EditRecord, Gallery.Updates )Patch( IceCream, EditRecord, Gallery.Updates )

donde Gallery.Updates se evalúa como { Quantity: 90 }, ya que solo se ha modificado la propiedad Quantity.where Gallery.Updates evaluates to { Quantity: 90 }, since only the Quantity property has been modified.

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.Unfortunately, just before the Patch function was invoked, somebody else modifies the Quantity for Chocolate to 80. PowerApps lo detecta y no permite que se produzca el cambio en conflicto.PowerApps will detect this and not allow the conflicting change to occur. Puede comprobar esta situación mediante la fórmula:You can check for this situation with the formula:

  • IsEmpty( Errors( IceCream, EditRecord ) )IsEmpty( Errors( IceCream, EditRecord ) )

que devuelve false, ya que la función Errors ha devuelto la tabla siguiente:which returns false, because the Errors function returned the following table:

RegistroRecord ColumnaColumn MensajeMessage ErrorError
{ Flavor: "Chocolate", Quantity: 100 }{ Flavor: "Chocolate", Quantity: 100 } en blancoblank "Otro usuario ha modificado el registro que está intentando modificar."Another user has modified the record that you're trying to modify. Vuelva a cargar el registro e inténtelo de nuevo."Please reload the record and try again." ErrorKind.ConflictErrorKind.Conflict

Puede colocar una etiqueta en el formulario para mostrar este error al usuario.You can place a label on the form to show this error to the user.

  • Para mostrar el error, establezca la propiedad Text de la etiqueta en esta fórmula:To show the error, set the label's Text property to this formula:
    Label.Text = First(Errors( IceCream, EditRecord )).MessageLabel.Text = First(Errors( IceCream, EditRecord )).Message

También puede agregar un botón Recargar en el formulario para que el usuario pueda resolver eficazmente el conflicto.You can also add a Reload button on the form, so that the user can efficiently resolve the conflict.

  • Para mostrar el botón solo cuando se haya producido un conflicto, establezca la propiedad Visible del botón en esta fórmula:To show the button only when a conflict has occurred, set the button's Visible property to this formula:
    !IsEmpty( Lookup( Errors( IceCream, EditRecord ), Error = ErrorKind.Conflict ) )!IsEmpty( Lookup( Errors( IceCream, EditRecord ), Error = ErrorKind.Conflict ) )
  • Para revertir el cambio cuando el usuario selecciona el botón, establezca su propiedad OnSelect en esta fórmula:To revert the change which the user selects the button, set its OnSelect property to this formula:
    ReloadButton.OnSelect = Revert( IceCream, EditRecord )ReloadButton.OnSelect = Revert( IceCream, EditRecord )