Funktionen „Update“ und „UpdateIf“ in PowerAppsUpdate and UpdateIf functions in PowerApps

Aktualisieren Datensätze in einer DatenquelleUpdates records in a data source.

BeschreibungDescription

„Update“-FunktionUpdate function

Verwenden Sie die Update-Funktion, um einen gesamten Datensatz in einer Datenquelle zu ersetzen.Use the Update function to replace an entire record in a data source. Im Gegensatz dazu ändern die Funktionen UpdateIf und Patch einen oder mehrere Werte in einem Datensatz, ohne dabei die anderen Werte zu ändern.In contrast, the UpdateIf and the Patch functions modify one or more values in a record, leaving the other values alone.

Bei einer Sammlung muss der gesamte Datensatz übereinstimmen.For a collection, the entire record must match. Sammlungen lassen doppelte Datensätze zu, sodass mehrere Datensätze übereinstimmen könnten.Collections allow duplicate records, so multiple records might match. Sie können das All-Argument verwenden, um alle Kopien eines Datensatzes zu aktualisieren; andernfalls wird nur eine Kopie des Datensatzes aktualisiert.You can use the All argument to update all copies of a record; otherwise, only one copy of the record is updated.

Wenn die Datenquelle den Wert einer Spalte automatisch generiert, muss der Wert dieser Spalte erneut bestätigt werden.If the data source generates a column's value automatically, the value of that column must be reaffirmed.

„UpdateIf“-FunktionUpdateIf function

Verwenden Sie die UpdateIf-Funktion, um einen oder mehrere Werte in einem oder mehreren Datensätzen zu ändern, die mit mindestens einer Bedingungen übereinstimmen.Use the UpdateIf function to modify one or more values in one or more records that match one or more conditions. Bei der Bedingung kann es sich um jede Formel handeln, die zu TRUE oder FALSE führt und über den Namen auf Spalten der Datenquelle verweisen kann.The condition can be any formula that results in a true or false and can reference columns of the data source by name. Die Funktion wertet die Bedingung für jeden Datensatz aus und bearbeitet jeden Datensatz, für den das Ergebnis TRUE ist.The function evaluates the condition for each record and modifies any record for which the result is true.

Um eine Änderung anzugeben, verwenden Sie einen Änderungsdatensatz, der neue Eigenschaftenwerte enthält.To specify a modification, use a change record that contains new property values. Wenn Sie diesen Änderungsdatensatz in geschweifte Klammern eingebunden bereitstellen, können Eigenschaftenformeln auf Eigenschaften des Datensatzes verweisen, der bearbeitet wird.If you provide this change record inline with curly braces, property formulas can reference properties of the record that's being modified. Sie können dieses Verhalten verwenden, um Datensätze anhand einer Formel zu ändern.You can use this behavior to modify records based on a formula.

Ähnlich wie die UpdateIf-Funktion können Sie auch die Patch-Funktion verwenden, um bestimmte Spalten eines Datensatzes zu ändern, ohne dass sich dies auf andere Spalten auswirkt.Similar to UpdateIf, you can also use the Patch function to change specific columns of a record without affecting other columns.

Sowohl Update als auch UpdateIf geben die geänderte Datenquelle als Tabelle zurück.Both Update and UpdateIf return the modified data source as a table. Sie müssen beide Funktionen in einer Verhaltensformel verwenden.You must use either function in a behavior formula.

DelegierungDelegation

Bei Verwendung mit einer Datenquelle können diese Funktionen nicht delegiert werden.When used with a data source, these functions can't be delegated. Nur der erste Teil der Datenquelle wird abgerufen, und anschließend wird die Funktion angewendet.Only the first portion of the data source will be retrieved and then the function applied. Das Ergebnis ist dann ggf. kein umfassendes Ergebnis.The result may not represent the complete story. Bei der Erstellung wird ein blauer Punkt angezeigt, um Sie an diese Einschränkung zu erinnern und die Umstellung auf delegierbare Alternativen vorzuschlagen, soweit dies möglich ist.A blue dot will appear at authoring time to remind you of this limitation and to suggest switching to delegable alternatives where possible. Weitere Informationen finden Sie unter Grundlagen der Delegierung.For more information, see the delegation overview.

SyntaxSyntax

Update( Datenquelle, AlterDatensatz, NeuerDatensatz [, All ] )Update( DataSource, OldRecord, NewRecord [, All ] )

  • Datenquelle: Erforderlich.DataSource – Required. Die Datenquelle, die den Datensatz enthält, den Sie ersetzen möchten.The data source that contains the record that you want to replace.
  • AlterDatensatz: Erforderlich.OldRecord – Required. Der zu ersetzende Datensatz.The record to replace.
  • NeuerDatensatz: Erforderlich.NewRecord – Required. Der Ersatzdatensatz.The replacement record. Dabei handelt es sich nicht um einen Änderungsdatensatz.This isn't a change record. Der gesamte Datensatz wird ersetzt, und fehlende Eigenschaften werden als blank angezeigt.The entire record is replaced, and missing properties will contain blank.
  • All: Optional.All – Optional. In einer Sammlung wird möglicherweise der gleiche Datensatz mehr als einmal angezeigt.In a collection, the same record may appear more than once. Geben Sie das All-Argument an, um alle Kopien des Datensatzes zu entfernen.Specify the All argument to remove all copies of the record.

