Funciones Update y UpdateIf

Se aplica a: Aplicaciones de lienzo Aplicaciones basadas en modelos

Actualiza los registros de un origen de datos.

Description

Función Update

Use la función Update para reemplazar todo un registro en un origen de datos. En cambio, las funciones UpdateIf y Patch modifican uno o varios valores de un registro, y dejan los demás valores como están.

En el caso de una colección, tiene que coincidir todo el registro. Las colecciones permiten registros duplicados, por lo que podrían coincidir varios registros. Puede usar el argumento RemoveFlags.All para actualizar todas las copias de un registro; en caso contrario, se actualiza solo una copia del registro.

Si el origen de datos genera automáticamente un valor de columna, el valor de esa columna debe confirmarse.

Función UpdateIf

Use la función UpdateIf para modificar uno o varios valores de uno o más registros que coincidan con una o varias condiciones. Cada condición puede ser cualquier fórmula cuyo resultado sea true o false, y puede hacer referencia a columnas del origen de datos por su nombre. La función evalúa la condición para cada registro y modifica los registros cuyo resultado sea true.

Para especificar una modificación, use un registro de cambio que contenga los nuevos valores de la propiedad. Si proporciona este registro de cambio en línea entre llaves, las fórmulas de propiedad pueden hacer referencia a las propiedades del registro que se van a modificar. Puede usar este comportamiento para modificar registros en función de una fórmula.

De forma similar a UpdateIf, también puede usar la función Patch para cambiar columnas específicas de un registro sin que afecte a otras columnas.

Tanto Update como UpdateIf devuelven el origen de datos modificado como una tabla. Debe usar estas funciones en una fórmula de comportamiento.

Delegación

Cuando se usan con un origen de datos, estas funciones no se pueden delegar. Solo se recuperará la primera parte del origen de datos, y después se aplicará la función. Esto puede no representar la historia completa. Puede aparecer una advertencia en el momento de la creación para recordarle esta limitación.

Soporte de delegación (Experimental)

El soporte de delegación para UpdateIf y RemoveIf ahora está en Vista previa experimental (desactivado de manera predeterminada) para las fuentes de datos que lo admiten. Si un origen de datos no es compatible con esta función, Power Apps ahora enviará una consulta al servidor y recuperará todos los datos que coincidan con la expresión del filtro hasta un máximo de 500, 2000 o el tamaño de la página de datos. Luego, actualizará esos registros y los enviará de vuelta al servidor para que se actualicen.

Sintaxis

Update( DataSource, OldRecord, NewRecord [, RemoveFlags.All ] )

  • DataSource: requerido. Origen de datos que contiene el registro que desea reemplazar.
  • OldRecord (obligatorio). Registro que se va a reemplazar.
  • NewRecord (obligatorio). Registro de reemplazo. No es un registro de cambio. Se reemplaza todo el registro y las propiedades que faltan contendrán blank.
  • RemoveFlags.All – Opcional. En una colección, el mismo registro puede aparecer más de una vez. Especifique el argumento RemoveFlags.All para actualizar todas las copias del registro.

UpdateIf( DataSource, Condition1, ChangeRecord1 [, Condition2, ChangeRecord2, ... ] )

  • DataSource: requerido. El origen de datos que contiene el registro o los registros que desea modificar.
  • Condition(s): requerido. Una fórmula que se evalúa como true para el registro o los registros que desea modificar. Puede usar nombres de columna de DataSource en la fórmula.
  • ChangeRecord(s): requerido. Para cada condición, un registro de cambio con los nuevos valores de propiedad que se aplicarán a los registros de DataSource que cumplan la condición. Si proporciona el registro en línea entre llaves, los valores de propiedad del registro existente pueden utilizarse en las fórmulas de propiedad.

Ejemplos

En estos ejemplos, va a reemplazar o modificar registros de un origen de datos llamado IceCream, que comienza con los datos de esta tabla:

Ejemplo de IceCream.

Fórmula Descripción Resultado
Update( IceCream,
First( Filter( IceCream, Flavor="Chocolate" ) ), { ID: 1, Flavor: "Mint Chocolate", Quantity:150 } )
Reemplaza un registro del origen de datos. Reemplazar un registro.

El origen de datos IceCream se ha modificado.
UpdateIf( IceCream, Quantity > 175, { Quantity: Quantity + 10 } ) Modifica los registros con un valor de Quantity superior a 175. El campo Quantity se incrementa en 10, y no se modifica ningún otro campo. Modificación de registros.

El origen de datos IceCream se ha modificado.
Update( IceCream,
First( Filter( IceCream, Flavor="Strawberry" ) ),
{ ID: 3, Flavor: "Strawberry Swirl"} )
Reemplaza un registro del origen de datos. El registro de reemplazo no contiene la propiedad Quantity, por lo que el valor de esta propiedad será blank en el resultado. Reemplazar registro cuando no se suministre cantidad.

El origen de datos IceCream se ha modificado.
UpdateIf( IceCream, true, { Quantity: 0 } ) Establece en 0 el valor de la propiedad Quantity de todos los registros del origen de datos. Establecer la cantidad para todos en 0.

El origen de datos IceCream se ha modificado.

Paso a paso

  1. Importe o cree una colección denominada Inventory y muéstrela en una galería, como se describe en el artículo sobre la visualización de datos en una galería.

  2. Asigne el nombre ProductGallery a la galería.

  3. Agregue un control deslizante llamado UnitsSold y establezca su propiedad Max en esta expresión:
    ProductGallery.Selected.UnitsInStock

  4. Agregue un botón y establezca su propiedad OnSelect en esta fórmula:
    UpdateIf(Inventory, ProductName = ProductGallery.Selected.ProductName, {UnitsInStock:UnitsInStock-UnitsSold.Value})

  5. Presione F5, seleccione un producto de la galería, especifique un valor con el control deslizante y, a continuación, seleccione el botón.

    El número de unidades en existencias del producto se reduce en la cantidad especificada.