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 per le deleghe
Solo alcune fonti dati supportano UpdateIf. Se un'origine dati non supporta questa funzionalità, Power Apps invierà ora una query al server e recupererà tutti i dati che corrispondono all'espressione del filtro fino a un massimo di 500 o 2.000 record o le dimensioni della pagina dei 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.
- RecordPrecedente: obbligatorio. Il record da sostituire.
- RecordNuovo: 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, ... ] )
- OrigineDati: 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:
Formula | Descrizione | Risultato |
---|---|---|
Update( IceCream, First( Filter( IceCream, Flavor="Chocolate" ) ), { ID: 1, Flavor: "Mint Chocolate", Quantity:150 } ) |
Sostituisce un record dell'origine dati. | 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. | 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. | 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. | L'origine dati IceCream è stata modificata. |
Procedura dettagliata
Importa o crea una raccolta denominata Inventory e visualizzala in una raccolta come illustrato nella sezione Visualizzare dati in una raccolta.
Assegna alla raccolta il nome ProductGallery.
Aggiungi un dispositivo di scorrimento denominato UnitsSolde imposta la relativa proprietà Max con questa espressione:
ProductGallery.Selected.UnitsInStockAggiungi un pulsante e impostane la proprietà OnSelect su questa formula:
UpdateIf(Inventory, ProductName = ProductGallery.Selected.ProductName, {UnitsInStock:UnitsInStock-UnitsSold.Value})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.