Funções Update e UpdateIf no Power Apps

Atualiza os registos numa origem de dados.

Descrição

Função Update

Utilize a função Update para substituir um registo completo numa origem de dados. Em contrapartida, as funções UpdateIf e Patch modificam um ou mais valores num registo sem afetar os outros valores.

Numa coleção, todo o registo tem de corresponder. As coleções permitem duplicar registos, pelo que vários registos podem ter correspondência. Pode utilizar o argumento Tudo para atualizar todas as cópias de um registo. Caso contrário, apenas uma cópia do registo é atualizada.

Se a origem de dados gerar o valor de uma coluna automaticamente, o valor dessa coluna terá de ser reafirmado.

Função UpdateIf

Utilize a função UpdateIf para modificar um ou mais valores num ou mais registos que correspondem a uma ou mais condições. Cada condição pode ser uma fórmula que resulta num valor true ou false e pode referenciar as colunas da origem de dados por nome. A função avalia a condição de cada registo e modifica qualquer registo para o qual o resultado seja true.

Para especificar uma modificação, utilize um registo de alteração com novos valores de propriedade. 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. Pode utilizar este comportamento para modificar registos com base numa fórmula.

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.

Ambas as funções Update e UpdateIf devolvem a origem de dados modificada como uma tabela. Tem de utilizar uma ou outra função numa fórmula de comportamento.

Delegação

Quando utiliza com uma origem de dados, estas funções não podem ser delegadas. Só será obtida a primeira parte da origem de dados e, em seguida, a função aplicada. O resultado pode não representar o cenário completo. Poderá aparecer um aviso à hora de criação para lembrá-lo desta limitação e para sugerir que mude para alternativas delegáveis sempre que possível. Para mais informações, consulte a descrição geral de delegação.

Sintaxe

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

  • DataSource – Obrigatório. A origem de dados que contém o registo que pretende substituir.
  • OldRecord – Obrigatório. O registo a substituir.
  • NewRecord – Obrigatório. O registo de substituição. Esta operação não é um registo de alteração. É substituído todo o registo e as propriedades em falta estarão em blank.
  • All – Opcional. Numa coleção, o mesmo registo pode aparecer mais do que uma vez. Especifique o argumento Tudo para atualizar todas as cópias do registo.

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

  • DataSource – Obrigatório. A origem de dados que contém um ou mais registos que pretende modificar.
  • Condition(s) – Obrigatório. Uma fórmula que avalia como true um ou mais registos que pretende modificar. Pode utilizar nomes de colunas de DataSource na fórmula.
  • ChangeRecord(s) – Obrigatório. 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. Se fornecer o registo inline com chavetas, poderão ser utilizados valores de propriedade do registo existente nas fórmulas de propriedade.

Exemplos

Nestes exemplos, vai remover um ou mais registos de uma origem de dados denominada IceCream e que começa com os dados nesta tabela:

Fórmula Descrição Resultado
Update( IceCream,
First( Filter( IceCream, Flavor="Chocolate" ) ), { ID: 1, Sabor: "Menta Chocolate", Quantity:150 } )
Substitui um registo da origem de dados.

A origem de dados IceCream foi modificada.
UpdateIf( IceCream, Quantidade > 175, { Quantidade: Quantidade + 10 } ) Modifica registos com Quantidade superior a 175. O campo Quantidade é incrementado em 10 e não é modificado mais nenhum campo.

A origem de dados IceCream foi modificada.
Update( IceCream,
First( Filter( IceCream, Sabor="Morango" ) ),
{ ID: 3, Sabor: "Espiral de Morango"} )
Substitui um registo da origem de dados. A propriedade Quantidade ainda não foi fornecida no registo de substituição, razão pela qual essa propriedade estará blank nos resultados.

A origem de dados IceCream foi modificada.
UpdateIf( IceCream, true, { Quantidade: 0 } ) Define o valor da propriedade Quantidade para todos os registos da origem de dados como 0.

A origem de dados IceCream foi modificada.

Passo a passo

  1. Importe ou crie uma coleção denominada Inventário e exiba-a numa galeria tal como descrito em Mostrar dados numa galeria.

  2. Atribua o nome ProductGallery à galeria.

  3. Adicione um controlo de deslize com o nome UnitsSold e defina a propriedade Max para esta expressão:
    ProductGallery.Selected.UnitsInStock

  4. Adicione um botão e defina a respetiva propriedade OnSelect a esta fórmula:
    UpdateIf(Inventário, 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.

    Ao número de unidades em stock do produto especificado é subtraída a quantidade que especificou.

Nota

Pode indicar-nos as suas preferências no que se refere ao idioma da documentação? Responda a um breve inquérito. (tenha em atenção que o inquérito está em inglês)

O inquérito irá demorar cerca de sete minutos. Não são recolhidos dados pessoais (declaração de privacidade).