Daten flexibel und gezielt verändern
Die Patch()-Funktion ist ein zentrales Werkzeug in Power Fx, wenn es darum geht, Datenquellen zu aktualisieren oder neue Datensätze hinzuzufügen, ohne die gesamte Datenstruktur neu laden zu müssen. Besonders in Canvas Apps sorgt Patch() für maximale Kontrolle bei der Datenmanipulation. Ob SharePoint, Dataverse oder SQL – die Funktion bietet eine einheitliche Methode zum Schreiben von Daten.
Syntax erklärt: Aufbau der Patch()-Funktion
Die Grundsyntax lautet:
Patch(DataSource, BaseRecord, ChangeRecord1 [, ChangeRecord2, ...])
Parameter:
-
DataSource
: Die Datenquelle, die geändert werden soll. -
BaseRecord
: Der Datensatz, der aktualisiert oder als Vorlage verwendet wird. -
ChangeRecord
: Ein oder mehrere Datensätze, die die zu ändernden oder hinzuzufügenden Felder enthalten.
Alternativ, für das Erstellen eines neuen Datensatzes:
Patch(DataSource, Defaults(DataSource), { Field1: Value1, Field2: Value2 })
Dieser Aufruf erzeugt einen neuen Datensatz in der angegebenen Datenquelle. Mit Defaults(DataSource) wird ein leerer Standarddatensatz erzeugt, der als Vorlage dient. Anschließend werden die angegebenen Werte in diesem neuen Datensatz gesetzt und gespeichert. Diese Methode eignet sich besonders für Formularanwendungen, bei denen Benutzer neue Einträge erstellen möchten.
Patch in Action
// Beispiel: Update eines bestehenden Kontakts in einer SharePoint-Liste "Kontakte"
Patch(
Kontakte,
LookUp(Kontakte, ID = 5), // BaseRecord: Datensatz mit ID 5
{
Vorname: "Max",
Nachname: "Muster",
Email: "max.muster@example.com"
}
)
// Beispiel: Neuen Datensatz hinzufügen
Patch(
Kontakte,
Defaults(Kontakte), // BaseRecord: Standardwert für neuen Datensatz
{
Vorname: "Anna",
Nachname: "Beispiel",
Email: "anna.beispiel@example.com"
}
)
- Update: Der Datensatz mit ID = 5 in der SharePoint-Liste Kontakte wird mit neuen Werten für Vorname, Nachname und Email überschrieben.
- Erstellen: Ein neuer Datensatz mit den angegebenen Feldern wird in der Liste Kontakte erstellt, basierend auf den Standardwerten der Datenquelle.
Die Patch()-Funktion zeigt ihre volle Stärke in der Kombination mit weiteren Power Fx-Funktionen:
- With(): Zur Zwischenspeicherung komplexer Berechnungen oder Bedingungen, wodurch Redundanz vermieden und die Lesbarkeit verbessert wird.
- If(): Ermöglicht bedingte Datenänderungen. Beispiel: Nur wenn ein Kontrollfeld einen bestimmten Wert hat, wird gepatcht.
- IsBlank(): Für Validierungen, z.B. um sicherzustellen, dass Pflichtfelder nicht leer sind.
- FormControls (z.B. TextInput.Text): Die Werte aus Benutzereingaben können direkt übergeben werden, was dynamische und interaktive Formularlogik ermöglicht.
Die Patch()-Funktion ist essenziell für jede Power Platform App, die Daten schreibt. Ihre Vielseitigkeit, Kombinierbarkeit mit Kontroll- und Logikfunktionen und ihre direkte Wirkung auf Datenquellen machen sie zu einem unverzichtbaren Werkzeug effizienter, robuster und nutzerzentrierter Canvas Apps.
Mehrere Datensätze gleichzeitig effizient patchen
In Power Apps stoßen viele früher oder später auf die Herausforderung, mehrere Datensätze in einer Dataverse-Tabelle gleichzeitig zu aktualisieren. Dabei stellt sich oft die Frage: Wie mache ich das am besten, ohne jeden einzelnen Datensatz einzeln patchen zu müssen? Die Antwort darauf liegt in der Kombination von UpdateIf
, DropColumns
und Patch
.
Power Apps |
Patch(
DeineTabelle,
DropColumns(
UpdateIf(
DeineTabelle,
Status = 'Status (DeineTabelle)'.Inactive,
{Status: 'Status (DeineTabelle)'.Active}
),
'Created By',
'Created By (Delegate)',
'Modified By',
'Modified By (Delegate)',
'Owning User',
Owner
)
)
Was auf den ersten Blick komplex wirkt, ist im Kern eine elegante Lösung, um eine ganze Gruppe von Datensätzen effizient zu aktualisieren. Die Funktion tut Folgendes: Zunächst werden mit UpdateIf alle Kontakte aus deiner Tabelle gefiltert, deren Status als „Inactive“ markiert ist. Diese werden in einem Schritt auf den Status „Active“ gesetzt. Das Besondere dabei: UpdateIf gibt direkt eine Collection der betroffenen und aktualisierten Datensätze zurück. Bevor diese Collection jedoch mit Patch zurück in die Datenquelle geschrieben wird, sorgt DropColumns dafür, dass schreibgeschützte Systemfelder wie „Created By“ oder „Owner“ entfernt werden. Diese Felder können nicht gepatcht werden und würden sonst zu Fehlern führen.

Der Clou liegt schließlich in der Verwendung von Patch auf die gesamte Collection – das bedeutet, dass alle Änderungen in einem einzigen Vorgang gespeichert werden. Kein Schleifen, kein mehrfaches Patchen – einfach ein sauberer, performanter Batch-Update. Diese Technik ist nicht nur effizient, sondern auch gut skalierbar – besonders bei Anwendungen mit vielen Benutzeraktionen oder großen Datenmengen. Wer Power Fx sauber nutzen möchte, sollte sich unbedingt mit diesem Pattern vertraut machen.