Funktion „Patch“ in PowerAppsPatch function in PowerApps

Ändert oder erstellt einen oder mehrere Datensätze in einer Datenquelle oder verbindet Datensätze außerhalb einer Datenquelle.Modifies or creates one or more records in a data source, or merges records outside of a data source.

Verwenden Sie die Funktion Patch, um Datensätze in komplexen Situationen zu ändern, etwa beim Ausführen von Updates, die keinen Benutzereingriff erfordern oder Formulare verwenden, die sich über mehrere Bildschirme erstrecken.Use the Patch function to modify records in complex situations, such as when you perform updates that require no user interaction or use forms that span multiple screens.

In weniger komplexen Situationen können Sie das Steuerelement Bearbeitungsformular verwenden, um die Datensätze in einer Datenquelle auf einfachere Weise zu aktualisieren.In less complex situations, you can use the Edit form control to update records in a data source more easily. Wenn Sie ein Bearbeitungsformular-Steuerelement hinzufügen, geben Sie Benutzern ein Formular an die Hand, das sie ausfüllen und dessen Änderungen sie dann in einer Datenquelle speichern können.When you add an Edit form control, you provide users with a form to fill in and then save the changes to a data source. Weitere Informationen finden Sie unter Grundlegendes zu Datenformularen.For more information, see Understand data forms.

ÜbersichtOverview

Verwenden Sie die Patch-Funktion, um einen oder mehrere Datensätze für die Datenquelle zu ändern.Use the Patch function to modify one or more records of a data source. Die Werte bestimmter Felder lassen sich ohne Auswirkungen auf andere Eigenschaften ändern.The values of specific fields are modified without affecting other properties. Beispielsweise ändert diese Formel die Telefonnummer für einen Kunden mit dem Namen Contoso:For example, this formula changes the phone number for a customer named Contoso:

Patch( Customers, First( Filter( Customers, Name = "Contoso" ) ), { Phone: “1-212-555-1234” } )Patch( Customers, First( Filter( Customers, Name = "Contoso" ) ), { Phone: “1-212-555-1234” } )

Verwenden Sie die Funktion Patch mit der Default-Funktion, um Einträge zu erstellen.Use Patch with the Defaults function to create records. Verwenden Sie dieses Verhalten zum Erstellen eines kombinierten Bildschirms für die Erstellung und Bearbeitung von Datensätzen.Use this behavior to build a single screen for both creating and editing records. Beispielsweise erstellt diese Formel einen Datensatz für einen Kunden mit dem Namen Contoso:For example, this formula creates a record for a customer named Contoso:

Patch( Customers, Defaults( Customer ), { Name: “Contoso” } )Patch( Customers, Defaults( Customer ), { Name: “Contoso” } )

Auch wenn Sie nicht mit einer Datenquelle arbeiten, können Sie die Patch-Funktion zum Zusammenführen von zwei oder mehr Datensätzen nutzen.Even if you're not working with a data source, you can use Patch to merge two or more records. Diese Formel führt beispielsweise zwei Datensätze zu einem zusammen, der sowohl die Telefonnummer als auch den Standort von Contoso angibt:For example, this formula merges two records into one that identifies both the phone number and the location for Contoso:

Patch( { Name: "Contoso", Phone: “1-212-555-1234” }, { Name: "Contoso", Location: “Midtown” } )Patch( { Name: "Contoso", Phone: “1-212-555-1234” }, { Name: "Contoso", Location: “Midtown” } )

BeschreibungDescription

Ändern oder Erstellen eines Datensatzes in einer DatenquelleModify or create a record in a data source

Um diese Funktion mit einer Datenquelle zu verwenden, geben Sie zunächst die Datenquelle an und anschließend einen Basisdatensatz:To use this function with a data source, specify the data source, and then specify a base record:

  • Um einen Datensatz zu ändern, muss der Basisdatensatz aus einer Datenquelle stammen.To modify a record, the base record needs to have come from a data source. Der Basisdatensatz kann aus der Items-Eigenschaft eines Katalogs stammen, in einer Kontextvariablen platziert worden sein oder anderer Herkunft sein.The base record may have come through a gallery's Items property, been placed in a context variable, or come through some other path. Sie sollten den Basisdatensatz jedoch an die Datenquelle zurückverfolgen können.But you should be able to trace the base record back to the data source. Dies ist wichtig, da der Datensatz zusätzliche Informationen enthält, anhand derer Sie ihn wiederfinden können, um ihn zu ändern.This is important as the record will include additional information to help find the record again for modification.
  • Zum Erstellen eines Datensatzes verwenden Sie die Defaults-Funktion und erstellen einen Basisdatensatz mit Standardwerten.To create a record, use the Defaults function to create a base record with default values.

