Funciones Update y UpdateIf en PowerAppsUpdate and UpdateIf functions in PowerApps

Actualiza los registros de un origen de datos.Updates records in a data source.

DescripciónDescription

Función UpdateUpdate function

Use la función Update para reemplazar todo un registro en un origen de datos.Use the Update function to replace an entire record in a data source. En cambio, las funciones UpdateIf y Patch modifican uno o varios valores de un registro, y dejan los demás valores como están.In contrast, the UpdateIf and the Patch functions modify one or more values in a record, leaving the other values alone.

En el caso de una colección, tiene que coincidir todo el registro.For a collection, the entire record must match. Las colecciones permiten registros duplicados, por lo que podrían coincidir varios registros.Collections allow duplicate records, so multiple records might match. Puede usar el argumento All para actualizar todas las copias de un registro; en caso contrario, se actualiza solo una copia del registro.You can use the All argument to update all copies of a record; otherwise, only one copy of the record is updated.

Si el origen de datos genera automáticamente un valor de columna, el valor de esa columna debe confirmarse.If the data source generates a column's value automatically, the value of that column must be reaffirmed.

Función UpdateIfUpdateIf function

Use la función UpdateIf para modificar uno o varios valores de uno o más registros que coincidan con una o varias condiciones.Use the UpdateIf function to modify one or more values in one or more records that match one or more conditions. 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.The condition can be any formula that results in a true or false and can reference columns of the data source by name. La función evalúa la condición para cada registro y modifica los registros cuyo resultado sea true.The function evaluates the condition for each record and modifies any record for which the result is true.

Para especificar una modificación, use un registro de cambio que contenga los nuevos valores de la propiedad.To specify a modification, use a change record that contains new property values. 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.If you provide this change record inline with curly braces, property formulas can reference properties of the record that's being modified. Puede usar este comportamiento para modificar registros en función de una fórmula.You can use this behavior to modify records based on a formula.

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.Similar to UpdateIf, you can also use the Patch function to change specific columns of a record without affecting other columns.

Tanto Update como UpdateIf devuelven el origen de datos modificado como una tabla.Both Update and UpdateIf return the modified data source as a table. Debe usar estas funciones en una fórmula de comportamiento.You must use either function in a behavior formula.

DelegaciónDelegation

Cuando se usa con un origen de datos, estas funciones no se pueden delegar.When used with a data source, these functions can't be delegated. Solo se recuperará la primera parte del origen de datos y, después, se aplicará la función.Only the first portion of the data source will be retrieved and then the function applied. Es posible que el resultado no represente la situación completa.The result may not represent the complete story. Aparecerá un punto azul durante la creación para recordarle esta limitación y sugerirle que cambie a alternativas que puedan delegarse siempre que sea posible.A blue dot will appear at authoring time to remind you of this limitation and to suggest switching to delegable alternatives where possible. Para más información, consulte la introducción a la delegación.For more information, see the delegation overview.

SintaxisSyntax

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

  • DataSource: requerido.DataSource – Required. Origen de datos que contiene el registro que desea reemplazar.The data source that contains the record that you want to replace.
  • OldRecord: requerido.OldRecord – Required. Registro que se va a reemplazar.The record to replace.
  • NewRecord: requerido.NewRecord – Required. Registro de reemplazo.The replacement record. No es un registro de cambio.This isn't a change record. Se reemplaza todo el registro y propiedades que faltan contendrán blank.The entire record is replaced, and missing properties will contain blank.
  • Todo: opcional.All – Optional. En una colección, el mismo registro puede aparecer más de una vez.In a collection, the same record may appear more than once. Especifique el argumento All para quitar todas las copias del registro.Specify the All argument to remove all copies of the record.

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

  • DataSource: requerido.DataSource – Required. Origen de datos que contiene el registro o los registros que desea modificar.The data source that contains the record or records that you want to modify.
  • Condition(s): requerido.Condition(s) – Required. Fórmula que se evalúa como true para el registro o los registros que desea modificar.A formula that evaluates to true for the record or records that you want to modify. Puede usar nombres de columna de DataSource en la fórmula.You can use column names of DataSource in the formula.
  • ChangeRecord(s): requerido.ChangeRecord(s) - Required. 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.For each corresponding condition, a change record of new property values to apply to records of DataSource that satisfy the condition. Si proporciona el registro en línea entre llaves, los valores de propiedad del registro existente pueden utilizarse en las fórmulas de propiedad.If you provide the record inline using curly braces, property values of the existing record can be used in the property formulas.

