Funções Update e UpdateIf

Aplica-se a: Aplicativos de tela Aplicativos baseados em modelo

Registros de atualizações em uma fonte de dados.

Description

Função Update

Use a função Update para substituir um registro inteiro em uma fonte de dados. Por outro lado, as funções UpdateIf e Patch modificam um ou mais valores em um registro, sem alterar os demais valores.

Em uma coleção, todo o registro deve ser correspondente. As coleções permitem registros duplicados, portanto, diversos registros podem ser correspondentes. Você pode usar o argumento RemoveFlags.All para atualizar todas as cópias de um registro, caso contrário, somente uma cópia do registro será atualizada.

Se a fonte de dados gerar um valor de coluna automaticamente, o valor da coluna deve ser reafirmado.

Função UpdateIf

Use a função UpdateIf para modificar um ou mais valores em um ou mais registros que correspondam a uma ou mais condições. A condição pode ser qualquer fórmula que resulta em verdadeiro ou falso e faça referência a colunas da fonte de dados pelo nome. A função avalia a condição para cada registro e modifica registros para que o resultado seja verdadeiro.

Para especificar uma modificação, use um registro de alteração que contenha os novos valores de propriedades. Se você fornecer essa alteração de registro embutida com chaves, as fórmulas de propriedade podem fazer referência a propriedades do registro que está sendo modificado. Você pode usar esse comportamento para modificar os registros com base em uma fórmula.

Semelhante ao UpdateIf, você também pode usar a função Patch para alterar colunas específicas de um registro sem afetar outras colunas.

Tanto a Update quanto a UpdateIf retornam a fonte de dados modificadas como uma tabela. Você deve usar a função em uma fórmula de comportamento.

Delegação

Quando usadas com uma fonte de dados, estas funções não podem ser delegadas. Somente a primeira parte da fonte de dados será recuperada e então a função será aplicada. Esse resultado pode não representar a situação completa. Um aviso pode aparecer no momento da criação para lembrar você dessa limitação.

Suporte à delegação (Experimental)

O suporte à delegação para UpdateIf e RemoveIf agora está em Versão Prévia Experimental (padrão OFF) para fontes de dados compatíveis. Se uma fonte de dados não for compatível com esse recurso, o Power Apps agora enviará uma consulta ao servidor e recuperará todos os dados que correspondam à expressão do filtro até o máximo de 500, 2.000 ou o tamanho da página de dados. Em seguida, ele atualizará esses registros e enviará cada um de volta ao servidor para ser atualizado.

Sintaxe

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

  • DataSource - obrigatório. A fonte de dados que contém o registro que você deseja substituir.
  • OldRecord - obrigatório. O registro para substituir.
  • NewRecord - obrigatório. O registro de substituição. Isso não é um registro de alteração. Todo o registro é substituído e as propriedades ausentes contém em branco.
  • RemoveFlags.All – Opcional. Em uma coleção, o mesmo registro pode aparecer mais de uma vez. Especifique o argumento RemoveFlags.All para atualizar todas as cópias do registro.

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

  • DataSource - obrigatório. A fonte de dados que contém o registro ou os registros que você deseja modificar.
  • Condition(s) - obrigatório. Uma fórmula avaliada como verdadeira para o registro ou os registros que você deseja modificar. Você pode usar nomes de coluna de DataSource na fórmula.
  • ChangeRecord(s) - obrigatório. Para cada condição correspondente, um registro de alteração dos novos valores de propriedades é aplicado aos registros do DataSource que satisfazem a condição. Ao fornecer o registro embutido usando chaves, você pode usar os valores de propriedades do registro existente nas fórmulas de propriedade.

Exemplos

Nesses exemplos, você substituirá ou modificará registros em uma fonte de dados chamada IceCream e ela começa com os dados nessa tabela:

Exemplo IceCream.

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

A fonte de dados IceCream foi modificada.
UpdateIf( IceCream, Quantity > 175, { Quantity: Quantity + 10 } ) Modifica os registros cuja Quantidade é superior a 175. O campo Quantidade é incrementado em 10, os demais campos não são modificados. Modificar registros.

A fonte de dados IceCream foi modificada.
Update( IceCream,
First( Filter( IceCream, Flavor="Strawberry" ) ),
{ ID: 3, Flavor: "Strawberry Swirl"} )
Substitui um registro da fonte de dados. A propriedade Quantity ainda não foi fornecida no registro de substituição, portanto, a mesma retornará em branco no resultado. Substituir o registro quando a quantidade não for fornecida.

A fonte de dados IceCream foi modificada.
UpdateIf( IceCream, true, { Quantity: 0 } ) Define o valor da propriedade Quantity em todos os registros na fonte de dados como 0. Definir a quantidade de todos como 0.

A fonte de dados IceCream foi modificada.

Passo a passo

  1. Importe ou crie uma coleção chamada Inventário como o primeiro subprocedimento, para isso, leia o artigo Como mostrar texto e imagens em uma galeria.

  2. Nomeie a galeria de ProductGallery.

  3. Adicione um controle deslizante chamado UnitsSolde defina a propriedade Max para essa expressão:
    ProductGallery.Selected.UnitsInStock

  4. Adicione um botão e defina a propriedade OnSelect para esta fórmula:
    UpdateIf(Inventory, ProductName = ProductGallery.Selected.ProductName, {UnitsInStock:UnitsInStock-UnitsSold.Value})

  5. Pressione F5, selecione um produto na galeria, especifique um valor com o controle deslizante e, em seguida, selecione o botão.

    O número de unidades em estoque do produto especificado diminuirá para corresponder à quantidade que você especificou.