Funktionerna Update och UpdateIf i PowerAppsUpdate and UpdateIf functions in PowerApps

Uppdaterar poster i en datakälla.Updates records in a data source.

BeskrivningDescription

Funktionen UpdateUpdate function

Använd funktionen Update för att ersätta en hel post i en datakälla.Use the Update function to replace an entire record in a data source. Funktionerna UpdateIf och Patch kan i stället ändra ett eller flera värden i en post och låta de andra värdena vara orörda.In contrast, the UpdateIf and the Patch functions modify one or more values in a record, leaving the other values alone.

I en samling måste hela posten matcha.For a collection, the entire record must match. Samlingar tillåter dubblettposter, så flera poster kanske matchar.Collections allow duplicate records, so multiple records might match. Du kan använda argumentet Alla för att uppdatera alla kopior av en post, annars uppdateras bara en kopia av posten.You can use the All argument to update all copies of a record; otherwise, only one copy of the record is updated.

Om datakällan genererar ett kolumnvärde automatiskt, måste värdet för den kolumnen bekräftas på nytt.If the data source generates a column's value automatically, the value of that column must be reaffirmed.

Funktionen UpdateIfUpdateIf function

Använd funktionen UpdateIf för att ändra ett eller flera värden i en eller flera poster som matchar ett eller flera villkor.Use the UpdateIf function to modify one or more values in one or more records that match one or more conditions. Villkoret kan vara en formel som resulterar i true eller false och kan referera till kolumner i datakällan efter namn.The condition can be any formula that results in a true or false and can reference columns of the data source by name. Funktionen utvärderar villkoret för varje post och ändrar de poster där resultatet är true.The function evaluates the condition for each record and modifies any record for which the result is true.

Ange en ändring genom att använda en ändringspost som innehåller nya egenskapsvärden.To specify a modification, use a change record that contains new property values. Om du skriver den här ändringsposten mellan klammerparenteser kan egenskapsformlerna referera till egenskaper för den post som ändras.If you provide this change record inline with curly braces, property formulas can reference properties of the record that's being modified. Du kan använda det här beteendet för att ändra poster baserat på en formel.You can use this behavior to modify records based on a formula.

Precis som med UpdateIf kan du också använda funktionen Patch för att ändra vissa kolumner i en post utan att påverka övriga kolumner.Similar to UpdateIf, you can also use the Patch function to change specific columns of a record without affecting other columns.

Både Update och UpdateIf returnerar den ändrade datakällan som en tabell.Both Update and UpdateIf return the modified data source as a table. Du måste använda någon av funktionerna i en beteendeformel.You must use either function in a behavior formula.

DelegeringDelegation

When used with a data source, these functions can't be delegated. Only the first portion of the data source will be retrieved and then the function applied. The result may not represent the complete story. A blue dot will appear at authoring time to remind you of this limitation and to suggest switching to delegable alternatives where possible. For more information, see the delegation overview.

SyntaxSyntax

Update( DataSource, OldRecord, NewRecord [, All ] )Update( DataSource, OldRecord, NewRecord [, All ] )

  • DataSource – Krävs.DataSource – Required. Den datakälla som innehåller posten som du vill ersätta.The data source that contains the record that you want to replace.
  • OldRecord – Krävs.OldRecord – Required. Posten som ska ersättas.The record to replace.
  • NewRecord – Krävs.NewRecord – Required. Ersättningsposten.The replacement record. Detta är inte en ändringspost.This isn't a change record. Hela posten ersätts och saknade egenskaper kommer att vara tomma.The entire record is replaced, and missing properties will contain blank.
  • All – Valfritt.All – Optional. I en samling kan samma post visas mer än en gång.In a collection, the same record may appear more than once. Ange argumentet Alla för att ta bort alla kopior av posten.Specify the All argument to remove all copies of the record.

UpdateIf( DataSource, Condition1, ChangeRecord1 [, Condition2, ChangeRecord2, ... ] )UpdateIf( DataSource, Condition1, ChangeRecord1 [, Condition2, ChangeRecord2, ... ] )

  • DataSource – Krävs.DataSource – Required. Den datakälla som innehåller posten eller posterna som du vill ändra.The data source that contains the record or records that you want to modify.
  • Condition(s) – Krävs.Condition(s) – Required. En formel som utvärderar till true för den eller de poster som du vill ändra.A formula that evaluates to true for the record or records that you want to modify. Du kan använda kolumnnamnen för DataSource i formeln.You can use column names of DataSource in the formula.
  • ChangeRecord(s) – Krävs.ChangeRecord(s) - Required. För varje motsvarande villkor kommer en ändringspost för nya egenskapsvärden tillämpas på poster i DataSource som uppfyller villkoret.For each corresponding condition, a change record of new property values to apply to records of DataSource that satisfy the condition. Om du skriver posten inom klammerparenteser kan egenskapsvärden för den befintliga posten användas i egenskapsformlerna.If you provide the record inline using curly braces, property values of the existing record can be used in the property formulas.

ExempelExamples

I det här exemplet ersätter eller ändrar du poster i en datakälla med namnet IceCream som börjar med datan i den här tabellen: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:

FormelFormula BeskrivningDescription ResultatResult
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 } )
Ersätter en post från datakällan.Replaces a record from the data source.

Datakällan IceCream har ändrats.The IceCream data source has been modified.
UpdateIf( IceCream, Quantity > 175, { Quantity: Quantity + 10 } )UpdateIf( IceCream, Quantity > 175, { Quantity: Quantity + 10 } ) Ändrar poster som har en Quantity som är större än 150.Modifies records that have a Quantity that is greater than 150. Fältet Quantity ökas med 10 och inga andra fält ändras.The Quantity field is incremented by 10, and no other fields are modified.

Datakällan IceCream har ändrats.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"} )
Ersätter en post från datakällan.Replaces a record from the data source. Egenskapen Quantity har inte angetts i ersättningsposten, så egenskapen i resultatet blir tom.The Quantity property hasn't been supplied in the replacement record, so that property will be blank in the result.

Datakällan IceCream har ändrats.The IceCream data source has been modified.
UpdateIf( IceCream, true, { Quantity: 0 } )UpdateIf( IceCream, true, { Quantity: 0 } ) Anger värdet för egenskapen Quantity för alla poster i datakällan till 0.Sets the value of the Quantity property for all records in the data source to 0.

Datakällan IceCream har ändrats.The IceCream data source has been modified.

Steg för stegStep by step

  1. Importera eller skapa en samling med namnet Inventory och visa den i ett galleri enligt beskrivningen i Visa data i ett galleri.Import or create a collection named Inventory, and show it in a gallery as Show data in a gallery describes.
  2. Ge galleriet namnet ProductGallery.Name the gallery ProductGallery.
  3. Lägg till ett skjutreglage med namnet UnitsSold och ange egenskapen Max till det här uttrycket:Add a slider named UnitsSold, and set its Max property to this expression:
    ProductGallery.Selected.UnitsInStockProductGallery.Selected.UnitsInStock
  4. Lägg till en knapp och ge dess egenskap OnSelect egenskapen följande formel: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. Tryck på F5, välj en produkt i galleriet, ange ett värde med skjutreglaget och välj sedan knappen.Press F5, select a product in the gallery, specify a value with the slider, and then select the button.

    Antal enheter i lager för den produkt som du har angett minskar med det antal som du har angett.The number of units in stock for the product you specified decreases by the amount that you specified.