Share via


Operators en id's

Notitie

Microsoft Power Fx is de nieuwe naam voor de formuletaal van canvas-apps. Aan deze artikelen wordt gewerkt terwijl we de taal extraheren uit canvas-apps en deze integreren met andere Microsoft Power Platform-producten en het beschikbaar maken als open source. Begin met het Microsoft Power Fx-overzicht voor een inleiding in de taal.

De Microsoft Power Fx-operators worden hieronder beschreven. Sommige van deze operators zijn afhankelijk van de taal van de auteur. Zie Wereldwijde apps voor meer informatie.

Symbool Type Syntaxis Beschrijving
. Eigenschapselectie Schuifregelaar1.Waarde
Color.Red
Hiermee wordt een eigenschap opgehaald uit een tabel, besturingselement of opsomming. Voor achterwaartse compatibiliteit kan ook ! worden gebruikt.
.
taalafhankelijk
Decimaalteken 1.23 Scheidingsteken tussen de hele getallen en fracties van een getal. Welk teken wordt gebruikt, is afhankelijk van de taal.
( ) Haakjes Filter(T, A < 10)

(1 + 2) * 3
Dwingt een volgorde af en groepeert subexpressies in een grotere expressie
+ Rekenkundige operators 1 + 2 Optelling
-   2 - 1 Aftrekken en ondertekenen
*   2 * 3 Vermenigvuldiging
/   2 / 3 Delen (zie ook de functie Mod)
^   2 ^ 3 Machtsverheffing, vergelijkbaar met de functie Power
%   20% Percentage (vergelijkbaar met "* 1/100")
= Vergelijkingsoperators Prijs = 100 Gelijk aan
>   Prijs > 100 Groter dan
>=   Prijs >= 100 Groter dan of gelijk aan
<   Prijs < 100 Kleiner dan
<=   Prijs <= 100 Kleiner dan of gelijk aan
<>   Prijs <> 100 Niet gelijk aan
& Operator voor tekenreekssamenvoeging "Hallo" & " " & "wereld" Laat meerdere tekenreeksen weergeven als één doorlopende tekenreeks
&& of En Logische operators Prijs < 100 && Slider1.Waarde = 20
of Prijs < 100 And Slider1.Value = 20
Logische combinatie, vergelijkbaar met de functie And
|| of Of   Prijs < 100 || Slider1.Waarde = 20 of Prijs < 100 Of Slider1.Waarde = 20 Logische scheiding, vergelijkbaar met de functie Or
! of Not   !(Prijs < 100) of Niet (Prijs < 100) Logische negatie, vergelijkbaar met de functie Not
precies Ledenbeheerders Galerij1. Geselecteerde exacte opgeslagen items Lidmaatschap van een verzameling of tabel
precies   "Windows" exactin "Om vensters in het Windows-besturingssysteem weer te geven..." Test van subtekenreeks (hoofdlettergevoelig)
in   Galerij1.Geselecteerd in opgeslagen items Lidmaatschap van een verzameling of tabel
in   "Het" in "Het toetsenbord en de monitor..." Test van subtekenreeks (niet hoofdlettergevoelig)
@ Doorverwijzing operator MijnTabel[@veldnaam] Ondubbelzinnigheid van velden
@   [@MijnVariabele] Algemene ondubbelzinnigheid
,
[taalafhankelijk]
Lijstscheidingsteken Als(X < 10, "Laag", "Goed")
{ X: 12, Y: 32 }
[ 1, 2, 3 ]
Scheidt:
  • Argumenten in functieaanroepen.
  • Velden in een record.
  • Records in een tabel.
Welk teken wordt gebruikt, is afhankelijk van de taal.
;
[taalafhankelijk]
Formulekoppeling Verzamelen(T, A); Navigeren(S1, "") Afzonderlijke aanroepen van functies in de gedragseigenschappen. De koppelingsoperator is afhankelijk van de taal.
Als Als operator AllCustomers Als Klant Overschrijft ThisItem en ThisRecord in galerieën en recordbereikfuncties. Als is handig om een betere, specifieke naam te geven en is vooral belangrijk in geneste scenario's.
Zelf Zelf operator Zelf invullen Toegang tot eigenschappen van het huidige besturingselement
bovenliggend bovenliggend operator Ouder.Vul Toegang tot de eigenschappen van een besturingselementcontainer
Dit item Dit item operator DitItem.Voornaam Toegang tot de velden van het besturingselement Gallery of Form
DitRecord Dit item operator ThisRecord.Voornaam Toegang tot de volledige record en de afzonderlijke velden van de record binnen ForAll, Sum, With en andere recordbereikfuncties. Kan worden overschreven met de operator As.

