UpdateFuncións UpdateIf

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

Actualiza rexistros nunha orixe de datos.

Descripción

Update Función

Utiliza a Update función para substituír un rexistro completo nunha fonte de datos. Pola contra, as UpdateIf funcións e Patch modifican un ou máis valores nun rexistro, deixando os outros valores sós.

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.

UpdateIf Función

Use a UpdateIf función para modificar un ou máis valores nun ou máis rexistros que coincidan cunha ou máis 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.

Do mesmo xeito que UpdateIf, tamén pode usar a función Parche para cambiar columnas específicas dun rexistro sen afectar a outras columnas.

Ambos Update e UpdateIf devolven a fonte de datos modificada como táboa. Debe usar estas funcións nunha fórmula de comportamento.

Delegación

Estas funcións non se delegan nunha fonte de datos. Non obstante, UpdateIf e RemoveIf funcionan localmente para simular a delegación ata un límite de 500/2000 rexistros. Reducen progresivamente os rexistros máis aló do límite de non delegación de 500/2000 rexistros. Os rexistros que cumpren a condición de se recollen. Xeralmente, un máximo de 500/2000 rexistros son recollidos por separado e logo modificados por execución. Non obstante, máis rexistros poden ser actualizados se a caché de datos local existente é grande, xa que a función pode ter acceso a máis rexistros para a avaliación. Só se recuperará a parte inicial da fonte de datos e, a continuación, aplicarase a función. Isto pode non representar a imaxe completa. Pode aparecer un aviso durante a redacción para lembrarlle esta limitación.

Sintaxe

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

  • 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. O rexistro enteiro é substituído e as propiedades que faltan conteñen 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.
  • Condicións : 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. No caso de que se superen varias condicións , só se aplica o ChangeRecord relacionado coa primeira condición que se avalía como verdadeira .
  • ChangeRecords - 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( Xeado,
LookUp( 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( Xeado, Cantidade > 175, { Cantidade: Cantidade + 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( Xeado,
LookUp( 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( Xeado, verdadeiro, { Cantidade: 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.