Geben Sie anschließend einen oder mehrere Änderungsdatensätze mit jeweils neuen Eigenschaftswerten an, die die Eigenschaftswerte im Basisdatensatz überschreiben.Then specify one or more change records, each of which contains new property values that override property values in the base record. Änderungsdatensätze werden nacheinander vom Anfang bis zum Ende der Argumenteliste verarbeitet, wobei spätere Eigenschaftswerte frühere Versionen überschreiben.Change records are processed in order from the beginning of the argument list to the end, with later property values overriding earlier ones.

Der Rückgabewert der Patch-Funktion ist der Datensatz, den Sie erstellt oder geändert haben.The return value of Patch is the record that you modified or created. Wenn Sie einen Datensatz erstellt haben, kann der Rückgabewert Eigenschaften enthalten, die die Datenquelle automatisch generiert hat.If you created a record, the return value may include properties that the data source generated automatically.

Wenn Sie eine Datenquelle aktualisieren, können Probleme auftreten.When you update a data source, one or more issues may arise. Verwenden Sie die Errors-Funktion,um Schwierigkeiten zu identifizieren und zu untersuchen, wie unter Working with Data Sources (Arbeiten mit Datenquellen) beschrieben.Use the Errors function to identify and examine issues, as Working with Data Sources describes.

Zu den verwandten Funktionen gehören die Update -Funktion, die Sie verwenden können, um einen vollständiger Datensatz zu ersetzen, und die Collect -Funktion, die Sie zum Erstellen eines Datensatz nutzen können.Related functions include the Update function, which you can use to replace an entire record, and the Collect function, which you can use to create a record. Mithilfe der UpdateIf-Funktion können Sie bestimmte Eigenschaften von mehreren Datensätzen auf der Grundlage einer Bedingung ändern.You can use the UpdateIf function to modify specific properties of multiple records based on a condition.

Ändern oder Erstellen einer Gruppe von Datensätzen in einer DatenquelleModify or create a set of records in a data source

Patch kann außerdem zum Erstellen oder Ändern mehrerer Datensätze mit einem einzigen Aufruf verwendet werden.Patch can also be used to create or modify multiple records with a single call.

Anstelle der Übergabe eines einzelnen Basisdatensatzes kann eine Tabelle mit Basisdatensätze im zweiten Argument angegeben werden.Instead of passing a single base record, a table of base records can be provided in the second argument. Änderungsdatensätze werden ebenfalls in einer Tabelle bereitgestellt, wobei jedem Änderungsdatensatz direkt ein Datenbank-Datensatz entspricht.Change records are provided in a table as well, corresponding one-for-one with the base records. Die Anzahl der Datensätze in jeder Änderungstabelle muss mit der Anzahl der Datensätze in der Basistabelle identisch sein.The number of records in each change table must be the same as the number of records in the base table.

Wenn Sie die Funktion Patch in dieser Weise verwenden, ist der Rückgabewert ebenfalls eine Tabelle, in der jedem Basisdatensatz jeweils direkt ein Änderungsdatensatz entspricht.When using Patch in this manner, the return value is also a table with each record corresponding one-for-one with the base and change records.

Zusammenführen von Datensätzen außerhalb einer DatenquelleMerge records outside of a data source

Geben Sie zwei oder mehr Datensätze an, die Sie zusammenführen möchten.Specify two or more records that you want to merge. Datensätze werden nacheinander vom Anfang bis zum Ende der Argumenteliste verarbeitet, wobei spätere Eigenschaftswerte frühere Versionen überschreiben.Records are processed in order from the beginning of the argument list to the end, with later property values overriding earlier ones.

