Funktionen „Update“ und „UpdateIf“

Gilt für: Canvas-Apps Modellgesteuerte Apps

Aktualisieren Datensätze in einer Datenquelle.

Beschreibung

Funktion „Update“

Verwenden Sie die Update-Funktion, um einen gesamten Datensatz in einer Datenquelle zu ersetzen. Im Gegensatz dazu ändern die Funktionen UpdateIf und Patch einen oder mehrere Werte in einem Datensatz, ohne dabei die anderen Werte zu ändern.

Bei einer Sammlung muss der gesamte Datensatz übereinstimmen. Sammlungen lassen doppelte Datensätze zu, sodass mehrere Datensätze übereinstimmen könnten. Sie können das RemoveFlags.All-Argument verwenden, um alle Kopien eines Datensatzes zu aktualisieren; andernfalls wird nur eine Kopie des Datensatzes aktualisiert.

Wenn die Datenquelle den Wert einer Spalte automatisch generiert, muss der Wert dieser Spalte erneut bestätigt werden.

Funktion „UpdateIf“

Verwenden Sie die UpdateIf-Funktion, um einen oder mehrere Werte in einem oder mehreren Datensätzen zu ändern, die mit mindestens einer Bedingung übereinstimmen. 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. Die Funktion wertet die Bedingung für jeden Datensatz aus und bearbeitet jeden Datensatz, für den das Ergebnis true ist.

Um eine Änderung anzugeben, verwenden Sie einen Änderungsdatensatz, der neue Eigenschaftswerte enthält. Wenn Sie diesen Änderungsdatensatz in geschweifte Klammern eingebunden bereitstellen, können Eigenschaftsformeln auf Eigenschaften des Datensatzes verweisen, der bearbeitet wird. Sie können dieses Verhalten verwenden, um Datensätze anhand einer Formel zu ändern.

Ä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.

Sowohl Update als auch UpdateIf geben die geänderte Datenquelle als Tabelle zurück. Sie müssen beide Funktionen in einer Verhaltensformel verwenden.

Stellvertretung

Diese Funktionen können bei Verwendung einer Datenquelle nicht delegiert werden. Nur der erste Teil der Datenquelle wird abgerufen, bevor die Funktion angewendet wird. Dies stellt möglicherweise nicht alles dar. Bei der Dokumenterstellung wird möglicherweise eine Warnung angezeigt, die Sie an diese Einschränkung erinnert.

Delegationsunterstützung (experimentell)

Die Delegationsunterstützung für UpdateIf und RemoveIf befindet sich jetzt in der experimentellen Vorschau (standardmäßig AUS) für Datenquellen, die sie unterstützen. Wenn ein Datenquelle diese Funktion nicht unterstützt, sendet Power Apps jetzt eine Abfrage an den Server und ruft alle Daten ab, die dem Filterausdruck bis zum Maximum von 500, 2.000 oder der Datenseitengröße entsprechen. Anschließend werden diese Datensätze aktualisiert und zur Aktualisierung an den Server zurückgesendet.

Syntax

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

  • DataSource – Erforderlich. Die Datenquelle, die den Datensatz enthält, den Sie ersetzen möchten.
  • OldRecord – Erforderlich. Der zu ersetzende Datensatz.
  • NewRecord – Erforderlich. Der Ersatzdatensatz. Dabei handelt es sich nicht um einen Änderungsdatensatz. Der gesamte Datensatz wird ersetzt, und fehlende Eigenschaften werden als leer angezeigt.
  • RemoveFlags.All – optional. In einer Sammlung wird möglicherweise der gleiche Datensatz mehr als einmal angezeigt. Spezifizieren Sie das Argument RemoveFlags.All, um alle Kopien des Datensatzes zu aktualisieren.

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

  • DataSource – Erforderlich. Die Datenquelle, die den Datensatz bzw. die Datensätze enthält, die Sie ändern möchten.
  • Bedingung(en) - Erforderlich. Eine Formel, die für den Datensatz bzw. die Datensätze, die Sie ändern möchten, true ergibt. Sie können Spaltennamen von DataSource in der Formel verwenden.
  • ChangeRecord(s) – Erforderlich. Für jede entsprechende Bedingung ein Änderungsdatensatz mit neuen Eigenschaftswerten, die auf Datensätze von DataSource angewandt werden, die die Bedingung erfüllen. Wenn Sie den Datensatz in geschweifte Klammern eingebunden bereitstellen, können Eigenschaftswerte des vorhandenen Datensatzes in den Eigenschaftsformeln verwendet werden.

Beispiele

In diesen Beispielen ersetzen oder ändern Sie Datensätze in einer Datenquelle mit dem Namen IceCream, die mit den Daten in dieser Tabelle beginnt:

IceCream-Beispiel

Formel Beschreibung Ergebnis
Update( IceCream,
First( Filter( IceCream, Flavor=„Chocolate“) ), { ID: 1, Flavor: „Mint Chocolate“, Quantity:150 } )
Ersetzt einen Datensatz aus der Datenquelle Datensatz ersetzen

Die IceCream-Datenquelle wurde geändert.
UpdateIf( IceCream, Quantity > 175, { Quantity: Quantity + 10 } ) Ändert Datensätze, bei der Quantity größer als 175 ist. Das Feld Quantity wird um 10 erhöht, und es werden keine anderen Felder geändert. Datensätze ändern

Die IceCream-Datenquelle wurde geändert.
Update( IceCream,
First( Filter( IceCream, Flavor=„Strawberry“) ),
{ ID: 3, Flavor: „Strawberry Swirl“} )
Ersetzt einen Datensatz aus der Datenquelle Die Quantity-Eigenschaft wurde im Ersatzdatensatz nicht bereitgestellt. Diese Eigenschaft bleibt im Ergebnis also leer. Datensatz ersetzen, wenn Menge nicht geliefert

Die IceCream-Datenquelle wurde geändert.
UpdateIf( IceCream, true, { Quantity: 0 } ) Legt den Wert für die Eigenschaft Quantity für alle Datensätze in der Datenquelle auf 0 fest. Menge für alle auf 0 setzen

Die IceCream-Datenquelle wurde geändert.

Schritt für Schritt

  1. Importieren oder erstellen Sie eine Sammlung mit dem Namen Inventory und zeigen Sie diese in einem Katalog an, wie unter Anzeigen von Daten in einem Katalog beschrieben wird.

  2. Nennen Sie den Katalog ProductGallery.

  3. Fügen Sie einen Schieberegler mit dem Namen UnitsSold hinzu, und legen Sie dessen Max-Eigenschaft auf diesen Ausdruck fest:
    ProductGallery.Selected.UnitsInStock

  4. Fügen Sie eine Schaltfläche hinzu und legen Sie ihre OnSelect Eigenschaft auf diese Formel fest:
    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.

    Die Anzahl der Einheiten des von Ihnen angegebenen Produkts im Lager sinkt um die Anzahl, die Sie angegeben haben.