Compartilhar via


Update e UpdateIf funções

Aplica-se a: Aplicativos de tela controlados por modelos

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

Description

Update Função

Use a Update função para substituir um registro inteiro em uma fonte de dados. Por outro lado, as funções e o UpdateIfPatch modificam um ou mais valores em um registro, deixando os outros valores sozinhos.

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.

UpdateIf Função

Use a UpdateIf função 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 a UpdateIf, você também pode usar a função Patch para alterar colunas específicas de um registro sem afetar outras colunas.

Ambos Update e UpdateIf retornem a fonte de dados modificada como uma tabela. Você deve usar a função em uma fórmula de comportamento.

Delegação

Essas funções não delegam a uma fonte de dados. No entanto, UpdateIf e RemoveIf funcionam localmente para simular a delegação até um limite de 500/2000 registros. Eles derrubam progressivamente registros além do limite de não delegação de 500/2000 registros. Os registros que atendem à condição If são coletados. Em geral, um máximo de 500/2000 registros são coletados separadamente e modificados por execução. No entanto, mais registros poderão ser atualizados se o cache de dados local existente for grande, pois a função pode ter acesso a mais registros para avaliação. Somente a parte inicial da fonte de dados será recuperada e, em seguida, a função será aplicada. Isso pode não representar a imagem completa. Um aviso pode aparecer durante a criação para lembrá-lo dessa limitação.

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. O registro inteiro é 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.
  • Condições – 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. Caso várias condições sejam passadas , somente o ChangeRecord relacionado à primeira condição avaliada como true será aplicado.
  • 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 Description Resultado
Update( IceCream,
LookUp( IceCream, Flavor="Chocolate", { ID: 1, Sabor: "Chocolate de Menta", Quantidade:150 } )
Substitui um registro da fonte de dados. Substituir um registro.

A fonte de dados IceCream foi modificada.
UpdateIf( IceCream, Quantidade > 175, { Quantidade: Quantidade + 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,
LookUp( IceCream, Flavor="Strawberry" ),
{ ID: 3, Sabor: "Redemoinho de Morango"} )
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, { Quantidade: 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(Inventário, 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.