Funcións Update e UpdateIf

Aplícase a: Aplicacións de lenzo Aplicacións baseadas en modelos

Actualiza rexistros nunha orixe de datos.

Descripción

Función Update

Use a función Update para substituír un rexistro enteiro nunha orixe de datos. En contraste, as funcións UpdateIf e Patch modifican un ou varios valores nun rexistro, deixando os outros valores en solitario.

Para unha colección, o rexistro completo debe coincidir. As coleccións permiten rexistros duplicados, polo que poden coincidir varios rexistros. Podes usar o argumento RemoveFlags.All para actualizar todas as copias dun rexistro; en caso contrario, só se actualiza unha copia do rexistro.

Se a orixe de datos xera automaticamente o valor dunha columna, o valor desa columna debe reafirmarse.

Función UpdateIf

Use a función UpdateIf para modificar un ou varios valores nun ou máis rexistros que coincidan cunha ou varias condicións. A condición pode ser calquera fórmula que dea como resultado verdadeiro ou falso e pode facer referencia a columnas da orixe de datos polo seu nome. A función avalía a condición de cada rexistro e modifica calquera rexistro para o que o resultado sexa verdadeiro.

Para especificar unha modificación, use un rexistro de cambios que conteña novos valores de propiedade. Se fornece este rexistro de cambios entre liñas con chaves, as fórmulas de propiedades poden facer referencia ás propiedades do rexistro que se están modificando. Pode empregar este comportamento para modificar rexistros baseándose nunha fórmula.

De xeito semellante a UpdateIf, tamén pode empregar a función Patch para cambiar columnas específicas dun rexistro sen afectar a outras columnas.

Tanto Update como UpdateIf devolven a orixe de datos modificada como unha táboa. Debe usar estas funcións nunha fórmula de comportamento.

Delegación

Cando se usa cun orixe de datos, estas funcións non se poden delegar. Só se recuperará a primeira parte da orixe de datos e logo a función aplicada. Isto pode non representar a historia completa. É posible que apareza unha advertencia no momento da creación para lembrarche esta limitación.

Apoio á delegación (experimental)

A compatibilidade de delegación para UpdateIf e RemoveIf agora está na Vista previa experimental (desactivada por defecto) para fontes de datos que o admitan. Se un orixe de datos non admite esta función, Power Apps agora enviará unha consulta ao servidor e recuperará todos os datos que coincidan coa expresión do filtro ata o máximo de 500, 2000 ou o tamaño da páxina de datos. A continuación, actualizará eses rexistros e enviará cada un ao servidor para que se actualice.

Sintaxe

Actualizar( DataSource, OldRecord, NewRecord [, Eliminar bandeiras. Todos ] )

  • DataSource – Obrigatorio. A orixe de datos que contén o rexistro que desexa substituír.
  • OldRecord – Obrigatorio. O rexistro que hai que substituír.
  • NewRecord – Obrigatorio. O rexistro de substitución. Non é un rexistro de cambios. Substitúese o rexistro completo e as propiedades que faltan conterán en branco.
  • RemoveFlags.All – Opcional. Nunha colección, o mesmo rexistro pode aparecer máis dunha vez. Especifique o argumento RemoveFlags.All para actualizar todas as copias do rexistro.

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

  • DataSource – Obrigatorio. A orixe de datos que contén o rexistro ou rexistros que desexa modificar.
  • Condition(s) – Obrigatorio. Unha fórmula que avalía se é verdadeiro para o rexistro ou os rexistros que quere modificar. Pode usar nomes de columna de DataSource na fórmula.
  • ChangeRecord(s) - Obrigatorio. Para cada condición correspondente, un rexistro de cambios dos novos valores de propiedade para aplicar aos rexistros de DataSource que satisfagan a condición. Se fornece o rexistro entre liñas usando chaves, os valores de propiedade do rexistro existente pódense usar nas fórmulas de propiedade.

Exemplos

Nestes exemplos, subtituirá ou modificará rexistros nunha orixe de datos chamada IceCream e iso comeza cos datos desta táboa:

Exemplo de Icecream.

Fórmula Descripción Resultado
Update( IceCream,
First( Filter( IceCream, Flavor="Chocolate" ) ), { ID: 1, Flavor: "Mint Chocolate", Quantity:150 } )
Subtitúe un rexistro da orixe de datos. Substitúe un rexistro.

A orixe de datos IceCream modificouse.
UpdateIf( IceCream, Quantity > 175, { Quantity: Quantity + 10 } ) Modifica os rexistros que teñen unha Cantidade que é maior que 175. O campo Quantity increméntase en 10 e non se modifican outros campos. Modificar rexistros.

A orixe de datos IceCream modificouse.
Update( IceCream,
First( Filter( IceCream, Flavor="Strawberry" ) ),
{ ID: 3, Flavor: "Strawberry Swirl"} )
Subtitúe un rexistro da orixe de datos. A propiedade Quantity non foi fornecida no rexistro de substitución, así que a propiedade está en branco no resultado. Substitúe o rexistro cando non se proporcione a cantidade.

A orixe de datos IceCream modificouse.
UpdateIf( IceCream, true, { Quantity: 0 } ) Define o valor da propiedade Quantity para todos os rexistros da orixe de datos en 0. Establece a cantidade para todos en 0.

A orixe de datos IceCream modificouse.

Paso a paso

  1. Importe ou cree unha colección nomeada Inventory e móstrea nunha galería como Amosar datos nunha galería describe.

  2. Nomee á galería ProductGallery.

  3. Engada un control deslizante chamado UnitsSold e estableza a súa propiedade Max nesta expresión:
    ProductGallery.Selected.UnitsInStock

  4. Engada un botón e axuste a súa propiedade OnSelect nesta fórmula:
    UpdateIf(Inventory, ProductName = ProductGallery.Selected.ProductName, {UnitsInStock:UnitsInStock-UnitsSold.Value})

  5. Pulse F5, seleccione un produto na galería, especifique un valor co control deslizante e logo seleccione o botón.

    O número de unidades en existencias para o produto que especificou diminúe na cantidade que especificou.