Patch gibt den zusammengeführten Datensatz zurück. Dessen Argumente oder Datensätze werden in keiner Datenquellen geändert.Patch returns the merged record and doesn't modify its arguments or records in any data sources.

SyntaxSyntax

Ändern oder Erstellen eines Datensatzes in einer DatenquelleModify or create a record in a data source

Patch( DataSource, BaseRecord, ChangeRecord1 [, ChangeRecord2, …Patch( DataSource, BaseRecord, ChangeRecord1 [, ChangeRecord2, … ])])

  • Datenquelle: Erforderlich.DataSource – Required. Die Datenquelle, die den zu ändernden Datensatz enthält oder für die Sie einen Datensatz erstellen möchten.The data source that contains the record that you want to modify or will contain the record that you want to create.
  • BaseRecord: erforderlich.BaseRecord – Required. Der zu ändernde oder zu erstellende Datensatz.The record to modify or create. Wenn der Datensatz aus einer Datenquelle stammt, wird der Datensatz gefunden und geändert.If the record came from a data source, the record is found and modified. Wenn das Ergebnis der Defaults-Funktion verwendet wird, wird ein Datensatz erstellt.If the result of Defaults is used, a record is created.
  • ChangeRecord(s): erforderlich.ChangeRecord(s) – Required. Mindestens ein Datensatz, der Eigenschaften enthält, die für jeden Datensatz im BaseRecord geändert werden sollen.One or more records that contain properties to modify in the BaseRecord. Änderungsdatensätze werden nacheinander vom Anfang bis zum Ende der Argumenteliste verarbeitet, wobei spätere Eigenschaftswerte frühere Versionen überschreiben.Change records are processed in order from the beginning of the argument list to the end, with later property values overriding earlier ones.

Ändern oder Erstellen einer Gruppe von Datensätzen in einer DatenquelleModify or create a set of records in a data source

Patch( DataSource, BaseRecordsTable, ChageRecordTable1, [, ChangeRecordTable2, …Patch( DataSource, BaseRecordsTable, ChageRecordTable1, [, ChangeRecordTable2, … ] )] )

  • Datenquelle: Erforderlich.DataSource – Required. Die Datenquelle mit den zu ändernden Datensätzen oder für die Sie Datensätze erstellen möchten.The data source that contains the records that you want to modify or will contain the records that you want to create.
  • BaseRecordTable: erforderlich.BaseRecordTable – Required. Eine Tabelle mit zu ändernden oder zu erstellenden Datensätzen.A table of records to modify or create. Wenn der Datensatz aus einer Datenquelle stammt, wird der Datensatz gefunden und geändert.If the record came from a data source, the record is found and modified. Wenn das Ergebnis der Defaults-Funktion verwendet wird, wird ein Datensatz erstellt.If the result of Defaults is used, a record is created.
  • ChangeRecordTable(s): erforderlich.ChangeRecordTable(s) – Required. Mindestens eine Tabelle von Datensätzen mit Eigenschaften, die für jeden Datensatz von BaseRecordTable geändert werden sollen.One or more tables of records that contain properties to modify for each record of the BaseRecordTable. Änderungsdatensätze werden nacheinander vom Anfang bis zum Ende der Argumenteliste verarbeitet, wobei spätere Eigenschaftswerte frühere Versionen überschreiben.Change records are processed in order from the beginning of the argument list to the end, with later property values overriding earlier ones.

Zusammenführen von DatensätzenMerge records

Patch( Record1, Record2 [, …] )Patch( Record1, Record2 [, …] )

  • Datensatz(-sätze): erforderlich.Record(s) - Required. Mindestens zwei Datensätze, die Sie zusammenführen möchten.At least two records that you want to merge. Datensätze werden nacheinander vom Anfang bis zum Ende der Argumenteliste verarbeitet, wobei spätere Eigenschaftswerte frühere Versionen überschreiben.Records are processed in order from the beginning of the argument list to the end, with later property values overriding earlier ones.

BeispieleExamples

Ändern oder Erstellen eines Datensatzes (in einer Datenquelle)Modify or create a record (in a data source)

