Funções Update e UpdateIf no PowerAppsUpdate and UpdateIf functions in PowerApps

Atualiza os registos numa origem de dados.Updates records in a data source.

DescriçãoDescription

Função UpdateUpdate function

Utilize a função Update para substituir um registo completo numa origem de dados.Use the Update function to replace an entire record in a data source. Em contrapartida, as funções UpdateIf e Patch modificam um ou mais valores num registo sem afetar os outros valores.In contrast, the UpdateIf and the Patch functions modify one or more values in a record, leaving the other values alone.

Numa coleção, todo o registo tem de corresponder.For a collection, the entire record must match. As coleções permitem duplicar registos, pelo que vários registos podem ter correspondência.Collections allow duplicate records, so multiple records might match. Pode utilizar o argumento Tudo para atualizar todas as cópias de um registo. Caso contrário, apenas uma cópia do registo é atualizada.You can use the All argument to update all copies of a record; otherwise, only one copy of the record is updated.

Se a origem de dados gerar o valor de uma coluna automaticamente, o valor dessa coluna terá de ser reafirmado.If the data source generates a column's value automatically, the value of that column must be reaffirmed.

Função UpdateIfUpdateIf function

Utilize a função UpdateIf para modificar um ou mais valores num ou mais registos que correspondem a uma ou mais condições.Use the UpdateIf function to modify one or more values in one or more records that match one or more conditions. Cada condição pode ser uma fórmula que resulta num valor verdadeiro ou falso e pode referenciar as colunas da origem de dados por nome.The condition can be any formula that results in a true or false and can reference columns of the data source by name. A função avalia a condição de cada registo e modifica qualquer registo para o qual o resultado seja verdadeiro.The function evaluates the condition for each record and modifies any record for which the result is true.

Para especificar uma modificação, utilize um registo de alteração com novos valores de propriedade.To specify a modification, use a change record that contains new property values. Se fornecer esta alteração de registo inline com chavetas, as fórmulas de propriedade poderão referenciar propriedades do registo que está a ser modificado.If you provide this change record inline with curly braces, property formulas can reference properties of the record that's being modified. Pode utilizar este comportamento para modificar registos com base numa fórmula.You can use this behavior to modify records based on a formula.

Tal como na função UpdateIf, também pode utilizar a função Patch para alterar colunas específicas de um registo sem afetar as outras colunas.Similar to UpdateIf, you can also use the Patch function to change specific columns of a record without affecting other columns.

Ambas as funções Update e UpdateIf devolvem a origem de dados modificada como uma tabela.Both Update and UpdateIf return the modified data source as a table. Tem de utilizar uma ou outra função numa fórmula de comportamento.You must use either function in a behavior formula.

DelegaçãoDelegation

When used with a data source, these functions can't be delegated. Only the first portion of the data source will be retrieved and then the function applied. The result may not represent the complete story. A blue dot will appear at authoring time to remind you of this limitation and to suggest switching to delegable alternatives where possible. For more information, see the delegation overview.

SintaxeSyntax

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

  • DataSource – Necessário.DataSource – Required. A origem de dados que contém o registo que pretende substituir.The data source that contains the record that you want to replace.
  • OldRecord – Necessário.OldRecord – Required. O registo a substituir.The record to replace.
  • NewRecord – Necessário.NewRecord – Required. O registo de substituição.The replacement record. Esta operação não é um registo de alteração.This isn't a change record. É substituído todo o registo e as propriedades em falta estarão em em branco.The entire record is replaced, and missing properties will contain blank.
  • Tudo – Opcional.All – Optional. Numa coleção, o mesmo registo pode aparecer mais do que uma vez.In a collection, the same record may appear more than once. Especifique o argumento Tudo para remover todas as cópias do registo.Specify the All argument to remove all copies of the record.

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

  • DataSource – Necessário.DataSource – Required. A origem de dados que contém um ou mais registos que pretende modificar.The data source that contains the record or records that you want to modify.
  • Condition(s) – Necessário.Condition(s) – Required. Uma fórmula que avalia como verdadeiro um ou mais registos que pretende modificar.A formula that evaluates to true for the record or records that you want to modify. Pode utilizar nomes de colunas de DataSource na fórmula.You can use column names of DataSource in the formula.
  • ChangeRecord(s) – Necessário.ChangeRecord(s) - Required. Para cada condição correspondente, um registo de alteração dos novos valores de propriedade a aplicar aos registos de DataSource que satisfaçam a condição.For each corresponding condition, a change record of new property values to apply to records of DataSource that satisfy the condition. Se fornecer o registo inline com chavetas, poderão ser utilizados valores de propriedade do registo existente nas fórmulas de propriedade.If you provide the record inline using curly braces, property values of the existing record can be used in the property formulas.