De operators in en exactin

Gebruik de operators in en exactin om een tekenreeks te zoeken in een gegevensbron, zoals een verzameling of een geïmporteerde tabel. Met de operator in zoekt u overeenkomsten, onafhankelijk van het gebruik van hoofdletters, en met de operator exactin worden overeenkomsten gezocht met precies hetzelfde hoofdlettergebruik. Hier volgt een voorbeeld:

  1. Importeer of maak een collectie met de naam Inventory en geef deze weer in een galerie, zoals wordt beschreven in de eerste procedure in Tekst en afbeeldingen weergeven in een galerie.

  2. Stel de eigenschap Items van de galerie in op deze formule:
    Filter(Inventaris, "E" in productName)

    De galerie bevat alle producten behalve Callisto omdat de naam van dat product de enige naam is die niet de letter bevat die u hebt opgegeven.

  3. Stel de eigenschap Items van de galerie in op deze formule:
    Filter(Inventaris, "E" exactin productName)

    In de galerie wordt alleen Europa weergegeven omdat dit de enige naam is die de letter bevat die u hebt opgegeven, met het opgegeven hoofdlettergebruik.

Operators ThisItem, ThisRecord en As

Enkele besturingselementen en functies passen formules toe op afzonderlijke records van een tabel. Gebruik een van de volgende opties om naar de afzonderlijke record in een formule te verwijzen:

Operator Van toepassing op: Beschrijving
Dit item Galerij controle
Formulier bewerken controle
Weergaveformulier controle
De standaardnaam voor de huidige record in een besturingselement Gallery of Form.
DitRecord Voor iedereen, Filter, Met, Som en andere recordbereik functies De standaardnaam voor de huidige record in ForAll en andere recordbereikfuncties.
Als naam Galerij controle
ForAll, Filter, With, Sum en andere recordbereikfuncties
Definieert een naam voor de huidige record, ter vervanging van de standaard ThisItem of ThisRecord. Gebruik As om formules begrijpelijker te maken en onduidelijkheid bij het nesten weg te nemen.

ThisItem-operator

Zo is bijvoorbeeld in het volgende besturingselement Gallery de eigenschap Items ingesteld op de gegevensbron Medewerkers (zoals de entiteit Medewerkers die is opgenomen in het voorbeeld van Northwind Traders):

Employees

Medewerkers weergegeven in een galerie.

Het eerste item in de galerie is een sjabloon die voor elke medewerker wordt gerepliceerd. In de sjabloon maakt de formule voor de afbeelding gebruik van ThisItem om naar het huidige item te verwijzen:

ThisItem.Picture

Formule voor de foto van een medewerker.

Daarnaast gebruikt de formule voor de naam eveneens ThisItem:

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

Formule voor de voor- en achternaam van een medewerker.

Operator ThisRecord

ThisRecord wordt gebruikt in functies met een recordbereik. Zo kunnen we bijvoorbeeld de functie Filter gebruiken met de eigenschap Items van onze galerie om alleen voornamen weer te geven die beginnen met M:

Filter( Employees, StartsWith( ThisRecord.Employee.'First Name', "M" ) )

De medewerkers filteren op naam, met behulp van ThisRecord.

ThisRecord is optioneel en wordt geïmpliceerd door de velden direct te gebruiken. In dit geval hadden we bijvoorbeeld het volgende kunnen schrijven:

Filter( Employees, StartsWith( 'First Name', "M" ) )

Hoewel optioneel, kan het gebruik van ThisRecord formules begrijpelijker maken. Bovendien kan het ook nodig zijn in onduidelijke situaties waarin een veldnaam ook een relatienaam kan zijn. ThisRecord is optioneel, terwijl ThisItem altijd vereist is.