In diesen Beispielen ändern oder erstellen Sie einen Datensatz in einer Datenquelle mit dem Namen IceCream, die Daten in dieser Tabelle enthält und automatisch die Werte in der ID-Spalte generiert:In these examples, you'll modify or create a record in a data source, named IceCream, that contains the data in this table and automatically generates the values in the ID column:

FormelFormula BeschreibungDescription ErgebnisResult
Patch( IceCream,
First( Filter( IceCream, Flavor = "Chocolate" ) ), { Quantity: 400 } )
Patch( IceCream,
First( Filter( IceCream, Flavor = "Chocolate" ) ), { Quantity: 400 } )
Ändert einen Datensatz in der IceCream-Datenquelle:Modifies a record in the IceCream data source:
  • Die ID-Spalte des zu ändernden Datensatzes enthält den Wert 1.The ID column of the record to modify contains the value of 1. (Der Chocolate-Datensatz weist diese ID auf.)(The Chocolate record has that ID.)
  • Der Wert in der Quantity-Spalte ändert sich zu 400.The value in the Quantity column changes to 400.
{ ID: 1, Flavor: "Chocolate", Quantity: 400 }{ ID: 1, Flavor: "Chocolate", Quantity: 400 }

Der Eintrag Chocolate in der IceCream-Datenquelle wurde geändert.The Chocolate entry in the IceCream data source has been modified.
Patch( IceCream, Defaults( IceCream ), { Flavor: “Strawberry” } )Patch( IceCream, Defaults( IceCream ), { Flavor: “Strawberry” } ) Erstellt einen Datensatz in der IceCream-Datenquelle:Creates a record in the IceCream data source:
  • Die ID-Spalte enthält den Wert 3, den die Datenquelle automatisch generiert.The ID column contains the value 3, which the data source generates automatically.
  • Die Spalte Quantity enthält 0, was dem Standardwert für diese Spalte in der IceCream-Datenquelle entspricht,wie von der Defaults-Funktion angegeben.The Quantity column contains 0, which is the default value for that column in the IceCream data source, as the Defaults function specifies.
  • Die Spalte Flavor enthält den Wert Strawberry.The Flavor column contains the value of Strawberry.
{ ID: 3, Flavor: “Strawberry”, Quantity: 0 }{ ID: 3, Flavor: “Strawberry”, Quantity: 0 }

Der Eintrag Strawberry in der IceCream-Datenquelle wurde erstellt.The Strawberry entry in the IceCream data source has been created.

Nachdem die oben genannten Formeln ausgewertet wurden, endet die Datenquelle mit den folgenden Werten:After the previous formulas have been evaluated, the data source ends with these values:

Zusammenführen von Datensätzen (außerhalb einer Datenquelle)Merge records (outside of a data source)

FormelFormula BeschreibungDescription ErgebnisResult
Patch( { Name: "James", Score: 90 }, { Name: "Jim", Passed: true } )Patch( { Name: "James", Score: 90 }, { Name: "Jim", Passed: true } ) Verbindet zwei Datensätze außerhalb einer Datenquelle:Merges two records outside of a data source:
  • Die Werte in der Spalte Name jedes Datensatzes stimmen nicht überein.The values in the Name column of each record don't match. Das Ergebnis enthält den Wert (Jim) im Datensatz, der dem Ende der Argumentliste näher ist, anstelle des Werts (James) im Datensatz, der näher am Anfang ist.The result contains the value (Jim) in the record that's closer to the end of the argument list instead of the value (James) in the record that's closer to the start.
  • Der erste Datensatz enthält eine Spalte (Score), die im zweiten Datensatz nicht vorhanden ist.The first record contains a column (Score) that doesn't exist in the second record. Das Ergebnis enthält diese Spalte mit dem Wert (90).The result contains that column with its value (90).
  • Der zweite Datensatz enthält eine Spalte (Passed), die im ersten Datensatz nicht vorhanden ist.The second record contains a column (Passed) that doesn't exist in the first record. Das Ergebnis enthält diese Spalte mit dem Wert (TRUE).The result contains that column with its value (true).
{ Name: "Jim", Score: 90, Passed: true }{ Name: "Jim", Score: 90, Passed: true }