ExemplosExamples

Nestes exemplos, vai remover um ou mais registos de uma origem de dados denominada Gelado e que começa com os dados nesta tabela: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 DescriçãoDescription ResultadoResult
Update( Gelado,
First( Filter( Gelado, ="Chocolate" ) ), { ID: 1, Sabor: "Chocolate e Menta", Quantidade:150 } )
Update( IceCream,
First( Filter( IceCream, Flavor="Chocolate" ) ), { ID: 1, Flavor: "Mint Chocolate", Quantity:150 } )
Substitui um registo da origem de dados.Replaces a record from the data source.

A origem de dados Gelado foi modificada.The IceCream data source has been modified.
UpdateIf( Gelado, Quantidade > 175, { Quantidade: Quantidade + 10 } )UpdateIf( IceCream, Quantity > 175, { Quantity: Quantity + 10 } ) Modifica registos com Quantidade superior a 150.Modifies records that have a Quantity that is greater than 150. O campo Quantidade é incrementado em 10 e não é modificado mais nenhum campo.The Quantity field is incremented by 10, and no other fields are modified.

A origem de dados Gelado foi modificada.The IceCream data source has been modified.
Update( Gelado,
First( Filter( Gelado, Sabor="Morango" ) ),
{ ID: 3, Sabor: "Morango"} )
Update( IceCream,
First( Filter( IceCream, Flavor="Strawberry" ) ),
{ ID: 3, Flavor: "Strawberry Swirl"} )
Substitui um registo da origem de dados.Replaces a record from the data source. A propriedade Quantidade ainda não foi fornecida no registo de substituição, razão pela qual essa propriedade estará em branco nos resultados.The Quantity property hasn't been supplied in the replacement record, so that property will be blank in the result.

A origem de dados Gelado foi modificada.The IceCream data source has been modified.
UpdateIf( Gelado, verdadeiro, { Quantidade: 0 } )UpdateIf( IceCream, true, { Quantity: 0 } ) Define o valor da propriedade Quantidade para todos os registos da origem de dados como 0.Sets the value of the Quantity property for all records in the data source to 0.

A origem de dados Gelado foi modificada.The IceCream data source has been modified.

Passo a passoStep by step

  1. Importe ou crie uma coleção denominada Inventárioe exiba-a numa galeria tal como descrito em Mostrar dados numa galeria.Import or create a collection named Inventory, and show it in a gallery as Show data in a gallery describes.
  2. Atribua o nome ProductGallery à galeria.Name the gallery ProductGallery.
  3. Adicione um controlo de deslize com o nome UnitsSold e defina a propriedade Máxima para esta expressão:Add a slider named UnitsSold, and set its Max property to this expression:
    ProductGallery.Selected.UnitsInStockProductGallery.Selected.UnitsInStock
  4. Adicione um botão e defina a respetiva propriedade OnSelect a 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. Prima F5, selecione um produto na galeria, especifique um valor com o controlo de deslize e, em seguida, selecione o botão.Press F5, select a product in the gallery, specify a value with the slider, and then select the button.

    Ao número de unidades em stock do produto especificado é subtraída a quantidade que especificou.The number of units in stock for the product you specified decreases by the amount that you specified.