Operatoren und Bezeichner in Power Apps
Gilt für: Canvas-Apps Modellgesteuerte Apps Power Pages
Einige dieser Operatoren sind von der Sprache des Erstellers abhängig. Weitere Informationen zur Sprachunterstützung in Canvas-Apps finden Sie unter Globale Apps.
Symbol | Typ | Beispiel | Beschreibung |
---|---|---|---|
„…“ | Kennung | 'Kontoname' | Bezeichner, die Sonderzeichen enthalten, einschließlich Leerzeichen, werden in einfache Anführungszeichen gesetzt |
„…“ | Textzeichenfolge | „Hallo Welt“ | Textzeichenfolgen werden in doppelte Anführungszeichen gesetzt |
$"…" | Zeichenfolgeninterpolation | $"Sehr geehrte/r {FirstName}," | In eine Textzeichenfolge eingebettete Formeln |
. | Eigenschaftsauswahl | Slider1.Wert Color.Red Acceleration.X |
Extrahiert eine Eigenschaft aus einer Tabelle, einem Steuerelement, einem Signal oder einer Enumeration. Aus Gründen der Abwärtskompatibilität ! darf auch verwendet werden. |
. [sprachabhängig] |
Dezimaltrennzeichen | 1.23 | Trennzeichen zwischen dem ganzen Teil und dem Bruchteil einer Zahl. Das Zeichen ist abhängig von der Sprache. |
( ) | Klammern | Filter(T, A < 10) (1 + 2) * 3 |
Erzwingt die Rangfolge und gruppiert Unterausdrücke eines längeren Ausdrucks |
+ | Arithmetische Operatoren | 1 + 2 | Addition |
- | 2 – 1 | Subtraktion und Vorzeichen | |
* | 2 * 3 | Multiplikation | |
/ | 2/3 | Division (siehe auch Funktion Mod) | |
^ | 2 ^ 3 | Potenzierung, entspricht der Funktion Power | |
% | 20 % | Prozentsatz (entspricht „* 1/100“) | |
= | Vergleichsoperatoren | Preis = 100 | Entspricht |
> | Preis > 100 | Größer als | |
>= | Preis >= 100 | Größer oder gleich | |
< | Preis < 100 | Kleiner als | |
<= | Preis <= 100 | Weniger als oder gleich | |
<> | Preis <> 100 | Entspricht nicht | |
& | Operator für Zeichenfolgenverkettung | "hallo" & " " & "Welt" | Verkettet mehrere Zeichenfolgen. |
&& oder Und | Logische Operatoren | Preis < 100 && Slider1.Value = 20 oder Price < 100 And Slider1.Value = 20 |
Logische Konjunktion, entspricht der Funktion And |
|| oder Oder | Preis < 100 || Slider1.Value = 20 oder Preis < 100 Oder Slider1.Value = 20 | Logische Disjunktion, entspricht der Funktion Or | |
! oder Not | !(Preis < 100) oder Nicht (Preis < 100) | Logische Negation, entspricht der Funktion Not | |
genau | Mitgliedschaftsbetreiber | Gallery1.Selected exactin GespeicherteArtikel | Gehört zu einer Sammlung oder einer Tabelle. |
genau | "Windows" exactin "So zeigen Sie Fenster im Windows-Betriebssystem an..." | Teilzeichenfolgentest (Groß-/Kleinschreibung wird berücksichtigt) | |
In | Gallery1.Ausgewählt in GespeicherteElemente | Gehört zu einer Sammlung oder einer Tabelle. | |
In | „Die“ in „Die Tastatur und der Monitor …“ | Teilzeichenfolgentest (Groß-/Kleinschreibung wird nicht berücksichtigt) | |
@ | Begriffsklärung Operator | MeineTabelle[@Feldname] | Mehrdeutigkeitsvermeidung für Felder |
@ | [@MeineVariable] | Globale Mehrdeutigkeitsvermeidung | |
, [sprachabhängig] |
Listentrennzeichen | Wenn (X < 10, „Niedrig“, „Gut“) { X: 12, Y: 32 } [ 1, 2, 3 ] |
Trennt Folgendes: Dieses Zeichen ist abhängig von der Sprache. |
; [sprachabhängig] |
Formelverkettung | Sammeln(T, A); Navigieren(S1, "") | Separate Aufrufe von Funktionen in Verhaltenseigenschaften. Der Verkettungsoperator ist von der Sprache abhängig. |
Als | Als Operator | AlleKunden Als Kunde | Überschreibt ThisItem und ThisRecord in Galerien und Funktionen für Datensatzbereiche. Als ist nützlich, um einen besseren, spezifischeren Namen bereitzustellen und ist besonders in verschachtelten Szenarien wichtig. |
Selbst | Selbst Operator | Selbst ausfüllen | Zugriff auf Eigenschaften des aktuellen Steuerelements |
übergeordnetes Element | übergeordnetes Element Operator | Übergeordnetes Element.Füllen | Zugriff auf Eigenschaften eines Steuerelementcontainers |
DieserArtikel | Dieser Artikel Operator | DiesesElement.Vorname | Zugriff auf Felder eines „Gallery“- oder „form“-Steuerelements |
Dieser Datensatz | Dieser Datensatz Operator | DieserDatensatz.Vorname | Zugriff auf den gesamten Datensatz und einzelne Felder des Datensatzes ForAll, Sum, With und andere Funktionen für den Datensatzbereich. Kann mit dem As-Operator überschrieben werden. |
Notiz
Der @ -Operator kann auch verwendet werden, um den Typ des Datensatzobjekts mit einem Datenquelle zu überprüfen. Zum Beispiel Collect(coll,Account@{'Account Number: 1111')
Operatoren „in“ und „exactin“
Verwenden Sie die Operator in und exactin, um in einer Datenquelle nach einer Zeichenfolge zu suchen, z.B. einer Sammlung oder importierten Tabelle. Mit dem Operator in werden Übereinstimmungen unabhängig von der Groß- und Kleinschreibung identifiziert, und mit dem Operator exactin ergeben sich nur dann Übereinstimmungen, wenn sie exakt die gleiche Schreibweise haben. Im Folgenden finden Sie ein Beispiel:
Erstellen oder importieren Sie eine Sammlung namens Inventory, und zeigen Sie sie in einem Katalog an. Dies wird im ersten Verfahren unter Anzeigen von Bildern und Text in einem Katalog beschrieben.
Legen Sie die Items-Eigenschaft des Katalogs auf diese Formel fest:
Filter(Inventar, „E“ in Produktname)Im Katalog werden alle Produkte mit Ausnahme von „Callisto“ angezeigt, weil der Name dieses Produkts der einzige Name ist, der den von Ihnen angegebenen Buchstaben nicht enthält.
Ändern Sie die Items-Eigenschaft des Katalogs in diese Formel:
Filter(Inventar, "E" exactin Produktname)Im Katalog wird nur „Europa“ angezeigt, weil nur dieser Name den von Ihnen angegebenen Großbuchstaben enthält.
ThisItem, ThisRecord und As operators
Einige Steuerelemente und Funktionen wenden Formeln auf einzelne Datensätze einer Tabelle an. Verwenden Sie eine der folgenden Optionen, um auf den einzelnen Datensatz in einer Formel zu verweisen:
Operator | Gilt für | Beschreibung |
---|---|---|
DieserArtikel | Galerie Kontrolle Formular bearbeiten Kontrolle Anzeigeformular Kontrolle |
Der Standardname für den aktuellen Datensatz in einem Gallery oder form-Steuerelement. |
Dieser Datensatz | ForAll, Filter, With, Sum und andere Datensatzbereich Funktionen | Der Standardname für den aktuellen Datensatz in ForAll und andere Funktionen für Datensatzbereiche. |
AlsName | Galerie Steuerung FürAlle, Filter, Mit, Summe und andere Datensatzbereichsfunktionen |
Definiert ein name-Element für den aktuellen Datensatz, der die Standardelemente ThisItem oder ThisRecord ersetzt. Verwenden Sie As, um Formeln beim Verschachteln leichter verständlich zu machen und Mehrdeutigkeiten aufzulösen. |
ThisItem-Operator
Im Folgenden Gallery-Steuerelement kontrollieren Sie beispielsweise die Eigenschaft Items und prüfen, ob die Eigenschaft auf die Datenquelle Mitarbeiter (wie die Tabelle Mitarbeiter, die im Lieferumfang vom Northwind Traders-Beispiel enthalten ist), festgelegt ist:
Employees
Das erste Element in der Galerie ist eine Vorlage, die für jeden Mitarbeiter repliziert wird. In der Vorlage verwendet die Formel für das Bild ThisItem, um auf das aktuelle Element zu verweisen:
ThisItem.Picture
Ebenso verwendet die Formel ThisItem auch für den Namen:
ThisItem.'First Name' & " " & ThisItem.'Last Name'
ThisRecord-Operator
Dieser Datensatz wird in Funktionen verwendet, die einen Datensatzumfang haben. Zum Beispiel können wir die Filter-Funktion bei der Items-Eigenschaft unserer Galerie verwenden, um nur Vornamen anzuzeigen, die mit M beginnen:
Filter( Employees, StartsWith( ThisRecord.Employee.'First Name', "M" ) )
Dieser Datensatz ist optional und wird durch die direkte Verwendung der Felder impliziert. In diesem Fall hätten wir beispielsweise schreiben können:
Filter( Employees, StartsWith( 'First Name', "M" ) )
Obwohl es optional ist, sind Formeln mit ThisRecord leichter verständlich und in mehrdeutigen Situationen, in denen ein Feldname auch ein Beziehungsname sein kann, kann es erforderlich sein. ThisRecord ist optional, während ThisItem immer erforderlich ist.
Verwenden Sie ThisRecord, um den gesamten Datensatz mit Patch, Collect und anderen Funktionen für den Datensatzbereich zu referenzieren. Die folgende Formel legt beispielsweise den Status für alle inaktiven Mitarbeiter auf aktiv fest:
With( { InactiveEmployees: Filter( Employees, Status = 'Status (Employees)'.Inactive ) },
ForAll( InactiveEmployees,
Patch( Employees, ThisRecord, { Status: 'Status (Employees)'.Active } ) ) )
As Operator
Verwenden Sie den As-Operator zum Benennen eines Datensatzes in einer Galerie oder einer Datensatzbereichsfunktion, wobei die Standardeinstellung ThisItem oder ThisRecord überschrieben wird. Das Benennen des Datensatzes kann das Verständnis Ihrer Formeln erleichtern und in verschachtelten Situationen erforderlich sein, um auf Datensätze in anderen Bereichen zuzugreifen.
Zum Beispiel können Sie die Items-Eigenschaft unserer Galerie ändern, um mit As zu identifizieren, dass wir mit einem Mitarbeiter zusammenarbeiten:
Employees As Employee
Die Formeln für das Bild und den Namen werden angepasst, um diesen Namen für den aktuellen Datensatz zu verwenden:
Employee.Picture
Employee.'First Name' & " " & Employee.'Last Name'
As kann auch mit Datensatzbereichsfunktionen verwendet werden, um den Standardnamen ThisRecord zu ersetzen. Wir können dies auf unser vorheriges Beispiel anwenden, um klarzustellen, mit welchem Datensatz wir arbeiten:
With( { InactiveEmployees: Filter( Employees, Status = 'Status (Employees)'.Inactive ) },
ForAll( InactiveEmployees As Employee,
Patch( Employees, Employee, { Status: 'Status (Employees)'.Active } ) ) )
Wenn Sie „galleries“- und „record scope“-Funktionen verschachteln, verweisen ThisItem und ThisRecord immer auf den innersten Bereich, sodass Datensätze in äußeren Bereichen nicht verfügbar sind. Verwenden Sie As, um alle Datensatzbereiche verfügbar zu machen, indem Sie jedem einen eindeutigen Namen geben.
Diese Formel erzeugt beispielsweise ein Schachbrettmuster als Textzeichenfolge, indem zwei ForAll-Funktionen verschachtelt werden:
Concat(
ForAll( Sequence(8) As Rank,
Concat(
ForAll( Sequence(8) As File,
If( Mod(Rank.Value + File.Value, 2) = 1, " X ", " . " )
),
Value
) & Char(10)
),
Value
)
Das Festlegen der Text-Eigenschaft eines Label-Steuerelements für diese Formel zeigt Folgendes an:
Nehmen wir auseinander, was hier passiert:
- Wir beginnen mit der Iteration einer unbenannten Tabelle mit 8 nummerierten Datensätzen aus der Sequence-Funktion. Diese Schleife gilt für jede Reihe des Boards, die üblicherweise als Rank bezeichnet wird. Also geben wir ihr diesen Namen.
- Für jede Zeile iterieren wir eine weitere unbenannte Tabelle mit 8 Spalten und geben den allgemeinen Namen File an.
- Wenn Rank.Value + File.Value eine ungerade Zahl ist, erhält das Quadrat ein X., sonst einen Punkt. Dieser Teil der Formel verweist auf beide ForAll-Schleifen, ermöglicht durch die Verwendung des As-Operators.
- Concat wird zweimal verwendet, zuerst zum Zusammensetzen der Spalten und dann der Zeilen, wobei ein Char(10) eingefügt wird, um eine neue Zeile zu erstellen.
Ein ähnliches Beispiel ist mit verschachtelten Gallery-Steuerelementen statt ForAll Funktionen möglich. Beginnen wir mit der vertikalen Galerie für Rank. Dieses gallery-Steuerelement hat eine Items-Formel von:
Sequence(8) as Rank
Innerhalb dieser Galerie platzieren wir eine horizontale Galerie für File, die für jedes Rank-Element mit der folgenden Items-Eigenschaft repliziert wird:
Sequence(8) as File
Und schließlich fügen wir in dieser Galerie ein Label-Steuerelement hinzu, das für jedes File- und Rank-Element repliziert wird. Wir werden die Größe so anpassen, das es den gesamten Platz ausfüllt und wir verwenden die Fill-Eigenschaft, um die Farbe mit dieser Formel bereitzustellen:
If( Mod( Rank.Value + File.Value, 2 ) = 1, Green, Beige )
Selbst- und übergeordnete Betreiber
Es gibt drei Möglichkeiten, auf ein Steuerelement und seine Eigenschaften innerhalb einer Formel zu verweisen:
Methode | Beschreibung |
---|---|
Über den Namen des Steuerelements | Jedes Steuerelement kann von überall innerhalb der App namentlich referenziert werden. Beispielsweise bezieht sich Label1.Fill auf die Fill-Eigenschaft des Steuerelements, dessen Name Label1 lautet. |
Selbst Operator | Es ist oft praktisch, beim Schreiben einer Formel auf eine andere Eigenschaft desselben Steuerelements zu verweisen. Anstatt eine absolute Referenz nach Namen zu verwenden, ist es einfacher und portabler, eine relative Referenz zu einer Eigenschaft Self zu verwenden. Der Operator Self bietet diesen einfachen Zugriff auf das aktuelle Steuerelement. Zum Beispiel: bezieht sich Self.Fill auf die Füllfarbe des aktuellen Steuerelements. |
übergeordnetes Element Operator | Einige Steuerelemente enthalten andere Steuerelemente, wie z. B. die Steuerelemente Screen und Gallery. Das hostende Steuerelement des Steuerelements wird als übergeordnet bezeichnet. Wie der Operator Selbst bietet der Operator Übergeordnet eine einfache relative Referenz zum Steuerelement des Containers. Beispielsweise bezieht sich Parent.Fill auf die Fill-Eigenschaft des Steuerelements, das der Container für das aktuelle Steuerelement ist. |
Self und übergeordnetes Element sind Operatoren und keine Eigenschaften der Steuerelementen selbst. Verweise auf Parent.Parent, Self.Parent oder Parent.Self werden nicht unterstützt.
Bezeichnernamen
Die Namen von Variablen, Datenquellen, Spalten und anderen Objekten können einen beliebigen Unicode enthalten.
Verwenden Sie einfache Anführungszeichen um einen Namen, der ein Leerzeichen oder ein anderes Sonderzeichen enthält.
Verwenden Sie zwei einfache Anführungszeichen zusammen, um ein einfaches Anführungszeichen im Namen darzustellen. Namen, die keine Sonderzeichen enthalten, erfordern keine einfachen Anführungszeichen.
Hier sind einige Beispiele für Spaltennamen, denen Sie möglicherweise in einer Tabelle begegnen, und wie sie in einer Formel dargestellt werden:
Spaltenname in einer Datenbank | Spaltenreferenz in einer Formel |
---|---|
SimpleName | SimpleName |
NameWith123Numbers | NameWith123Numbers |
Name mit Leerzeichen | 'Name with spaces' |
Name mit "doppelten" Anführungszeichen | 'Name with "double" quotes' |
Name mit 'einfachen' Anführungszeichen | 'Name with ''single'' quotes' |
Name mit einem @ at-Zeichen | 'Name with an @ at sign' |
Doppelte Anführungszeichen werden zum Festlegen von Textzeichenfolgen verwendet.
Anzeigenamen und logische Namen
Einige Datenquellen wie SharePoint und Microsoft Dataverse haben zwei verschiedene Namen, um auf dieselbe Tabelle oder Datenspalte zu verweisen:
Logischer Name – Ein Name, der garantiert eindeutig ist, sich nach der Erstellung nicht ändert, normalerweise keine Leerzeichen oder andere Sonderzeichen zulässt und nicht in andere Sprachen lokalisiert wird. Dadurch kann der Name kryptisch sein. Diese Namen werden von professionellen Entwicklern verwendet. Zum Beispiel: cra3a_customfield. Dieser Name kann auch als Schemaname oder nur Name bezeichnet werden.
Anzeigename – Ein benutzerfreundlicher Name, der für Endbenutzer bestimmt ist. Dieser Name ist möglicherweise nicht eindeutig, kann sich im Laufe der Zeit ändern, Leerzeichen und Unicode-Zeichen enthalten und in verschiedenen Sprachen lokalisiert sein. Entsprechend dem obigen Beispiel kann der Anzeigename Custom Field mit Leerzeichen zwischen den Wörtern sein.
Da Anzeigenamen leichter zu verstehen sind, schlagen Canvas-Apps diese und nicht logische Namen zur Auswahl vor. Obwohl keine logischen Namen vorgeschlagen werden, können sie dennoch verwendet werden, wenn sie indirekt eingegeben werden.
Stellen Sie sich zum Beispiel vor, Sie haben ein benutzerdefiniertes Feld zu einer Tabelle in Dataverse hinzugefügt. Das System weist Ihnen einen logischen Namen zu, den Sie nur beim Erstellen des Feldes ändern können. Das Ergebnis würde ähnlich aussehen wie:
Wenn Sie einen Verweis auf ein Feld von „Konten“ erstellen, wird der Vorschlag gemacht, ‚Benutzerdefiniertes Feld‘ zu verwenden, da dies der Anzeigename ist. Einfache Anführungszeichen müssen verwendet werden, da dieser Name ein Leerzeichen enthält:
Nach Auswahl des Vorschlags wird in der Formelleiste 'Custom Field' angezeigt und die Daten werden abgerufen:
Obwohl es nicht vorgeschlagen wird, könnten wir auch den logischen Namen für dieses Feld verwenden. Dies führt dazu, dass dieselben Daten abgerufen werden. Es sind keine einfachen Anführungszeichen erforderlich, da dieser Name keine Leerzeichen oder Sonderzeichen enthält:
Im Hintergrund wird eine Zuordnung zwischen den in Formeln angezeigten Anzeigenamen und den zugrunde liegenden logischen Namen beibehalten. Da für die Interaktion mit der Datenquelle logische Namen verwendet werden müssen, wird diese Zuordnung verwendet, um automatisch vom aktuellen Anzeigename in den logischen Namen zu konvertieren. Dies wird im Netzwerkdatenverkehr angezeigt. Diese Zuordnung wird auch verwendet, um in logische Namen zurück zu konvertieren und zu neuen Anzeigenamen zu wechseln, z. B. wenn sich ein Anzeigename ändert oder ein Hersteller die App in einer anderen Sprache bearbeitet.
Notiz
Logische Namen werden beim Verschieben einer App zwischen Umgebungen nicht übersetzt. Für Dataverse Systemtabellen- und Feldnamen sollte dies kein Problem darstellen, da logische Namen in allen Umgebungen konsistent sind. Aber alle benutzerdefinierten Felder, wie z. B. cra3a_customfield in diesem Beispiel oben, können ein anderes Umgebungspräfix haben (cra3a in diesem Fall). Anzeigenamen werden bevorzugt, da sie mit Anzeigenamen in der neuen Umgebung abgeglichen werden können.
Mehrdeutigkeitsvermeidung für Namen
Da Anzeigenamen nicht eindeutig sind, kann dasselbe Anzeigename mehr als einmal in derselben Tabelle erscheinen. In diesem Fall wird der logische Name am Ende des Anzeigenamens in Klammern für einen oder mehrere der widersprüchlichen Namen hinzugefügt. Aufbauend auf dem obigen Beispiel, wenn es ein zweites Feld mit dem gleichen Anzeigenamen von Custom Field mit einem logischen Namen von cra3a_customfieldalt gäbe, dann würden die Vorschläge Folgendes zeigen:
Namensdisambiguierungszeichenfolgen werden in anderen Situationen hinzugefügt, in denen Namenskonflikte auftreten, wie z. B. die Namen von Tabellen, Auswahlmöglichkeiten und anderen Dataverse Elementen.
Operator zur Mehrdeutigkeitsvermeidung
Für einige Funktionen werden Datensatzbereiche zum Zugreifen auf die Felder der Tabelle erstellt, während die einzelnen Datensätze verarbeitet werden, z. B. Filter, AddColumns und Sum. Feldnamen, die mit dem Datensatzbereich hinzugefügt werden, setzen die gleichen Namen von anderen Orten der App außer Kraft. Wenn dies passiert, können Sie mit dem @-Operator zur Mehrdeutigkeitsvermeidung trotzdem auf Werte außerhalb des Datensatzbereichs zugreifen:
- Verwenden Sie zum Zugreifen auf Werte aus geschachtelten Datensatzbereichen den @-Operator mit dem Namen der jeweiligen Tabelle, indem Sie das folgende Muster nutzen:
Tabelle[@FieldName] - Verwenden Sie zum Zugreifen auf globale Werte, z.B. Datenquellen, Sammlungen und Kontextvariablen, das Muster [@Objektname] (ohne Tabellenbezeichnung).
Weitere Informationen und Beispiele finden Sie unter Datensatzbereiche.