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

Descrição

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 All para atualizar todas as cópias de um registro, senão, 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, essas funções não podem ser delegadas. Somente a primeira parte da fonte de dados será recuperada, em seguida, a função é aplicada. O resultado pode não representar a história completa. Um ponto azul aparecerá no momento da criação para lembrá-lo sobre essa limitação e sugerir mudar para alternativas delegáveis onde for possível. Para obter mais informações, consulte a visão geral da delegação.

Sintaxe

Update( DataSource, RegistroAntigo, RegistroNovo [, All ] )

  • DataSource – obrigatório. A fonte de dados que contém o registro que você deseja substituir.

  • RegistroAntigo – obrigatório. O registro para substituir.

  • RegistroNovo – 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.

  • All – opcional. Em uma coleção, o mesmo registro pode aparecer mais de uma vez. Especifique o argumento All para remover todas as cópias do registro.

UpdateIf( DataSource, Condição1, RegistroModificado1 [, Condição2, RegistroModificado2, ... ] )

  • 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.

  • RegistrosModificados - 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 Sorvete e ela começa com os dados nessa tabela:

Fórmula Descrição Resultado
Update( Sorvete,
First( Filter( Sorvete, Sabor="Chocolate" ) ), { ID: 1, Sabor: "Menta Chocolate", Quantidade:150 } )
Substitui um registro da fonte de dados.

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

A fonte de dados Sorvete foi modificada.
Update( Sorvete,
First( Filter( Sorvete, Sabor="Morango" ) ),
{ ID: 3, Sabor: "Morango Espiral"})
Substitui um registro da fonte de dados. A propriedade de Quantidade ainda não foi fornecida no registro de substituição, portanto, a mesma retornará em branco no resultado.

A fonte de dados Sorvete foi modificada.
UpdateIf( Sorvete, true, { Quantidade: 0 } ) Define o valor da propriedade Quantidade em todos os registros na fonte de dados como 0.

A fonte de dados Sorvete 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 máxima para essa expressão:
    ProductGallery.Selected.UnitsInStock

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