Gebruik ThisRecord om naar de hele record te verwijzen met Patch, Collect en andere recordbereikfuncties. Met de volgende formule wordt bijvoorbeeld de status voor alle inactieve medewerkers ingesteld op actief:

With( { InactiveEmployees: Filter( Employees, Status = 'Status (Employees)'.Inactive ) },
      ForAll( InactiveEmployees, 
              Patch( Employees, ThisRecord, { Status: 'Status (Employees)'.Active } ) ) )

Operator As

Gebruik de operator As om een record een naam te geven in een galerie of recordbereikfunctie, waarbij de standaardwaarde ThisItem of ThisRecord wordt overschreven. Het benoemen van de record kan uw formules begrijpelijker maken en kan in geneste situaties vereist zijn om toegang te krijgen tot records in andere bereiken.

Zo kunt ubijvoorbeeld de eigenschap Items van onze galerie wijzigen om As te gebruiken om vast te stellen dat we met een medewerker werken:

Employees As Employee

Gallery van medewerkers, met behulp van de operator As.

De formules voor de afbeelding en naam zijn aangepast om deze naam te gebruiken voor de huidige record:

Employee.Picture

Image van een medewerker die de Naam medewerker gebruikt die is ingesteld met de operator As.

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

Voor- en achternaam van een medewerker die de Naam medewerker gebruikt die is ingesteld met de operator As.

As kan ook worden gebruikt met recordbereikfuncties om de standaardnaam ThisRecord te vervangen. We kunnen dit toepassen op ons vorige voorbeeld om de record waarmee we werken te verduidelijken:

With( { InactiveEmployees: Filter( Employees, Status = 'Status (Employees)'.Inactive ) },
      ForAll( InactiveEmployees As Employee, 
              Patch( Employees, Employee, { Status: 'Status (Employees)'.Active } ) ) )

Bij het nesten van galerieën en recordbereikfuncties, verwijzen ThisItem en ThisRecord altijd naar het binnenste bereik, waardoor records in de buitenste bereiken niet beschikbaar zijn. Gebruik As om alle recordbereiken beschikbaar te maken door elk een unieke naam te geven.

Deze formule produceert bijvoorbeeld een schaakbordpatroon als een tekenreeks door twee functies ForAll te nesten:

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 
)

Bij instelling van een eigenschap Text voor een besturingselement Label in deze formule wordt het volgende weergegeven:

Schaakbordtekst weergegeven in een labelbesturingselement.

Laten we nader onderzoeken wat hier gebeurt:

  • We beginnen met het toepassen van interatie op een naamloze tabel met 8 genummerde records vanuit de functie Sequence. Deze lus is voor elke rij van het bord, die gewoonlijk wordt aangeduid als Positie en dus geven we het deze naam.
  • Voor elke rij voeren we iteraties uit voor een andere naamloze tabel met 8 kolommen en geven deze algemene naam File.
  • Als Positie.Value + File.Value een oneven getal is, krijgt het vierkant een X, anders een punt. Dit deel van de formule verwijst naar beide lussen ForAll, mogelijk gemaakt door gebruik van de operator As.
  • Concat wordt twee keer gebruikt, eerst om de kolommen en vervolgens de rijen samen te stellen, waarbij a Char(10) wordt ingezet om een nieuwe regel te maken.

Een soortgelijk voorbeeld is mogelijk met geneste besturingselementen Gallery in plaats van functies ForAll. Laten we beginnen met de verticale galerie voor de Positie. Dit galeriebesturingselement heeft de volgende formule Items:

Sequence(8) as Rank

Illustratie van de buitenste galerie die de Positie-iteratie levert.

Binnen deze galerie plaatsen we een horizontale galerie voor het File, die wordt gerepliceerd voor elke Positie, met de volgende eigenschap Items:

Sequence(8) as File

Illustratie van de binnenste galerie die de File-iteratie levert.

En tot slot voegen we binnen deze galerie een besturingselement Label toe die wordt gerepliceerd voor elk File en elke Positie. We passen het aan om de hele ruimte te vullen en gebruiken de eigenschap Fill om de kleur te leveren voor deze formule:

If( Mod( Rank.Value + File.Value, 2 ) = 1, Green, Beige )

Labelbesturingselement binnen de twee galerieën dat de afwisselende kleuren voor het schaakbord levert.

Self-operators en bovenliggende operators

