Funzioni Update e UpdateIf in PowerAppsUpdate and UpdateIf functions in PowerApps

Aggiornano record in un'origine dati.Updates records in a data source.

DescrizioneDescription

Funzione UpdateUpdate function

Usare la funzione Update per sostituire un record intero in un'origine dati.Use the Update function to replace an entire record in a data source. Le funzioni UpdateIf e Patch modificano uno o più valori in un record, lasciando gli altri valori invariati.In contrast, the UpdateIf and the Patch functions modify one or more values in a record, leaving the other values alone.

In una raccolta, l'intero record deve corrispondere.For a collection, the entire record must match. Le raccolte consentono record duplicati, quindi potrebbero corrispondere più record.Collections allow duplicate records, so multiple records might match. È possibile usare l'argomento All per aggiornare tutte le copie di un record; in caso contrario, viene aggiornata solo una copia del record.You can use the All argument to update all copies of a record; otherwise, only one copy of the record is updated.

Se l'origine dati genera un valore di colonna automaticamente, il valore di tale colonna deve essere riconfermato.If the data source generates a column's value automatically, the value of that column must be reaffirmed.

Funzione UpdateIfUpdateIf function

Usare la funzione UpdateIf per modificare uno o più valori in uno o più record che soddisfano una o più condizioni.Use the UpdateIf function to modify one or more values in one or more records that match one or more conditions. 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.The condition can be any formula that results in a true or false and can reference columns of the data source by name. La funzione valuta la condizione per ogni record e modifica ogni record il cui risultato è true.The function evaluates the condition for each record and modifies any record for which the result is true.

Per specificare una modifica, usare un record di modifiche che contiene i nuovi valori della proprietà.To specify a modification, use a change record that contains new property values. Se si specifica tale record di modifiche inline con parentesi graffe, le formule delle proprietà possono fare riferimento a proprietà del record che si sta modificando.If you provide this change record inline with curly braces, property formulas can reference properties of the record that's being modified. È possibile usare questo comportamento per modificare record basati su una formula.You can use this behavior to modify records based on a formula.

Analogamente a UpdateIf, è anche possibile usare la funzione Patch per modificare colonne specifiche di un record senza influire sulle altre colonne.Similar to UpdateIf, you can also use the Patch function to change specific columns of a record without affecting other columns.

Entrambe le funzioni Update e UpdateIf restituiscono l'origine dati modificata come tabella.Both Update and UpdateIf return the modified data source as a table. È necessario usare una delle funzioni in una formula di comportamento.You must use either function in a behavior formula.

DelegaDelegation

Queste funzioni, quando vengono usate con un'origine dati, non possono essere delegate.When used with a data source, these functions can't be delegated. Solo la prima parte dell'origine dati verrà recuperata e quindi verrà applicata la funzione.Only the first portion of the data source will be retrieved and then the function applied. È possibile che il risultato non rappresenti il processo completo.The result may not represent the complete story. Un punto blu verrà visualizzato in fase di creazione per ricordare questa limitazione e per suggerire il passaggio alle alternative delegabili, ove possibile.A blue dot will appear at authoring time to remind you of this limitation and to suggest switching to delegable alternatives where possible. Per altre informazioni, vedere la panoramica della delega.For more information, see the delegation overview.

SintassiSyntax

Update( OrigineDati, RecordPrecedente, RecordNuovo [, All ] )Update( DataSource, OldRecord, NewRecord [, All ] )

  • OrigineDati: obbligatorio.DataSource – Required. L'origine dati che contiene il record che si vuole sostituire.The data source that contains the record that you want to replace.
  • RecordPrecedente: obbligatorio.OldRecord – Required. Il record da sostituire.The record to replace.
  • RecordNuovo: obbligatorio.NewRecord – Required. Il record di sostituzione.The replacement record. Questo non è un record di modifiche.This isn't a change record. L'intero record viene sostituito e le proprietà mancanti includeranno blank.The entire record is replaced, and missing properties will contain blank.
  • All: facoltativo.All – Optional. In una raccolta, lo stesso record può essere presente più volte.In a collection, the same record may appear more than once. Specificare l'argomento All per rimuovere tutte le copie del record.Specify the All argument to remove all copies of the record.

