Operatoren und Bezeichner in Power Apps

Gilt für: Canvas-Apps Modellgesteuerte Apps

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
'...' Bezeichner ‚Firmenname‘ Bezeichner, die Sonderzeichen enthalten, einschließlich Leerzeichen, werden in einfache Anführungszeichen gesetzt
... Textzeichenfolge „Hallo Welt“ Textzeichenfolgen werden in doppelte Anführungszeichen gesetzt
$„... Zeichenfolgeninterpolation $„Dear {FirstName},“ In eine Textzeichenfolge eingebettete Formeln
. Eigenschaftsauswahl Slider1.Value
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 Price = 100 Entspricht
>   Price > 100 Größer als
>=   Price >= 100 Größer oder gleich
<   Price < 100 Kleiner als
<=   Price <= 100 Weniger als oder gleich
<>   Price <> 100 Entspricht nicht
& Operator für Zeichenfolgenverkettung „hello“ & „ “ & „world“ Verkettet mehrere Zeichenfolgen.
&& oder And Logische Operatoren Price < 100 && Slider1.Value = 20
oder Price < 100 And Slider1.Value = 20
Logische Konjunktion, entspricht der Funktion And
|| oder Or   Preis < 100 || Slider1.Value = 20 oder Preis < 100 Oder Slider1.Value = 20 Logische Disjunktion, entspricht der Funktion Or
! oder Not   !(Price < 100) oder Not (Price < 100) Logische Negation, entspricht der Funktion Not
exactin Mitgliedschaftsoperatoren Gallery1.Selected exactin SavedItems Gehört zu einer Sammlung oder einer Tabelle.
exactin   Windows exactin „To display windows in the Windows operating system...” Teilzeichenfolgentest (Groß-/Kleinschreibung wird berücksichtigt)
in   Gallery1.Selected in SavedItems Gehört zu einer Sammlung oder einer Tabelle.
in   „Die“ in „Tastatur und Bildschirm...“ Teilzeichenfolgentest (Groß-/Kleinschreibung wird nicht berücksichtigt)
@ Operator zur Mehrdeutigkeitsvermeidung MyTable[@fieldname] Mehrdeutigkeitsvermeidung für Felder
@   [@MyVariable] Globale Mehrdeutigkeitsvermeidung
,
[sprachabhängig]
Listentrennzeichen If( X < 10, "Low", "Good" )
{ X: 12, Y: 32 }
[ 1, 2, 3 ]
Trennt Folgendes:
  • Argumente in Funktionsaufrufen
  • Felder in einem Datensatz
  • Datensätze in einer Tabelle
Dieses Zeichen ist abhängig von der Sprache.
;
[sprachabhängig]
Formelverkettung Collect(T, A); Navigate(S1, "") Separate Aufrufe von Funktionen in Verhaltenseigenschaften. Der Verkettungsoperator ist von der Sprache abhängig.
Als As operator AllCustomers As Customer Überschreibt ThisItem und ThisRecord in Galerien und Funktionen für Datensatzbereiche. As ist nützlich, um einen besseren, spezifischen Namen bereitzustellen, und ist besonders wichtig in verschachtelten Szenarien.
Self-Service Selbst-Operator Self.Fill Zugriff auf Eigenschaften des aktuellen Steuerelements
Übergeordnet Parent-Operator Parent.Fill Zugriff auf Eigenschaften eines Steuerelementcontainers
ThisItem ThisItem-Operator ThisItem.FirstName Zugriff auf Felder eines „Gallery“- oder „form“-Steuerelements
ThisRecord ThisRecord-Operator ThisRecord.FirstName 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:

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

  2. Legen Sie die Items-Eigenschaft des Katalogs auf diese Formel fest:
    Filter(Inventory, "E" in ProductName)

    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.

  3. Ändern Sie die Items-Eigenschaft des Katalogs in diese Formel:
    Filter(Inventory, "E" exactin ProductName)

    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
ThisItem Katalog Steuerelement
Formular bearbeiten Steuerelement
Formular anzeigen Steuerelement
Der Standardname für den aktuellen Datensatz in einem Gallery oder form-Steuerelement.
ThisRecord ForAll, Filter, Mit, Sum und andere Datensatzumfang Funktionen Der Standardname für den aktuellen Datensatz in ForAll und andere Funktionen für Datensatzbereiche.
WieName Katalog Steuerelement
ForAll, Filter, Mit, Sum und andere Datensatzumfangs-Funktionen
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

In einer Galerie angezeigte Mitarbeiter

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

Formel für das Bild eines Mitarbeiters

Ebenso verwendet die Formel ThisItem auch für den Namen:

ThisItem.'First Name' & " " & ThisItem.'Last Name'

Formel für den Vor- und Nachnamen eines Mitarbeiters

ThisRecord-Operator

ThisRecord wird in Funktionen mit einem Datensatzbereich verwendet. 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" ) )

Filterung von Mitarbeiter anhand des Namens mithilfe von ThisRecord

ThisRecord ist optional und wird durch 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 wohingegen 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

Galerie der Mitarbeiter mit dem As-Operator

Die Formeln für das Bild und den Namen werden angepasst, um diesen Namen für den aktuellen Datensatz zu verwenden:

Employee.Picture

Bild eines Mitarbeiters unter Verwendung des Employee-Namenssatzes mit dem As-Operator

Employee.'First Name' & " " & Employee.'Last Name'

Vor- und Nachname eines Mitarbeiters unter Verwendung des Employee-Namenssatzes mit dem As-Operator

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:

In einem Beschriftungssteuerelement angezeigter Schachbretttext

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.
  • Kontakt wird zweimal verwendet. Zuerst um die Spalten und dann die Zeilen mit einem Char(10) zusammenzusetzen, das genutzt 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

Abbildung der äußeren Galerie, die die Rank-Iteration bereitstellt

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

Abbildung der inneren Galerie, die die File-Iteration bereitstellt

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 )

Label-Steuerelement in den beiden Galerien, die die abwechselnden Farben für das Schachbrett bereitstellt

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.
Self 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.
Übergeordnet 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 Parent sind Operatoren und keine Eigenschaften auf den 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 einzigartig ist, ändert sich nach der Erstellung nicht, lässt normalerweise keine Leerzeichen oder andere Sonderzeichen zu und wird nicht in verschiedene Sprachen lokalisiert. 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 Name, der benutzerfreundlich ist und von Endbenutzern gesehen werden soll. 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:

Kontentabelle mit hinzugefügtem benutzerdefinierten Feld, die ein Anzeigename von benutzerdefiniertes Feld und einen logischen Namen von cr5e3_customfield anzeigt

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:

Studio-Formelleiste mit Vorschlägen für Feldnamen von „Konten“ mit hervorgehobenem Anzeigename 'Custom Field'

Nach Auswahl des Vorschlags wird in der Formelleiste 'Custom Field' angezeigt und die Daten werden abgerufen:

Studio-Formelleiste mit Verwendung des Anzeigenamens ‚Benutzerdefiniertes Feld‘ für das Feld

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:

Studio-Formelleiste mit Verwendung des logischen Namens cr5e3_customfield für das Feld

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:

Studio-Formelleiste mit der Verwendung des logischen Namens cr5e3_customfieldalt zur Unterscheidung der beiden Versionen von „Custom Field“

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.