Er zijn drie manieren om binnen een formule naar een besturingselement en de eigenschappen ervan te verwijzen:

Methode Beschrijving
Met de naam van het besturingselement Er kan op basis van naam naar alle besturingselementen worden verwezen, waar dan ook in de app.

Bijvoorbeeld, Label1.Fill verwijst naar de eigenschap fill van het besturingselement met de naam Label1.
Zelf operator Het is vaak handig om bij het schrijven van een formule naar een andere eigenschap van hetzelfde besturingselement te verwijzen. In plaats van een absolute verwijzing op naam te gebruiken, is het gemakkelijker om een relatieve verwijzing naar zichzelf te gebruiken. De operator Self biedt die gemakkelijke toegang tot het huidige besturingselement.

Self.Fill verwijst bijvoorbeeld naar de vulkleur van het huidige besturingselement.
bovenliggend operator Sommige besturingselementen hosten andere besturingselementen, zoals Screen en Gallery. Het besturingselement dat als host fungeert, wordt ook wel het bovenliggende besturingselement genoemd. Net zoals de operator Self biedt ook de operator Parent een gemakkelijke relatieve verwijzing naar het containerbesturingselement.

Parent.Fill verwijst bijvoorbeeld naar de eigenschap fill van het besturingselement dat de container is voor het huidige besturingselement.

Self en bovenliggend zijn operatoren en geen eigenschappen van de besturingselementen zelf. Verwijzingen naar Parent.Parent, Self.Parent of Parent.Self worden niet ondersteund.

Identifier-namen

De namen van variabelen, gegevensbronnen, kolommen en andere objecten kunnen elk Unicode-teken bevatten.

Plaats een naam die een spatie of ander speciaal teken bevat tussen enkele aanhalingstekens.
Gebruik twee enkele aanhalingstekens samen om een één enkel aanhalingsteken in de naam weer te geven. Namen die geen speciale tekens bevatten, vereisen geen enkele aanhalingstekens.

Hier zijn enkele voorbeeldnamen voor kolommen die u in een tabel kunt tegenkomen, met toelichting op hoe ze worden weergegeven in een formule:

Kolomnamen in een database Kolomverwijzing in een formule
EenvoudigeNaam SimpleName
NaamMet123Cijfers NameWith123Numbers
Naam met spaties 'Name with spaces'
Naam met "dubbele" aanhalingstekens 'Name with "double" quotes'
Naam met 'enkele' aanhalingstekens 'Name with ''single'' quotes'
Naam met een @ apenstaartje 'Name with an @ at sign'

Dubbele aanhalingstekens worden gebruikt om tekenreeksen aan te wijzen.

Weergavenamen en logische namen

Sommige gegevensbronnen, zoals SharePoint en Microsoft Dataverse, gebruiken twee verschillende namen om te verwijzen naar dezelfde tabel of kolom met gegevens:

  • Logische naam - Een naam die gegarandeerd uniek is, die niet verandert nadat hij is aangemaakt, die doorgaans geen spaties of andere speciale tekens toestaat en die niet is gelokaliseerd in verschillende talen. Als gevolg hiervan kan de naam cryptisch zijn. Deze namen worden gebruikt door professionele ontwikkelaars. Bijvoorbeeld cra3a_customfield. Deze naam kan ook worden aangeduid als schemanaam of gewoon naam.

  • weergavenaam - Een naam die gebruiksvriendelijk is en bedoeld is om door eindgebruikers gezien te worden. Deze naam is mogelijk niet uniek, kan in de loop van de tijd veranderen, kan spaties en elk Unicode-teken bevatten en kan naar verschillende talen worden vertaald. Kijkend naar het bovenstaande voorbeeld kan de weergavenaam Aangepast veld zijn met een spatie tussen de woorden.

Aangezien weergavenamen gemakkelijker te begrijpen zijn, stelt Power Fx deze als keuzes en worden geen logische namen voorgesteld. Hoewel logische namen niet worden voorgesteld, kunnen ze toch worden gebruikt als ze indirect worden getypt.

Stel bijvoorbeeld dat u een Aangepast veld hebt toegevoegd aan een entiteit in Dataverse. Het systeem zal u een logische naam toewijzen die u alleen kunt wijzigen bij het maken van het veld. Het resultaat zou er ongeveer zo uitzien:

