Operators en identifiers in Power Apps

Van toepassing op: Canvas-apps Modelgestuurde apps

Sommige van deze operators zijn afhankelijk van de taal van de auteur. Zie Algemen apps voor meer informatie over taalondersteuning in canvas-apps.

Symbool Type Voorbeeld Beschrijving
'...' Id 'Accountnaam' Id's die speciale tekens bevatten, inclusief spaties, worden tussen enkele aanhalingstekens geplaatst
"..." Teksttekenreeks "Hallo wereld" Teksttekenreeksen staan tussen dubbele aanhalingstekens
$"..." Tekenreeksinterpolatie $"Beste {FirstName}," Formules ingesloten in een teksttekenreeks
. Eigenschapselectie Slider1.Value
Color.Red
Acceleration.X
Hiermee wordt een eigenschap opgehaald uit een tabel, besturingselement, signaal 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 And Logische operators Prijs < 100 && Slider1.Value = 20
of Prijs < 100 And Slider1.Value = 20
Logische combinatie, vergelijkbaar met de functie And
|| of Or   Prijs < 100 || Slider1.Value = 20 of Prijs < 100 of Slider1.Value = 20 Logische scheiding, vergelijkbaar met de functie Or
! of Not   !(Prijs < 100) of Not (Prijs < 100) Logische negatie, vergelijkbaar met de functie Not
exactin Lidmaatschapsoperators Gallery1.Selected exactin SavedItems Lidmaatschap van een verzameling of tabel
exactin   "Windows" exactin “Om vensters weer te geven in het Windows-besturingssysteem...” Test van subtekenreeks (hoofdlettergevoelig)
in   Gallery1.Selected in SavedItems Lidmaatschap van een verzameling of tabel
in   "De" in "Het toetsenbord en de monitor..." Test van subtekenreeks (niet hoofdlettergevoelig)
@ Ondubbelzinnigheidsoperator MijnTabel[@fieldname] Ondubbelzinnigheid van velden
@   [@MijnVariabele] Algemene ondubbelzinnigheid
,
[taalafhankelijk]
Lijstscheidingsteken If( 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 Collect(T, A); Navigate(S1, "") Afzonderlijke aanroepen van functies in de gedragseigenschappen. De koppelingsoperator is afhankelijk van de taal.
Als Operator As AllCustomers As Customer Overschrijft ThisItem en ThisRecord in galerieën en recordbereikfuncties. As is handig om een betere, specifieke naam op te geven en is vooral belangrijk in geneste scenario's.
Self Self-operator Self.Fill Toegang tot eigenschappen van het huidige besturingselement
Parent Parent-operator Parent.Fill Toegang tot de eigenschappen van een besturingselementcontainer
ThisItem ThisItem-operator ThisItem.FirstName Toegang tot de velden van het besturingselement Gallery of Form
ThisRecord Operator ThisRecord ThisRecord.FirstName 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.

Notitie

De @ operator kan ook worden gebruikt om het type recordobject te valideren tegen een gegevensbron. Bijvoorbeeld Collect(coll,Account@{'Account Number: 1111')

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(Inventory, "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(Inventory, "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
ThisItem Besturingselement Galerie
Besturingselement Formulier bewerken
Besturingselement Formulier weergeven
De standaardnaam voor de huidige record in een besturingselement Gallery of Form.
ThisRecord ForAll, Filter, With, Sum en andere recordbereikfuncties De standaardnaam voor de huidige record in ForAll en andere recordbereikfuncties.
Zoalsnaam Besturingselement Galerie
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

Bijvoorbeeld in het volgende besturingselement Gallery wordt de eigenschap Items ingesteld op de gegevensbron Werknemers (zoals de tabel Werknemers 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 rechtstreeks te gebruiken. In dit geval hadden we bijvoorbeeld 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 ter vervanging van de standaardnaam ThisRecord. 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 tweemaal gebruikt, eerst om de kolommen en daarna om de rijen samen te stellen, met toevoeging van een Char(10) 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.
Self-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.
Bovenliggende 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 Parent zijn operators 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. Voor namen die geen speciale tekens bevatten, zijn geen enkele aanhalingstekens vereist.

Hier volgen enkele voorbeelden van kolomnamen die u in een tabel kunt tegenkomen en hoe deze in een formule worden weergegeven:

Kolomnaam 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, niet verandert nadat hij is gemaakt, meestal geen spaties of andere speciale tekens toestaat en niet in verschillende talen is gelokaliseerd. 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 gezien te worden door eindgebruikers. 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.

Omdat weergavenamen gemakkelijker te begrijpen zijn, zullen canvas-apps ze als keuzes voorstellen en geen logische namen voorstellen. Hoewel er geen logische namen worden gesuggereerd, kunnen ze nog steeds worden gebruikt als ze indirect worden getypt.

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

Tabel Accounts met Aangepast veld toegevoegd, met een weergavenaam van

Bij het schrijven van een verwijzing naar een veld Accounts, wordt de suggestie gedaan om 'Aangepast veld' te gebruiken, aangezien dit de weergavenaam is. Er moeten enkele aanhalingstekens 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 het niet wordt gesuggereerd, kunnen we ook de logische naam gebruiken voor dit veld. 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_customfield 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 systeemtabel- en veldnamen van Dataverse, zou dit geen probleem moeten zijn aangezien logische namen in verschillende omgevingen consistent zijn. 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.

Ondubbelzinnigheid van namen

Aangezien weergavenamen niet uniek zijn, kan dezelfde weergavenaam meerdere keren in dezelfde tabel voorkomen. Wanneer dit gebeurt, wordt bij een of meer van de conflicterende namen aan het einde van de weergavenaam de logische naam toegevoegd tussen haakjes. 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 het ondubbelzinnig maken van namen worden toegevoegd in andere situaties waarin naamconflicten optreden, zoals de namen van tabellen, keuzes 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:
    Table[@FieldName]
  • 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.