UpdateIf( Datenquelle, Bedingung1, Änderungsdatensatz1 [, Bedingung2, Änderungsdatensatz2, ... ] )UpdateIf( DataSource, Condition1, ChangeRecord1 [, Condition2, ChangeRecord2, ... ] )

  • Datenquelle: Erforderlich.DataSource – Required. Die Datenquelle, die den Datensatz bzw. die Datensätze enthält, die Sie ändern möchten.The data source that contains the record or records that you want to modify.
  • Bedingung(en): Erforderlich.Condition(s) – Required. Eine Formel, die für den Datensatz bzw. die Datensätze, die Sie ändern möchten, TRUE ergibt.A formula that evaluates to true for the record or records that you want to modify. Sie können Spaltennamen von Datenquelle in der Formel verwenden.You can use column names of DataSource in the formula.
  • Änderungsdatensatz bzw. -sätze: Erforderlich.ChangeRecord(s) - Required. Für jede entsprechende Bedingung ein Änderungsdatensatz mit neuen Eigenschaftenwerten, die auf Datensätze von Datenquelle angewandt werden, die die Bedingung erfüllen.For each corresponding condition, a change record of new property values to apply to records of DataSource that satisfy the condition. Wenn Sie den Datensatz in geschweifte Klammern eingebunden bereitstellen, können Eigenschaftenwerte des vorhandenen Datensatzes in den Eigenschaftenformeln verwendet werden.If you provide the record inline using curly braces, property values of the existing record can be used in the property formulas.

BeispieleExamples

In diesen Beispielen ersetzen oder ändern Sie Datensätze in einer Datenquelle mit dem Namen IceCream, die mit den Daten in dieser Tabelle beginnt: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 BeschreibungDescription ErgebnisResult
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 } )
Ersetzt einen Datensatz aus der DatenquelleReplaces a record from the data source.

Die Datenquelle IceCream (Eiscreme) wurde geändert.The IceCream data source has been modified.
UpdateIf( IceCream, Quantity > 175, { Quantity: Quantity + 10 } )UpdateIf( IceCream, Quantity > 175, { Quantity: Quantity + 10 } ) Ändert Datensätze, bei der Quantity größer als 150 ist.Modifies records that have a Quantity that is greater than 150. Das Feld Quantity wird um 10 erhöht, und es werden keine anderen Felder geändert.The Quantity field is incremented by 10, and no other fields are modified.

Die Datenquelle IceCream (Eiscreme) wurde geändert.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"} )
Ersetzt einen Datensatz aus der DatenquelleReplaces a record from the data source. Die Eigenschaft Quantity wurde im Ersatzdatensatz nicht bereitgestellt. Diese Eigenschaft bleibt im Ergebnis also blank.The Quantity property hasn't been supplied in the replacement record, so that property will be blank in the result.

Die Datenquelle IceCream (Eiscreme) wurde geändert.The IceCream data source has been modified.
UpdateIf( IceCream, true, { Quantity: 0 } )UpdateIf( IceCream, true, { Quantity: 0 } ) Legt den Wert für die Eigenschaft Quantity für alle Datensätze in der Datenquelle auf 0 fest.Sets the value of the Quantity property for all records in the data source to 0.

Die Datenquelle IceCream (Eiscreme) wurde geändert.The IceCream data source has been modified.

Schritt für SchrittStep by step

  1. Importieren oder erstellen Sie eine Sammlung mit dem Namen Inventory (Lagerbestand), und zeigen Sie diese in einem Katalog an, wie unter Show images and text in a gallery, including gallery selection, sort, and filter (Anzeigen von Bildern und Text in einem Katalog, einschließlich Auswählen, Sortieren und Filtern des Katalogs) beschrieben.Import or create a collection named Inventory, and show it in a gallery as Show data in a gallery describes.
  2. Nennen Sie den Katalog ProductGallery.Name the gallery ProductGallery.
  3. Fügen Sie einen Schieberegler mit dem Namen UnitsSold hinzu, und legen Sie dessen Max-Eigenschaft auf diesen Ausdruck fest:Add a slider named UnitsSold, and set its Max property to this expression:
    ProductGallery.Selected.UnitsInStockProductGallery.Selected.UnitsInStock
  4. Fügen Sie eine Schaltfläche hinzu, und legen Sie ihre Eigenschaft OnSelect auf diese Formel fest: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. Drücken Sie F5, wählen Sie ein Produkt aus dem Katalog aus, geben Sie mit dem Schieberegler einen Wert an, und wählen Sie dann die Schaltfläche aus.Press F5, select a product in the gallery, specify a value with the slider, and then select the button.

    Die Anzahl der Einheiten des von Ihnen angegebenen Produkts im Lager sinkt um die Anzahl, die Sie angegeben haben.The number of units in stock for the product you specified decreases by the amount that you specified.