Entiteit Accounts waaraan Aangepast veld is toegevoegd, met de weergavenaam

Bij het schrijven van een verwijzing naar een veld Accounts, wordt de suggestie gedaan om 'Aangepast veld' te gebruiken, aangezien dit de weergavenaam is. De enkele aanhalingstekens moeten worden gebruikt omdat deze naam een spatie bevat:

Studio-formulebalk met suggesties voor veldnamen van Accounts, met het weergavenaam 'Aangepast veld' gemarkeerd.

Na het selecteren van de suggestie wordt 'Aangepast veld' weergegeven in de formulebalk en worden de gegevens opgehaald:

Studio-formulebalk waarin gebruik van de weergavenaam 'Aangepast veld' wordt getoond voor het veld.

Hoewel dit niet wordt gesuggereerd, kunnen we ook de logische naam voor dit veld gebruiken. Hierdoor worden dezelfde gegevens opgehaald. Er zijn geen enkele aanhalingstekens vereist omdat deze naam geen spaties of speciale tekens bevat:

Studio-formulebalk waarin gebruik van de logische naam cr5e3_aangepastveld wordt getoond voor het veld.

Achter de schermen wordt een toewijzing bijgehouden tussen de weergavenamen in formules en de onderliggende logische namen. Aangezien logische namen moeten worden gebruikt om te communiceren met de gegevensbron, wordt deze toewijzing gebruikt om automatisch van de huidige weergavenaam naar de logische naam te converteren. Dat is ook wat wordt gezien in het netwerkverkeer. Deze toewijzing wordt ook gebruikt om terug te converteren naar logische namen bij het overschakelen naar nieuwe weergavenamen, bijvoorbeeld als een weergavenaam verandert of een maker in een andere taal de app bewerkt.

Notitie

Logische namen worden niet vertaald wanneer een app wordt verplaatst van de ene omgeving naar de andere. Voor Dataverse-systeementiteit- en veldnamen zou dit geen probleem moeten zijn aangezien logische namen consistent zijn in verschillende omgevingen. Maar alle aangepaste velden, zoals cra3a_customfield in dit voorbeeld hierboven, kunnen een ander omgevingsvoorvoegsel hebben (cra3a in dit geval). Weergavenamen hebben de voorkeur, omdat ze kunnen worden vergeleken met weergavenamen in de nieuwe omgeving.

Naamondubbelzinnigheid

Omdat weergavenamen niet uniek zijn, kan dezelfde weergavenaam meer dan eens voorkomen in dezelfde entiteit. Wanneer dit gebeurt, wordt bij een of meer van de gelijkluidende namen de logische naam tussen haakjes achter de weergavenaam toegevoegd. Voortbouwend op het bovenstaande voorbeeld, als er een tweede veld zou zijn met dezelfde weergavenaam Aangepast veld en de logische naam cra3a_aangepastveldalt, dan zouden de suggesties dit laten zien:

Studio-formulebalk die het gebruik van de logische naam cr5e3_aangepastveldalt laat zien om de twee versies van

Tekenreeksen voor naamondubbelzinnigheid worden toegevoegd in andere situaties waarin naamconflicten optreden, zoals de namen van entiteiten, optiesets en andere Dataverse-items.

Ondubbelzinnigheidsoperator

Sommige functies maken recordbereiken voor toegang tot de velden van een tabel tijdens het verwerken van elke record, zoals Filter, AddColumns en Sum. Veldnamen waarbij het recordbereik is toegevoegd, overschrijven dezelfde namen elders in de app. Als dit gebeurt, kunt u nog steeds toegang krijgen tot waarden buiten het recordbereik met de operator @ voor ondubbelzinnigheid:

  • Als u toegang wilt krijgen tot waarden van geneste recordbereiken, gebruikt u de operator @ met de naam van de tabel die wordt bewerkt met behulp van dit patroon:
    Tabel[@Veldnaam]
  • Als u toegang wilt krijgen tot globale waarden, zoals gegevensbronnen, verzamelingen en contextvariabelen, gebruikt u het patroon [@Objectnaam] (zonder een tabelaanduiding).

Zie recordbereiken voor meer informatie en voorbeelden.