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
Só algunhas fontes de datos admiten UpdateIf. 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 ou 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.
ActualizarSe( DataSource, Condition1, ChangeRecord1 [, Condición2, ChangeRecord2, ... ] )
- DataSource – Obrigatorio. A orixe de datos que contén o rexistro ou rexistros que desexa modificar.
- Condicións – Obrigatoria. 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.
- ChangeRecords : é necesario. 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:
Fórmula | Descripción | Resultado |
---|---|---|
Actualizar( IceCream, First( Filter( IceCream, Flavor="Chocolate" ) ), { ID: 1, Flavor: "Mint Chocolate", Quantity:150 } ) |
Subtitúe un rexistro da orixe de datos. | 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. | A orixe de datos IceCream modificouse. |
Actualizar( 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. | A orixe de datos IceCream modificouse. |
UpdateIf( IceCream, true, { Cantidade: 0 } ) | Define o valor da propiedade Quantity para todos os rexistros da orixe de datos en 0. | A orixe de datos IceCream modificouse. |
Paso a paso
Importe ou cree unha colección nomeada Inventory e móstrea nunha galería como Amosar datos nunha galería describe.
Nomee á galería ProductGallery.
Engada un control deslizante chamado UnitsSold e estableza a súa propiedade Max nesta expresión:
ProductGallery.Selected.UnitsInStockEngada un botón e axuste a súa propiedade OnSelect nesta fórmula:
UpdateIf(Inventario, ProductName = ProductGallery.Selected.ProductName, {UnitsInStock:UnitsInStock-UnitsSold.Value})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.