Sie sehen gerade einen Platzhalterinhalt von YouTube. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.
Mehr InformationenEinstieg
In diesem Artikel lernst du, wie du Variablen in Power Fx gezielt einsetzt – mit Set() für globale Werte und UpdateContext() für screen-lokale Variablen.
Wichtig zu verstehen: Power Fx funktioniert anders als klassische Programmiersprachen. Formeln werden automatisch neu berechnet – ähnlich wie in Excel. Das bedeutet: In vielen Fällen brauchst du gar keine Variablen.
Variablen kommen erst dann ins Spiel, wenn du bewusst einen Zustand speichern möchtest, zum Beispiel für Benutzerinteraktionen, UI-Steuerung oder Zwischenergebnisse.
Genau dafür stehen dir zwei zentrale Funktionen zur Verfügung: Set() für globale Variablen, die in der gesamten App verfügbar sind, und UpdateContext() für lokale Variablen, die nur innerhalb eines Screens gelten.
Wenn du den Überblick über deine Variablen behalten möchtest, kannst du die Ansicht „Variablen“ in der Erstellungsumgebung nutzen. Dort siehst du, wo Variablen verwendet werden und welche Werte sie aktuell haben.
Faustregel: Verwende Variablen nur dann, wenn du wirklich einen Zustand speichern musst. In vielen Fällen ist eine direkte Formel die bessere und wartbarere Lösung.
Set()
Globale Variablen in Power Apps speichern vorübergehende Informationen, wie Ergebnisse von Datenoperationen, und sind auf allen Bildschirmen Deiner App verfügbar. Du erstellst sie mit der Set-Funktion, ohne dass eine explizite Deklaration nötig ist. Diese Variablen aktualisieren sich automatisch, wenn sie sich ändern. Falls sich jedoch die zugrunde liegende Formel ändert, musst Du sie manuell aktualisieren. Beim Schließen der App geht der Wert globaler Variablen verloren und muss neu erstellt werden.
Wichtig: Globale Variablen dürfen nicht denselben Namen wie Sammlungen oder Steuerelemente haben. Du kannst ihnen jedoch denselben Namen wie einer Kontextvariablen geben, indem Du einen Operator zur Mehrdeutigkeitsvermeidung verwendest. Beachte auch, dass die Set-Funktion keinen Rückgabewert hat und innerhalb von Verhaltensformeln verwendet wird.
Set(
varTglBoolean,
!Coalesce(
varTglBoolean,
false
)
)
Set(
varIncrementInteger,
varIncrementInteger + 1
)
Set(
varRecord,
ThisItem
);
Set(
varRecordComboBox,
ComboBox1.Selected
)
UpdateContext()
die UpdateContext-Funktion nutzt du, um Kontextvariablen zu erstellen oder zu aktualisieren. Kontextvariablen sind bildschirmbezogen, ähnlich wie lokale Variablen in anderen Programmiersprachen. Anders als normale Formeln in Power Apps, werden Kontextvariablen nicht automatisch neu berechnet. Das kann manchmal das Erstellen und Verstehen deiner Apps ein bisschen komplizierter machen. Deshalb empfehle ich dir, vorher den Artikel „Arbeiten mit Variablen“ durchzulesen.
Kontextvariablen referenzierst du über ihren Spaltennamen. Hier ein Beispiel:
UpdateContext( { ShowLogo: true } )
Das erstellt eine Kontextvariable „ShowLogo“ mit dem Wert „true“. Diese Variable kannst du dann in deinen Formeln nutzen, zum Beispiel um die Sichtbarkeit eines Bildsteuerelements zu steuern. Diese Variablen behalten ihren Wert, bis du die App schließt.
Wenn du eine Kontextvariable auf einem anderen Bildschirm ändern willst, brauchst du entweder die Navigate-Funktion oder eine globale Variable. Übrigens, die UpdateContext-Funktion hat keinen Rückgabewert und wird nur in Verhaltensformeln verwendet.
UpdateContext(
{
conTglContainer: !Coalesce(
conTglContainer,
false
)
}
)
UpdateContext(
{
varIncrementInteger: varIncrementInteger + 1
}
)
//Varibale erstellen
UpdateContext(
{
varRecord: {
artikelNr: 1,
menge: 10,
einheit: "stück"
}
}
);
//Variable updaten
UpdateContext(
{
varRecord: Patch(
varRecord,
{
menge: 5
}
)
}
)
Collect()
Neben Set() und UpdateContext() gibt es noch eine dritte wichtige Möglichkeit,
Daten zu speichern: Collections.
Collections sind Tabellen, die lokal in der App gespeichert werden und sich besonders gut eignen,
wenn du mit mehreren Datensätzen arbeitest.
PowerApps |
ClearCollect(
colBenutzer,
Filter(
varBenutzer,
Rolle = "User"
)
)
Unterschied zu Set():
Set()speichert einen einzelnen Wert (kann aber auch eine Tabelle enthalten)ClearCollect()erstellt eine echte tabellarische Collection
Wichtig: Collections sind nicht delegierbar. Bei großen Datenquellen werden
nur begrenzte Datensätze geladen.
Welche Datentypen sind in Canvas-Apps wirklich relevant?
Wenn du in einer Canvas-App mit Variablen arbeitest, speicherst du nicht nur einfache Werte wie Text oder Zahlen. In Power Fx können Variablen auch Datumswerte, ganze Datensätze oder sogar komplette Tabellen enthalten. Microsoft kennt zwar noch weitere Datentypen, im Alltag einer Canvas-App begegnen dir aber vor allem diese hier: Text, Zahl, Boolean, Datum/Uhrzeit, Datensatz, Tabelle und Blank.
Text
Text ist der häufigste Datentyp in Canvas-Apps. Du nutzt ihn für Benutzereingaben, Bezeichnungen, IDs, E-Mail-Adressen oder formatierte Ausgaben. Textwerte werden in Power Fx in doppelte Anführungszeichen gesetzt. Auch Hyperlinks, Bilder oder Medien werden intern oft über Text bzw. URI-Strings referenziert.
PowerApps |
Set(varText, "Hallo Welt")
Außerdem wird der Text-Datentyp häufig zur Formatierung von Werten genutzt. Mit der Funktio Text() kannst du Zahlen oder Datumswerte gezielt als Text darstellen, etwa für Währungen, Prozentwerte oder benutzerfreundliche Ausgaben. Das ist besonders wichtig für die Anzeige in Labels oder Formularen.
PowerApps |
Text(9876543210.1, "[$-de-DE]#.##0,00 €", "de-DE")
Auch der GUID-Datentyp wird häufig zur eindeutigen Identifikation von Datensätzen genutzt. Mit der Funktion GUID() kannst du neue globale eindeutige Bezeichner erzeugen oder bestehende GUID-Werte verarbeiten. Das ist besonders wichtig, wenn Datensätze eindeutig referenziert werden müssen, etwa bei Verknüpfungen zwischen Tabellen oder beim Arbeiten mit externen Datenquellen. Bei einigen Abfragen kann es Sinnvoll sein die GUID in einen Text umzuwandeln.
PowerApps |
Set(varText,Text(GUID()))
Zahl
Zahlen brauchst du für Berechnungen, Mengen, Preise oder Zähler. Für Canvas-Apps ist im Alltag vor allem wichtig: Du arbeitest mit numerischen Werten für Rechenoperationen und Vergleiche. Für einen Praxisartikel reicht deshalb meist der Begriff Zahl vollkommen aus.
PowerApps |
Set(
varAnzahl,
10
);
Set(
varPreis,
19.99
)
Boolean
Ein Boolean kennt nur true oder false und eignet sich perfekt für Schalter, Sichtbarkeiten oder Statuswerte. Genau dafür werden Variablen in Canvas-Apps sehr häufig eingesetzt, zum Beispiel um Container ein- oder auszublenden.
PowerApps |
Set(
varIstSichtbar,
true
);
Set(
varIstGleich,
1 = 1
);
Set(
varEnthält,
!IsBlank(
LookUp(
DeineListe,
true
)
)
)
Datum und DateTime
Sobald du mit Terminen, Fristen oder Zeitstempeln arbeitest, kommen Datumswerte ins Spiel. Für Canvas-Apps ist die Unterscheidung wichtig, weil du je nach Anwendungsfall entweder nur ein Datum oder einen exakten Zeitpunkt speichern möchtest.
PowerApps |
Set(
varDatum,
Today()
);
Set(
varZeitstempel,
Now()
)
Datensatz
Ein Datensatz bündelt mehrere zusammengehörige Werte in einem Objekt. Das ist praktisch, wenn du nicht jede Information in eine eigene Variable schreiben willst. Typische Beispiele sind ThisItem, Gallery.Selected oder ein selbst gebauter Record mit mehreren Feldern.
PowerApps |
Set(
varBenutzer,
{
Name: "CodiCoder",
Rolle: "Admin",
Aktiv: true
}
)
Tabelle
Tabellen sind in Canvas-Apps genauso wichtig wie einzelne Werte. Eine Tabelle besteht aus mehreren Datensätzen mit gleicher Struktur. Du arbeitest mit Tabellen zum Beispiel in Galleries, Collections oder bei Ergebnissen von Filter(), Sort() oder ClearCollect().
PowerApps |
Set(
varBenutzer,
Table(
{
Name: "CodiCoder",
Rolle: "Admin",
Aktiv: true
},
{
Name: "ClickiCarla",
Rolle: "User",
Aktiv: true
}
)
)
Hinweis: Auch wenn du Tabellen technisch mit Set() in einer Variablen speichern kannst, ist das in Canvas-Apps nur in bestimmten Fällen sinnvoll. Set() eignet sich eher für einmal berechnete Ergebnisse oder kleine Momentaufnahmen (Snapshots). Sobald du jedoch mit einer Tabelle aktiv arbeiten willst – also Einträge hinzufügen, entfernen oder mehrfach verändern – sind Collect() bzw. ClearCollect() die bessere Wahl, da sie explizit für tabellarische Daten als lokale Collections gedacht sind.
Power Apps |
ClearCollect(
colBenutzer,
{
Name: "CodiCoder",
Rolle: "Admin",
Aktiv: true
},
{
Name: "ClickiCarla",
Rolle: "User",
Aktiv: true
}
)
Wenn möglich solltest du Tabellendaten sogar gar nicht erst zwischenspeichern, sondern direkt mit Formeln wie Filter() oder Sort() arbeiten. Das hält deine App reaktiver und vermeidet typische Probleme wie nicht delegierbare Datenabfragen bei Collections.
Untyped Objects
Ein besonderer Spezialfall in Power Fx sind sogenannte Untyped Objects. Sie entstehen häufig dann, wenn JSON-Daten mit ParseJSON() eingelesen werden, zum Beispiel aus einer API, einem Custom Connector oder einer Power-Automate-Antwort. Anders als ein normaler Record hat ein Untyped Object keine feste, zur Entwurfszeit bekannte Struktur. Dadurch ist es flexibel einsetzbar, erfordert aber auch mehr Sorgfalt, weil Felder und Datentypen erst zur Laufzeit ausgewertet werden.
In der Praxis bedeutet das: Du kannst auf Werte zwar per Punktnotation zugreifen, musst sie aber meist mit Funktionen wie Text(), Value() oder Boolean() explizit in den gewünschten Datentyp umwandeln. Untyped Objects sind deshalb besonders nützlich für dynamische oder unbekannte JSON-Strukturen, aber weniger geeignet für normale, klar definierte App-Daten. Für klassische Canvas-App-Szenarien bleiben typisierte Records und Tabellen in der Regel die bessere und besser lesbare Wahl.
PowerApps |
Set(
varObjectUntyped,
ParseJSON(
JSON(
{
Name: "CodiCoder",
Rolle: "Admin",
Aktiv: true
}
)
)
)
Blank
Ein besonders wichtiger Spezialfall ist Blank. In Power Fx können grundsätzlich alle Datentypen leer sein. Das entspricht dem, was man aus Datenbanken oft als null kennt. Gerade bei Variablen und Formularen solltest du deshalb immer mit IsBlank() oder Coalesce() arbeiten, damit deine App auch dann stabil bleibt, wenn ein Wert noch nicht gesetzt ist.
PowerApps |
Set(varText,Blank())
Praxistipp
Für Canvas-Apps reicht es meistens, wenn du dir diese Faustregel merkst:
- Text für Eingaben, Labels und formatierte Inhalte
- Zahl für Berechnungen
- Boolean für Zustände wie sichtbar/nicht sichtbar
- Datum/DateTime für Termine und Zeitpunkte
- Datensatz für zusammengehörige Einzelinformationen
- Tabelle für Listen und Datenmengen
- Blank für leere oder noch nicht gesetzte Werte
Fazit zu Datentypen in Variablen
Wenn du Variablen in Power Fx sauber einsetzen willst, solltest du nicht nur zwischen Set() und UpdateContext() unterscheiden, sondern auch wissen, welche Art von Wert du eigentlich speicherst. In einer Canvas-App sind dafür vor allem die einfachen Typen wie Text, Zahl, Boolean und Datum relevant – plus die beiden sehr wichtigen Strukturen Datensatz und Tabelle. Wer diese Typen versteht, baut Formeln sauberer, vermeidet Fehler mit leeren Werten und kann Daten in der App deutlich gezielter verarbeiten.
Wann solltest du keine Variable verwenden?
In Power Fx ist es oft besser, gar keine Variable zu verwenden. Formeln werden automatisch neu berechnet, sobald sich ihre Abhängigkeiten ändern – ähnlich wie in Excel.
Statt Werte zwischenzuspeichern, kannst du sie häufig direkt berechnen, zum Beispiel mit Filter(), Sort() oder With(). Das macht deine App einfacher, reaktiver und leichter wartbar.
Fazit
Das Verstehen und richtige Anwenden von Variablen in PowerApps ist essenziell für die Entwicklung effizienter und gut strukturierter Anwendungen. Durch die Nutzung von Set() für globale Variablen kannst du sicherstellen, dass wichtige Daten und Zustände über verschiedene Bildschirme hinweg verfügbar bleiben. Dies ist besonders nützlich für Werte, die zentral für die gesamte App sind, wie Benutzereinstellungen oder zentrale Datenpunkte.
Auf der anderen Seite ermöglichen dir Kontextvariablen, die mit UpdateContext() erstellt werden, eine feinere Kontrolle über Daten und Zustände innerhalb einzelner Bildschirme. Dies ist ideal für lokale Daten, die nicht über die Grenzen eines Bildschirms hinaus benötigt werden. Der gezielte Einsatz von Kontextvariablen kann die Komplexität deiner App verringern und die Performance verbessern, da diese Variablen nur dort existieren, wo sie gebraucht werden.
Zusammengefasst:
- Set() als Globale Variable : Nützlich für Werte, die app-weit zugänglich sein müssen.
- UpdateContext() als Kontextvariablen : Ideal für bildschirmbezogene Werte, die lokal und kontextsensitiv sind.
Die Wahl zwischen hängt letztendlich von deinem spezifischen Anwendungsfall ab. Ein bewusster und gut geplanter Einsatz beider Typen von Variablen trägt entscheidend zur Lesbarkeit, Wartbarkeit und Effizienz deiner PowerApps bei. Nutze die „Variablen“-Ansicht in der Erstellungsumgebung, um den Überblick über alle verwendeten Variablen zu behalten und ihre Werte und Anwendungen effizient zu verwalten.
Mit diesem Wissen bist du nun bestens gerüstet, um sowohl globale als auch lokale Variablen in deinen PowerApps sinnvoll einzusetzen und dadurch leistungsstarke und flexible Anwendungen zu entwickeln.
War dieser Artikel hilfreich?
Was war an dem Artikel schlecht?
Hinweis: Deine Rückmeldung wird zur Verbesserung unserer Artikel verarbeitet. Übermittelt werden Artikel-ID, Artikeltitel, Artikel-URL, ausgewählter Grund und optional dein eingegebener Text. Es werden keine IP-Adresse, keine Cookies und keine Browserdaten an den Webhook übertragen. Bitte gib keine personenbezogenen Daten wie Namen, E-Mail-Adressen oder Kundennummern ein.
Kontaktiere mich direkt über das Kontaktformular. LowCode Investigator ist deine Plattform für praxisnahe Einblicke in die Welt der LowCode-Entwicklung – von Devs für Devs.
noch mehr interessante Beiträge
Sie sehen gerade einen Platzhalterinhalt von Vimeo. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.
Mehr InformationenSie sehen gerade einen Platzhalterinhalt von YouTube. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.
Mehr InformationenSie müssen den Inhalt von reCAPTCHA laden, um das Formular abzuschicken. Bitte beachten Sie, dass dabei Daten mit Drittanbietern ausgetauscht werden.
Mehr Informationen