EjemplosExamples

En estos ejemplos, va a reemplazar o modificar registros de un origen de datos llamado IceCream, que comienza con los datos de esta tabla:In these examples, you'll replace or modify records in a data source that's named IceCream and that starts with the data in this table:

FórmulaFormula DescripciónDescription ResultadoResult
Update( IceCream,
First( Filter( IceCream, Flavor="Chocolate" ) ), { ID: 1, Flavor: "Mint Chocolate", Quantity:150 } )
Update( IceCream,
First( Filter( IceCream, Flavor="Chocolate" ) ), { ID: 1, Flavor: "Mint Chocolate", Quantity:150 } )
Reemplaza un registro del origen de datos.Replaces a record from the data source.

El origen de datos IceCream se ha modificado.The IceCream data source has been modified.
UpdateIf( IceCream, Quantity > 175, { Quantity: Quantity + 10 } )UpdateIf( IceCream, Quantity > 175, { Quantity: Quantity + 10 } ) Modifica los registros con un valor de Quantity superior a 150.Modifies records that have a Quantity that is greater than 150. El campo Quantity se incrementa en 10, y no se modifica ningún otro campo.The Quantity field is incremented by 10, and no other fields are modified.

El origen de datos IceCream se ha modificado.The IceCream data source has been modified.
Update( IceCream,
First( Filter( IceCream, Flavor="Strawberry" ) ),
{ ID: 3, Flavor: "Strawberry Swirl"} )
Update( IceCream,
First( Filter( IceCream, Flavor="Strawberry" ) ),
{ ID: 3, Flavor: "Strawberry Swirl"} )
Reemplaza un registro del origen de datos.Replaces a record from the data source. El registro de reemplazo no contiene la propiedad Quantity, por lo que el valor de esta propiedad será blank en el resultado.The Quantity property hasn't been supplied in the replacement record, so that property will be blank in the result.

El origen de datos IceCream se ha modificado.The IceCream data source has been modified.
UpdateIf( IceCream, true, { Quantity: 0 } )UpdateIf( IceCream, true, { Quantity: 0 } ) Establece en 0 el valor de la propiedad Quantity de todos los registros del origen de datos.Sets the value of the Quantity property for all records in the data source to 0.

El origen de datos IceCream se ha modificado.The IceCream data source has been modified.

Paso a pasoStep by step

  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.Import or create a collection named Inventory, and show it in a gallery as Show data in a gallery describes.
  2. Asigne el nombre ProductGallery a la galería.Name the gallery ProductGallery.
  3. Agregue un control deslizante llamado UnitsSold y establezca su propiedad Max en esta expresión:Add a slider named UnitsSold, and set its Max property to this expression:
    ProductGallery.Selected.UnitsInStockProductGallery.Selected.UnitsInStock
  4. Agregue un botón y establezca su propiedad OnSelect en esta fórmula:Add a button, and set its OnSelect property to this formula:
    UpdateIf(Inventory, ProductName = ProductGallery.Selected.ProductName, {UnitsInStock:UnitsInStock-UnitsSold.Value})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.Press F5, select a product in the gallery, specify a value with the slider, and then select the button.

    El número de unidades en existencias del producto se reduce en la cantidad especificada.The number of units in stock for the product you specified decreases by the amount that you specified.