UpdateIf( OrigineDati, Condizione1, RecordModifiche1 [, Condizione2, RecordModifiche2, ... ] )UpdateIf( DataSource, Condition1, ChangeRecord1 [, Condition2, ChangeRecord2, ... ] )

  • OrigineDati: obbligatorio.DataSource – Required. L'origine dati che contiene il record o i record che si vuole modificare.The data source that contains the record or records that you want to modify.
  • Condizioni: obbligatorio.Condition(s) – Required. Una formula che restituisce true per il record o i record da modificare.A formula that evaluates to true for the record or records that you want to modify. Nella formula è possibile usare nomi di colonna dell'OrigineDati.You can use column names of DataSource in the formula.
  • RecordModifiche: obbligatorio.ChangeRecord(s) - Required. Per ogni condizione corrispondente, un record di modifiche dei valori nuovi della proprietà da applicare ai record dell'OrigineDati che soddisfano la condizione.For each corresponding condition, a change record of new property values to apply to records of DataSource that satisfy the condition. Se si specifica il record inline usando le parentesi graffe, è possibile usare i valori della proprietà del record esistente nelle formule della proprietà.If you provide the record inline using curly braces, property values of the existing record can be used in the property formulas.

EsempiExamples

In questi esempi, verranno sostituiti o modificati record in un'origine dati denominata IceCream che include inizialmente i dati della tabella seguente:In these examples, you'll replace or modify records in a data source that's named IceCream and that starts with the data in this table:

FormulaFormula DescrizioneDescription RisultatoResult
Update( IceCream,
First( Filter( IceCream, Flavor="Chocolate" ) ), { ID: 1, Flavor: "Mint Chocolate", Quantity:150 } )
Update( IceCream,
First( Filter( IceCream, Flavor="Chocolate" ) ), { ID: 1, Flavor: "Mint Chocolate", Quantity:150 } )
Sostituisce un record dell'origine dati.Replaces a record from the data source.

L'origine dati IceCream è stata modificata.The IceCream data source has been modified.
UpdateIf( IceCream, Quantity > 175, { Quantity: Quantity + 10 } )UpdateIf( IceCream, Quantity > 175, { Quantity: Quantity + 10 } ) Modifica record che hanno un valore Quantity maggiore di 150.Modifies records that have a Quantity that is greater than 150. Il campo Quantity viene incrementato di 10 gli altri campi rimangono invariati.The Quantity field is incremented by 10, and no other fields are modified.

L'origine dati IceCream è stata modificata.The IceCream data source has been modified.
Update( IceCream,
First( Filter( IceCream, Flavor="Strawberry" ) ),
{ ID: 3, Flavor: "Strawberry Swirl"} )
Update( IceCream,
First( Filter( IceCream, Flavor="Strawberry" ) ),
{ ID: 3, Flavor: "Strawberry Swirl"} )
Sostituisce un record dell'origine dati.Replaces a record from the data source. La proprietà Quantity non è stata specificata nel record di sostituzione, quindi il risultato della proprietà sarà blank.The Quantity property hasn't been supplied in the replacement record, so that property will be blank in the result.

L'origine dati IceCream è stata modificata.The IceCream data source has been modified.
UpdateIf( IceCream, true, { Quantity: 0 } )UpdateIf( IceCream, true, { Quantity: 0 } ) Imposta il valore della proprietà Quantity di tutti i record dell'origine dati su 0.Sets the value of the Quantity property for all records in the data source to 0.

L'origine dati IceCream è stata modificata.The IceCream data source has been modified.

Procedura dettagliataStep by step

  1. Importare o creare una raccolta denominata Inventory e visualizzarla in una raccolta come illustrato in Show data in a gallery (Visualizzare dati in una raccolta).Import or create a collection named Inventory, and show it in a gallery as Show data in a gallery describes.
  2. Nome della raccolta ProductGallery.Name the gallery ProductGallery.
  3. Aggiungere un dispositivo di scorrimento denominato UnitsSolde impostare la relativa proprietà Max con questa espressione:Add a slider named UnitsSold, and set its Max property to this expression:
    ProductGallery.Selected.UnitsInStockProductGallery.Selected.UnitsInStock
  4. Aggiungere un pulsante e impostarne la proprietà OnSelect su questa formula:Add a button, and set its OnSelect property to this formula:
    UpdateIf(Inventory, ProductName = ProductGallery.Selected.ProductName, {UnitsInStock:UnitsInStock-UnitsSold.Value})UpdateIf(Inventory, ProductName = ProductGallery.Selected.ProductName, {UnitsInStock:UnitsInStock-UnitsSold.Value})
  5. Premere F5, selezionare un prodotto nella raccolta, specificare un valore con il dispositivo di scorrimento e quindi selezionare il pulsante.Press F5, select a product in the gallery, specify a value with the slider, and then select the button.

    Al numero di unità di scorta del prodotto specificato viene sottratta la quantità specificata.The number of units in stock for the product you specified decreases by the amount that you specified.