Funzioni Update e UpdateIf

Si applica a: App canvas App basate su modello

Aggiornano i record in un'origine dati.

Description

Funzione Update

Usa la funzione Update per sostituire un record intero in un'origine dati. Le funzioni UpdateIf e Patch modificano uno o più valori in un record, lasciando gli altri valori invariati.

In una raccolta, l'intero record deve corrispondere. Le raccolte consentono record duplicati, quindi potrebbero corrispondere più record. Puoi usare l'argomento RemoveFlags.All per aggiornare tutte le copie di un record; in caso contrario, viene aggiornata solo una copia del record.

Se l'origine dati genera un valore di colonna automaticamente, il valore di tale colonna deve essere riconfermato.

Funzione UpdateIf

Usa la funzione UpdateIf per modificare uno o più valori in uno o più record che soddisfano una o più condizioni. La condizione può essere una qualsiasi formula che restituisce un valore true o false e può fare riferimento a colonne dell'origine dati in base al nome. La funzione valuta la condizione per ogni record e modifica ogni record il cui risultato è true.

Per specificare una modifica, usa un record di modifiche che contiene i nuovi valori della proprietà. Se specifichi tale record di modifiche inline con parentesi graffe, le formule delle proprietà possono fare riferimento a proprietà del record che stai modificando. Puoi usare questo comportamento per modificare record basati su una formula.

Analogamente a UpdateIf, puoi anche usare la funzione Patch per modificare colonne specifiche di un record senza influire sulle altre colonne.

Entrambe le funzioni Update e UpdateIf restituiscono l'origine dati modificata come tabella. È necessario usare una delle funzioni in una formula di comportamento.

Delega

Quando vengono usate con un'origine dati, queste funzioni non possono essere delegate. Solo la prima parte dell'origine dati verrà recuperata e la funzione applicata. Il risultato potrebbe non rappresentare la storia completa. Al momento della creazione potrebbe apparire un avviso per ricordarti questa limitazione.

Supporto delega (sperimentale)

Il supporto della delega per UpdateIf e RemoveIf è ora in anteprima sperimentale (disattivato per impostazione predefinita) per le origini dati che lo supportano. Se un'origine dati non supporta questa funzione, Power Apps invierà ora una query al server e recupererà tutti i dati che corrispondono all'espressione del filtro fino al massimo di 500, 2.000 o le dimensioni della pagina di dati. Quindi, aggiornerà quei record e li invierà al server per l'aggiornamento.

Sintassi

Update( OrigineDati, RecordPrecedente, RecordNuovo [, RemoveFlags.All ] )

  • DataSource: obbligatorio. L'origine dati che contiene il record che si vuole sostituire.
  • OldRecord: obbligatorio.. Il record da sostituire.
  • NewRecord: obbligatorio. Il record di sostituzione. Questo non è un record di modifiche. L'intero record viene sostituito e le proprietà mancanti includeranno blank.
  • RemoveFlags.All – Facoltativo. In una raccolta, lo stesso record può essere presente più volte. Specifica l'argomento RemoveFlags.All per aggiornare tutte le copie del record.

UpdateIf( OrigineDati, Condizione1, RecordModifiche1 [, Condizione2, RecordModifiche2, ... ] )

  • DataSource: obbligatorio. L'origine dati che contiene il record o i record che vuoi modificare.
  • Condition(s): obbligatorio. Una formula che restituisce true per il record o i record da modificare. Nella formula puoi usare nomi di colonna dell'OrigineDati.
  • ChangeRecord(s): obbligatorio. Per ogni condizione corrispondente, un record di modifiche dei valori nuovi della proprietà da applicare ai record dell'OrigineDati che soddisfano la condizione. Se specifichi il record inline usando le parentesi graffe, puoi usare i valori della proprietà del record esistente nelle formule della proprietà.

Esempi

In questi esempi, verranno sostituiti o modificati record in un'origine dati denominata IceCream che include inizialmente i dati della tabella seguente:

Esempio IceCream.

Formula Descrizione Risultato
Update( IceCream,
First( Filter( IceCream, Flavor="Chocolate" ) ), { ID: 1, Flavor: "Mint Chocolate", Quantity:150 } )
Sostituisce un record dell'origine dati. Sostituisci un record.

L'origine dati IceCream è stata modificata.
UpdateIf( IceCream, Quantity > 175, { Quantity: Quantity + 10 } ) Modifica record che hanno un valore Quantity maggiore di 175. Il campo Quantity viene incrementato di 10 gli altri campi rimangono invariati. Modifica record.

L'origine dati IceCream è stata modificata.
Update( IceCream,
First( Filter( IceCream, Flavor="Strawberry" ) ),
{ ID: 3, Flavor: "Strawberry Swirl"} )
Sostituisce un record dell'origine dati. La proprietà Quantity non è stata specificata nel record di sostituzione, quindi il risultato della proprietà sarà blank. Sostituisci il record quando la quantità non viene fornita.

L'origine dati IceCream è stata modificata.
UpdateIf( IceCream, true, { Quantity: 0 } ) Imposta il valore della proprietà Quantity di tutti i record dell'origine dati su 0. Imposta la quantità per tutti su 0-

L'origine dati IceCream è stata modificata.

Procedura dettagliata

  1. Importa o crea una raccolta denominata Inventory e visualizzala in una raccolta come illustrato nella sezione Visualizzare dati in una raccolta.

  2. Assegna alla raccolta il nome ProductGallery.

  3. Aggiungi un dispositivo di scorrimento denominato UnitsSolde imposta la relativa proprietà Max con questa espressione:
    ProductGallery.Selected.UnitsInStock

  4. Aggiungi un pulsante e impostane la proprietà OnSelect su questa formula:
    UpdateIf(Inventory, ProductName = ProductGallery.Selected.ProductName, {UnitsInStock:UnitsInStock-UnitsSold.Value})

  5. Premi F5, seleziona un prodotto nella raccolta, specifica un valore con il dispositivo di scorrimento e quindi seleziona il pulsante.

    Al numero di unità di scorta del prodotto specificato viene sottratta la quantità specificata.