Operatorer og identifikatorer i Power Apps
Gjelder for: Lerretsapper Modelldrevne apper Power Pages
Noen av disse operatorene er avhengige av språket til forfatteren. Hvis du vil ha mer informasjon om språkstøtte i lerretsapper, kan du se Globale apper.
Symbol | Type | Eksempel | Beskrivelse |
---|---|---|---|
'...' | Identifikator | «Navn på konto» | Identifikatorer som inneholder spesialtegn, inkludert mellomrom, står i enkle anførselstegn |
«...» | Tekststreng | «Hei, verden» | Tekststrenger står i doble anførselstegn |
$"..." | Strenginterpolering | $«Kjære {FirstName},» | Formler som er innebygd i en tekststreng |
. | Valg av egenskap | Glidebryter1.Verdi Color.Red Acceleration.X |
Henter en egenskap fra en tabell, kontroll, et signal eller en opplisting. For bakoverkompatibilitet kan du også bruke !. |
. [språkavhengig] |
Desimalskilletegn | 1.23 | Skilletegn mellom hele tall og delvise tall. Tegnet er avhengig av språket. |
( ) | Parenteser | Filter(T, A < 10) (1 + 2) * 3 |
Fremtvinger prioritert rekkefølge, og grupperer deluttrykk i et større uttrykk |
+ | Aritmetiske operatorer | 1 + 2 | Addisjon |
- | 2 - 1 | Subtraksjon og tegn | |
* | 2 * 3 | Multiplikasjon | |
/ | 2 / 3 | Divisjon (se også Mod-funksjonen) | |
^ | 2 ^ 3 | Eksponentiering, tilsvarer Power-funksjonen | |
% | 20% | Prosent (tilsvarer "* 1/100") | |
= | Sammenligningsoperatorer | Pris = 100 | Er lik |
> | Pris > 100 | Større enn | |
>= | Pris >= 100 | Større enn eller lik | |
< | Pris < 100 | Mindre enn | |
<= | Pris <= 100 | Mindre enn eller lik | |
<> | Pris <> 100 | Ikke lik | |
& | Operator for sammenslåing av streng | "hei" & " " og "verden" | Gjør at flere strenger vises kontinuerlig |
&&eller og | Logiske operatorer | Pris < 100 & Slider1.Verdi = 20 eller Price < 100 And Slider1.Value = 20 |
Logisk forbindelse, tilsvarer And-funksjonen |
|| eller Eller | Pris < 100 || Skyveknapp1.Verdi = 20 eller Pris < 100 eller Glidebryter1.Verdi = 20 | Logisk disjunksjon, tilsvarer Or-funksjonen | |
! eller Not | ! (Pris < 100) eller ikke (Pris < 100) | Logisk negasjon, tilsvarer Not-funksjonen | |
eksaktin | Operatører av medlemskap | Galleri1.Valgte eksakti SavedItems | Tilhører en samling eller en tabell |
eksaktin | "Windows" eksakti "For å vise vinduer i Windows-operativsystemet ..." | Delstreng-test (skiller mellom små og store bokstaver) | |
i | Galleri1.Valgt i SavedItems | Tilhører en samling eller en tabell | |
i | "Den" i "Tastaturet og skjermen..." | Delstreng-test (skiller ikke mellom små og store bokstaver) | |
@ | Tvetydighet operatør | Mitt bord[@fieldname] | Felttvetydighet |
@ | [@MyVariable] | Global tvetydighet | |
, [språkavhengig] |
Listeskilletegn | Hvis( x < 10, "lav", "god") { X: 12, Y: 32 } [ 1, 2, 3 ] |
Skiller: Dette tegnet er avhengig av språket. |
; [språkavhengig] |
Formelsammenkjeding | Samle (T, A); Naviger(S1, "") | Skiller aktivering av funksjoner i egenskaper for virkemåte. Sammenkjedingsoperatoren er avhengig av språket. |
Som | Som operatør | AllCustomers som kunde | Overstyrer ThisItem og ThisRecord i gallerier og funksjoner for oppføringsomfang. As er nyttig for å gi et bedre, spesifikt navn og er spesielt viktig i nestede scenarier. |
Selv | Egen operatør | Fyll ut selv | Tilgang til egenskapene for den gjeldende kontrollen |
overordnet | overordnet operatør | Overordnet.Fyll | Tilgang til egenskapene for en kontrollbeholder |
Denne gjenstanden | ThisItem-operatøren | ThisItem.FirstName | Tilgang til felter i en Gallery- eller form-kontroll |
Denne platen | ThisRecord-operatøren | ThisRecord.FirstName | Tilgang til den fullstendige oppføringen og enkeltfelt i oppføringen i ForAll, Sum, With og andre funksjoner for oppføringsomfang. Kan overstyres med As-operatoren. |
Merk
Operatoren @ kan også brukes til å validere oppføringsobjekttypen mot en datakilde. Eksempel: Collect(coll,Account@{'Account Number: 1111')
in- og exactin-operatorer
Bruk operatorene in og exactin til å finne en streng i en datakilde, for eksempel en samling eller en importert tabell. in-operatoren identifiserer treff uavhengig av bokstavtype, og exactin-operatoren identifiserer treff bare hvis de samme store bokstavene er i bruk. Her er et eksempel:
Opprett eller importer en samling kalt Beholdning, og vis den i et galleri, som den første prosedyren i Vis bilder og tekst i et galleri beskriver.
Angi Items-egenskapen for galleriet til denne formelen:
Filter(Inventory, "E" i ProductName)Galleriet viser alle produktene bortsett fra Callisto. Det er fordi navnet er det eneste produktet som ikke inneholder bokstaven du oppgav.
Endre Items-egenskapen for galleriet til denne formelen:
Filter(Inventory, "E" eksakt ProductName)Galleriet viser bare Europa fordi navnet er det eneste som inneholder bokstaven du oppgav i det angitte tilfellet.
Operatorene ThisItem, ThisRecord og As
Noen få kontroller og funksjoner bruker formler på enkeltoppføringer i en tabell. Hvis du vil referere til den enkelte oppføringen i en formel, bruker du ett av følgende:
Operator | Gjelder følgende | Beskrivelse |
---|---|---|
Denne gjenstanden | Galleri-kontroll Redigere skjema-kontroll Kontroll for visning av skjema |
Standardnavnet på den gjeldende oppføringen i en Gallery-kontroll eller en skjemakontroll. |
Denne platen | ForAll,Filter,Med,Sum ... ... ... og andre postomfangsfunksjoner | Standardnavnet på den gjeldende oppføringen i ForAll og andre funksjoner for oppføringsomfang. |
Somnavn | Galleri-kontroll ForAll,Filter,Med,Sum ... ... ... og andre postomfangsfunksjoner |
Definerer et navn for den gjeldende oppføringen, og erstatter standard ThisItem eller ThisRecord. Bruk As til å gjøre formler enklere å forstå og løse tvetydigheter ved nesting. |
ThisItem-operatoren
I Gallery-kontrollen nedenfor er for eksempel Items-egenskapen satt til Ansatte-datakilden (for eksempel Ansatte-tabellen inkludert med Northwind Traders-eksemplet):
Employees
Det første elementet i galleriet er en mal som blir replikert for hver ansatt. I malen bruker formelen for bildet ThisItem til å referere til det gjeldende elementet:
ThisItem.Picture
På samme måte bruker også formelen for navnet ThisItem:
ThisItem.'First Name' & " " & ThisItem.'Last Name'
ThisRecord-operatoren
ThisRecord brukes i funksjoner som har et postomfang. Vi kan for eksempel bruke Filter-funksjonen med Items-egenskapen i galleriet til bare å vise fornavn som begynner på M:
Filter( Employees, StartsWith( ThisRecord.Employee.'First Name', "M" ) )
ThisRecord er valgfritt og underforstått ved å bruke feltene direkte, for eksempel i dette tilfellet kunne vi ha skrevet:
Filter( Employees, StartsWith( 'First Name', "M" ) )
Selv om det er valgfritt, kan du ved hjelp av ThisRecord gjøre det enklere å forstå formler, og det kan være nødvendig i tvetydige situasjoner der et feltnavn også kan være et relasjonsnavn. ThisRecord er valgfritt, mens ThisItem alltid er obligatorisk.
Bruk ThisRecord til å referere til hele oppføringen med Patch, Collect og andre funksjoner for oppføringsomfang. Følgende formel setter for eksempel statusen for alle inaktive ansatte til aktiv:
With( { InactiveEmployees: Filter( Employees, Status = 'Status (Employees)'.Inactive ) },
ForAll( InactiveEmployees,
Patch( Employees, ThisRecord, { Status: 'Status (Employees)'.Active } ) ) )
As-operatoren
Bruk As-operatoren til å gi navn til en oppføring i et galleri eller en funksjon for oppføringsomfang, som overstyrer standard ThisItem eller ThisRecord. Når du navngir oppføringen, kan det bli enklere å forstå formlene, og dette kan være nødvendig i nestede situasjoner for å få tilgang til oppføringer i andre omfang.
Du kan for eksempel endre Items-egenskapen i galleriet for å bruke As til å identifisere at vi arbeider med en ansatt:
Employees As Employee
Formlene for bildet og navnet justeres til å bruke dette navnet på den gjeldende oppføringen:
Employee.Picture
Employee.'First Name' & " " & Employee.'Last Name'
As kan også brukes med postomfangsfunksjoner for å erstatte standardnavnet ThisRecord. Vi kan bruke dette i det forrige eksemplet til å tydeliggjøre oppføringen vi arbeider med:
With( { InactiveEmployees: Filter( Employees, Status = 'Status (Employees)'.Inactive ) },
ForAll( InactiveEmployees As Employee,
Patch( Employees, Employee, { Status: 'Status (Employees)'.Active } ) ) )
Når du nester gallerier og funksjoner for oppføringsomfang, refererer ThisItem og ThisRecord alltid til det innerste omfanget, noe som fører til at oppføringer i ytre omfang ikke er tilgjengelige. Bruk As til å gjøre alle oppføringsomfang tilgjengelige ved å gi hvert unikt navn.
Denne formelen gir for eksempel et rutemønster som en tekststreng ved å neste to ForAll-funksjoner:
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
)
Angi en Label-kontrolls Text-egenskapen til denne formelen viser:
La oss forklare det som skjer her:
- Vi starter med å gjenta en tabell uten navn med åtte nummererte oppføringer fra Sequence-funksjonen. Denne løkken er for hver rad i mønsteret, noe som vanligvis kalles Rangering, så vi gir den dette navnet.
- For hver rad gjentar vi en ny tabell uten navn med 8 kolonner, og vi gir den fellesnavnet Fil.
- Hvis Rank.Value + File.Value er et oddetall, får kvadratet en X, ellers en prikk. Denne delen av formelen refererer til begge ForAll-løkkene, som er mulig ved hjelp av As-operatoren.
- Concat brukes to ganger, først for å sette sammen kolonnene og deretter radene, med en Char(10) kastet inn for å lage en ny linje.
Et lignende eksempel er mulig med nestede Gallery-kontroller i stedet for ForAll-funksjoner. La oss starte med det loddrette galleriet for Rangering. Denne gallerikontrollen vil ha Items-formelen:
Sequence(8) as Rank
I dette galleriet skal vi plassere et vannrett galleri for Fil, som blir replikert for hver Rangering, med en Items-egenskap på:
Sequence(8) as File
Til slutt i dette galleriet skal vi legge til en Label-kontroll som vil bli replikert for hver Fil og hver Rangering. Vi skalerer det slik at det fyller hele plassen, og bruker Fill-egenskapen til å angi fargen med denne formelen:
If( Mod( Rank.Value + File.Value, 2 ) = 1, Green, Beige )
Operatorene Self og Parent
Det finnes tre måter å referere til en kontroll og egenskapene på i en formel:
Metode | Beskrivelse |
---|---|
Etter navn på kontroll | Alle kontroller henvises til ved navn fra hvor som helst i appen. For eksempel refererer Label1.Fill til fill-egenskapen til kontrollen med navnet Label1. |
Egen operatør | Det er ofte nyttig å referere til en annen egenskap for den samme kontrollen når du skriver en formel. I stedet for å bruke en absolutt referanse med navn er det enklere og mer bærbart å bruke en relativ referanse til seg selv. Self-operatoren gir enkel tilgang til den gjeldende kontrollen. For eksempel refererer Self.Fill til fyllfargen for den gjeldende kontrollen. |
Overordnet operatør | Noen kontroller er verter for andre kontroller, for eksempel kontrollene Screen og Gallery. Vertskontrollen for kontrollene inni kalles parent. I likhet med Self-operatoren, gir Parent-operatoren en enkel relativ referanse til container-kontrollen. For eksempel refererer Parent.Fill til fill-egenskapen for kontrollen som er beholderen for den gjeldende kontrollen. |
Selv ogOverordnet er operatorer og ikke egenskaper på selve kontrollene. Referering til Parent.Parent, Self.Parent eller Parent.Self støttes ikke.
ID-navn
Navnene på variabler, datakilder, kolonner og andre objekter kan inneholde Unicode.
Bruk enkle anførselstegn rundt et navn som inneholder et mellomrom eller et annet spesialtegn.
Bruk to enkle anførselstegn sammen for å representere ett anførselstegn i navnet. Navn som ikke inneholder spesialtegn, krever ikke enkle anførselstegn.
Her er noen eksempler på kolonne som kan være i en tabell, og hvordan de representeres i en formel:
Kolonnenavn i en database | Kolonnereferanse i en formel |
---|---|
SimpleName | SimpleName |
NameWith123Numbers | NameWith123Numbers |
Navn med mellomrom | 'Name with spaces' |
Navn med "doble" anførselstegn | 'Name with "double" quotes' |
Navn med 'enkle' anførselstegn | 'Name with ''single'' quotes' |
Navn med et @-krøllalfategn | 'Name with an @ at sign' |
Doble anførselstegn brukes til å angi tekststrenger.
Visningsnavn og logiske navn
Noen datakilder, for eksempel SharePoint og Microsoft Dataverse, har to forskjellige navn som refererer til samme tabell eller kolonne med data:
Logisk navn – Et navn som garantert er unikt, ikke endres etter at det er opprettet, vanligvis ikke tillater mellomrom eller andre spesialtegn, og som ikke er lokalisert til forskjellige språk. Dette fører til at navnet kan være kryptisk. Disse navnene brukes av profesjonelle utviklere. For eksempel cra3a_customfield. Dette navnet kan også referere til som skjemanavn eller bare navn.
Visningsnavn – Et navn som er brukervennlig og ment å bli sett av sluttbrukere. Dette navnet er kanskje ikke unikt, kan endres over tid, kan inneholde mellomrom og eventuelle Unicode-tegn, og kan oversettes til andre språk. Visningsnavnet, som i eksemplet over, kan være et egendefinert felt med mellomrom mellom ordene.
Siden visningsnavn er enklere å forstå, vil lerretsapper foreslå dem som valg og ikke foreslå logiske navn. Selv om logiske navn ikke foreslås, kan du likevel bruke dem ved å skrive dem inn direkte.
La oss for eksempel si at du har lag til et Egendefinert felt i en tabell i Dataverse. Et logisk navn blir tilordnet for deg av systemet og kan bare endres når du oppretter feltet. Resultatet vil se omtrent slik ut:
Når du redigerer en referanse til et forretningsforbindelsesfelt, vises et forslag om å bruke 'Custom Field' siden det er visningsnavnet. Enkle anførselstegn må brukes fordi dette navnet inneholder et mellomrom:
Når du har valgt forslaget, vises 'Custom Field' på formellinjen, og dataene hentes:
Selv om det ikke foreslås, kan vi også bruke det logiske navnet for dette feltet. Det vil føre til at de samme dataene hentes. Enkle anførselstegn er ikke nødvendig fordi dette navnet ikke inneholder mellomrom eller spesialtegn:
I bakgrunnen opprettholdes en tilordning mellom visningsnavnene i formler og de underliggende logiske navnene. Siden logiske navn må brukes til å samhandle med datakilden, brukes denne tilordningen til å konvertere fra gjeldende visningsnavn til det logiske navnet automatisk, og det er det som ses i nettverkstrafikken. Denne tilordningen brukes også til å konvertere tilbake til logiske navn for å bytte til nye visningsnavn, for eksempel hvis et visningsnavn endres eller en produsent på et annet språk redigerer appen.
Merk
Logiske navn oversettes ikke når en app flyttes mellom miljøer. Når det gjelder Dataverse-systemtabellen og -feltnavn skal ikke dette være et problem siden logiske navn er konsekvente på tvers av miljøer. Eventuelle egendefinerte felt, for eksempel cra3a_customfield i eksemplet over, kan ha et annet miljøprefiks (cra3a i dette tilfellet). Visningsnavn foretrekkes fordi de kan sammenlignes med visningsnavn i det nye miljøet.
Navnetvetydighet
Siden visningsnavn ikke er unike, kan det samme visningsnavnet vises flere ganger i samme tabell. Når dette skjer, blir det logiske navnet lagt til på slutten av visningsnavn i parentes for ett av flere av navnene som er i konflikt med hverandre. Med utgangspunkt i eksemplet over, hvis det var et annet felt med samme visningsnavnet Custom Field med logisk navn cra3a_customfieldalt, vil forslaget vise:
Entydighetsstrenger for navn legges til i andre situasjoner der navnekonflikter oppstår, for eksempel navnene på tabeller, valg og andre Dataverse-elementer.
Tvetydighetsoperator
Noen funksjoner oppretter oppføringsområder for å få tilgang til feltene i tabellen under behandling av hver oppføring, som Filter, AddColumns og Sum. Feltnavnene som ble lagt til ved bruk av postområdet, overstyrer de samme navnene fra andre steder i appen. Når dette skjer, får du fremdeles tilgang til verdiene som er utenfor postområdet ved bruk av @-tvetydighetsoperatoren:
- For å få tilgang til verdiene fra nestede postområder, bruker du @-operatoren med navnet på tabellen som behandles, ved bruk av dette mønsteret:
Tabell[@feltnavn] - Hvis du vil ha tilgang til globale verdier, som datakilder, samlinger og kontekstvariabler, bruker du mønsteret [@ObjectName] (uten en tabellangivelse).
Hvis du vil ha mer informasjon og eksempler, kan du se postområder.