Operatorer og id'er i Power Apps
Gælder for: Lærredapps Modelbaserede apps Power Pages
Nogle af disse operatorer er afhængige af forfatterens sprog. Du kan finde flere oplysninger om understøttelse af sprog i lærredapps under Globale apps.
Symbol | Type | Eksempel | Beskrivelse |
---|---|---|---|
'...' | Identifikator | 'Kontonavn' | Identifikatorer med specialtegn, herunder mellemrum, er sat i enkelte anførselstegn |
"..." | Tekststreng | "Hej verden" | Tekststrenge sættes i dobbelte anførselstegn |
$"..." | Strenginterpolation | $"Kære {FirstName}," | Formler, der er integreret i en tekststreng |
. | Egenskabsvælger | Skyder1.Værdi Color.Red Acceleration.X |
Uddrager en egenskab fra en tabel, et kontrolelement, et signal eller en optælling. I forbindelse med bagudkompatibilitet kan ! også bruges. |
. [sprogafhængig] |
Decimalseparator | 1.23 | Separator mellem hele og dele af et tal. Tegnet afhænger af sproget. |
( ) | Parenteser | Filter(T, A < 10) (1 + 2) * 3 |
Gennemtvinger prioriteret rækkefølge og grupperer underordnede udtryk i et større udtryk. |
+ | Aritmetiske operatorer | 1 + 2 | Tilføjelse |
- | 2 - 1 | Subtraktion og tegn | |
* | 2 * 3 | Multiplikation | |
/ | 2 / 3 | Division (se også funktionen Mod) | |
^ | 2 ^ 3 | Eksponentiering, svarende til funktionen Power | |
% | 20% | Procent (svarende til "* 1/100") | |
= | Sammenligningsoperatorer | Pris = 100 | Er lig med |
> | Pris > 100 | Større end | |
>= | Pris >= 100 | Større end eller lig med | |
< | Pris < 100 | Mindre end | |
<= | Pris <= 100 | Er mindre end eller lig med | |
<> | Pris <> 100 | Er ikke lig med | |
& | Operator til strengsammenkædning | "hej" & " " & "verden" | Får flere strenge til at se ud som om, de kommer i løbende rækkefølge |
&& eller og | Logiske operatorer | Pris < 100 & Slider1.Værdi = 20 eller Price < 100 And Slider1.Value = 20 |
Logisk forbindelse, der svarer til funktionen And |
|| eller Eller | Pris < 100 || Skyder1.Værdi = 20 eller Pris < 100 eller Skyder1.Værdi = 20 | Logisk adskillelse, der svarer til funktionen Or | |
! eller Not | ! (Pris < 100) eller ej (Pris < 100) | Logisk negation, der svarer til funktionen Not | |
exactin | Operatører af medlemskab | Galleri1.Valgte nøjagtige SavedItems | Hører til en samling eller en tabel |
exactin | "Windows" exactin "For at vise vinduer i Windows-operativsystemet..." | Understrengstest (store og små bogstaver) | |
i | Galleri1.Valgt i SavedItems | Hører til en samling eller en tabel | |
i | "The" i "Tastaturet og skærmen..." | Understrengstest (uafhængigt af store og små bogstaver) | |
@ | Operator til flertydige | MyTable[@fieldname] | Fjernelse af flertydige udtryk for felter |
@ | [@MyVariable] | Global fjernelse af flertydige udtryk | |
, [sprogafhængig] |
Listeseparator | Hvis (x < 10, "lav", "god" ) { X: 12, Y: 32 } [ 1, 2, 3 ] |
Adskiller: Dette tegn afhænger af sproget. |
; [sprogafhængig] |
Sammenkædning af formel | Collect(T, A); Naviger(S1, "") | Adskiller aktivering af funktioner i egenskaber for funktionsmåde. Sammenkædningsoperatoren afhænger af sproget. |
Som | Som operatør | AllCustomers som kunde | Tilsidesætter ThisItem og ThisRecord i gallerier og postområdefunktioner. As er nyttigt til at give et bedre, specifikt navn og er især vigtigt i indlejrede scenarier. |
Selv | Selvgående | Selvudfyld | Adgang til egenskaberne for det aktuelle kontrolelement |
overordnet | Overordnet operatør | Overordnede.Udfyld | Adgang til egenskaberne for en beholder til kontrolelementer |
Denne vare | Operatoren ThisItem | ThisItem.FirstName | Adgang til felter i et Gallery- eller form-kontrolelement |
Denne plade | Operatoren ThisRecord | ThisRecord.FirstName | Adgang til den fulde post og postens individuelle felter i ForAll, Sum, With og andre postområdefunktioner. Kan tilsidesættes med As-operatoren. |
Bemærk
Operatoren @ kan også bruges til at validere postobjekttypen i forhold til en datakilde. F.eks. Collect(coll,Account@{'Account Number: 1111')
in- og exactin-operatorer
Brug operatorerne in og exactin til at søge efter strenge i en datakilde, f.eks. i en samling eller i en importeret tabel. Operatoren in identificerer overensstemmelser, uafhængigt af store og små bogstaver, og operatoren exactin identificerer kun overensstemmelser, hvis de benytter små og store bogstaver på samme måde. Her er et eksempel:
Opret eller importér en samling, der hedder Inventory, og vis den i galleriet som den første procedure, der er beskrevet i Vise billeder og tekst i et galleri.
Angiv egenskaben Items for galleriet til denne formel:
Filter(Lager, "E" i Produktnavn)Galleriet viser alle produkter undtagen Callisto, fordi navnet på produktet er det eneste, der ikke indeholder det angivne bogstav.
Rediger egenskaben Items for galleriet til denne formel:
Filter(Lager, "E" eksakt i Produktnavn)Galleriet viser kun Europa, da kun dette navn indeholder det bogstav, du har angivet i dette tilfælde.
ThisItem-, ThisRecord- og As-operatorer
Nogle enkelte kontrolelementer og funktioner anvender formler på individuelle poster i en tabel. Du kan henvise til den individuelle post i en formel ved at bruge en af følgende fremgangsmåder:
Operatør | Gælder for: | Beskrivelse |
---|---|---|
Denne vare | Galleri kontrol Redigere formularkontrolelement Kontrolelement til visning af formular |
Standardnavnet for den aktuelle post i et Galleri- eller et formularkontrolelement. |
Denne plade | ForAll,Filter,Med,Sum ... ... ... og andre postområdefunktioner | Standardnavnet for den aktuelle post i ForAll- og andre postområdefunktioner. |
Somnavn | Galleri kontrol ForAll,Filter,Med,Sum ... ... ... og andre postområdefunktioner |
Definerer et navn på den aktuelle post og erstatter ThisItem eller ThisRecord som standard. Brug As til at gøre formlerne nemmere at forstå og til at løse flertydighed, når de indlejres. |
ThisItem-operator
I følgende Gallery-kontrolelement angives egenskaben Items f.eks. til datakilden Medarbejdere (f.eks. tabellen Medarbejdere, der er inkluderet i eksemplet Northwind Traders):
Employees
Det første element i galleriet er en skabelon, der replikeres for de enkelte medarbejdere. I skabelonen bruger formlen til billedet ThisItem til at referere til det aktuelle element:
ThisItem.Picture
Desuden bruger formlen for navnet også ThisItem:
ThisItem.'First Name' & " " & ThisItem.'Last Name'
ThisRecord-operator
ThisRecord bruges i funktioner, der har et postomfang. Vi kan f.eks. bruge Filter-funktionen sammen med galleriets egenskab Items til kun at vise fornavne med M:
Filter( Employees, StartsWith( ThisRecord.Employee.'First Name', "M" ) )
ThisRecord er valgfri og underforstået ved at bruge felterne direkte, for eksempel kunne vi i dette tilfælde have skrevet:
Filter( Employees, StartsWith( 'First Name', "M" ) )
Selvom det er valgfrit, kan ThisRecord gøre det nemmere at forstå formler. Det kan være nødvendigt i tvetydige situationer, hvor et feltnavn også kan være et relationsnavn. ThisRecord er valgfri, mens ThisItem altid er påkrævet.
Brug ThisRecord til at referere til hele posten med Patch, Collect og andre postområdefunktioner. Følgende formel angiver f.eks. statussen for alle inaktive medarbejdere til aktiv:
With( { InactiveEmployees: Filter( Employees, Status = 'Status (Employees)'.Inactive ) },
ForAll( InactiveEmployees,
Patch( Employees, ThisRecord, { Status: 'Status (Employees)'.Active } ) ) )
As-operator
Brug As-operatoren til at navngive en post i en galleri- eller postområdefunktion, hvilket tilsidesætter ThisItem eller ThisRecord som standard. Hvis du navngiver posten, kan formlerne blive nemmere at forstå og være nødvendige i indlejrede situationer for at få adgang til poster i andre områder.
Du kan f.eks. redigere egenskaben Items for galleriet til at bruge As for at identificere, at vi har at gøre med en medarbejder:
Employees As Employee
Formlerne til billedet og navnet justeres, så de bruger dette navn til den aktuelle post:
Employee.Picture
Employee.'First Name' & " " & Employee.'Last Name'
As kan også bruges sammen med postomfangsfunktioner til at erstatte standardnavnet ThisRecord. Vi kan anvende denne på vores tidligere eksempel for at tydeliggøre den post, vi arbejder med:
With( { InactiveEmployees: Filter( Employees, Status = 'Status (Employees)'.Inactive ) },
ForAll( InactiveEmployees As Employee,
Patch( Employees, Employee, { Status: 'Status (Employees)'.Active } ) ) )
Når gallerier og postområdefunktioner indlejres, henviser ThisItem og ThisRecord altid til det inderste område, så poster i ydre områder bliver utilgængelige. Brug As til at gøre alle postområder tilgængelige ved at give hvert enkelt et unikt navn.
F.eks. fremstiller denne formel et skakbrætmønster som en tekststreng ved at indlejre to ForAll-funktioner:
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
)
Angivelse af et Label-kontrolelements Text-egenskab til denne formel viser:
Lad os udlægge, hvad der sker her:
- Vi starter med at gentage en unavngivet tabel med 8 nummererede poster fra funktionen Sequence. Denne løkke gælder for hver enkelt række på brættet, som almindeligvis kaldes Rangering, så derfor tildeler vi den dette navn.
- I forbindelse med de enkelte rækker gentager vi endnu en unavngivet tabel med 8 kolonner, og tildeler det almindelige navn Fil.
- Hvis Rank.Value + File.Value er et ulige tal, får firkanten et X, ellers et punktum. Denne del af formlen bruges til at henvise til begge ForAll-løkker, der er gjort muligt ved hjælp af As-operatoren.
- Concat bruges to gange, først til at samle kolonnerne og derefter rækkerne, med en Char(10) smidt ind for at oprette en ny linje.
Et lignende eksempel er muligt med indlejrede Gallery-kontrolelementer i stedet for ForAll-funktioner. Lad os begynde med det lodrette galleri for Rangering. Dette gallerikontrolelement indeholder følgende Items-formel for:
Sequence(8) as Rank
I dette galleri anbringer vi et vandret galleri for Fil, som replikeres for hver Rangering med en Items-egenskab for:
Sequence(8) as File
I dette galleri tilføjer vi endelig et Label-kontrolelement, der replikeres for hver enkelt Fil og Rangering. Vi tilpasser størrelsen, så den fylder hele pladsen, og bruger egenskaben Fill til at angive farven med denne formel:
If( Mod( Rank.Value + File.Value, 2 ) = 1, Green, Beige )
Selv-operatorer og overordnede operatorer
Der findes tre måder, du kan referere til et kontrolelement og dets egenskaber på i en formel:
Metode | Beskrivelse |
---|---|
Ved navn på kontrolelement | Der kan refereres til alle kontrolelementer ved navn i appen. F.eks. refererer Etikette1.Udfyld til udfyldningsegenskaben for det kontrolelement, der har navnet Etikette1. |
Selvgående | Det er ofte praktisk at henvise til en anden egenskab for det samme kontrolelement, når du skriver en formel. I stedet for at bruge en absolut reference til et navn er det nemmere og mere gangbart at bruge en relativ reference til en selv. Operatoren Selv giver nem adgang til det aktuelle kontrolelement. F.eks. refererer Selv.Udfyld til udfyldningsfarven for det aktuelle kontrolelement. |
Overordnet operatør | Visse kontrolelementer er vært for andre kontrolelementer, f.eks kontrolelementerne Screen og Gallery. Værtskontrolelementet for kontrolelementerne deri kaldes det overordnede. På samme måde som operatoren Selv giver operatoren Overordnet en let relativ henvisning til beholderkontrolelementet. Eksempelvis refererer Overordnet.Udfyld til udfyldningsegenskaben for det kontrolelement, der er beholder for det aktuelle kontrolelement. |
Self og Overordnet er operatorer og ikke egenskaber på selve kontrolelementerne. Referencer til Overordnet.Overordnet, Selv.Overordnet eller Overordnet.selv understøttes ikke.
Id-navne
Navnene på variabler, datakilder, kolonner og andre objekter kan indeholde Unicode.
Brug enkelte anførselstegn omkring et navn, der indeholder et mellemrum eller et andet specialtegn.
Brug to enkelte anførselstegn ved siden af hinanden for at repræsentere et enkelt anførselstegn i navnet. Navne, der ikke indeholder specialtegn, kræver ikke enkelte anførselstegn.
Her er et par eksempler på kolonnenavne, du kan støde på i en tabel, og hvordan de repræsenteres i en formel:
Kolonnenavn i en database | Kolonnereference i en formel |
---|---|
SimpleName | SimpleName |
NameWith123Numbers | NameWith123Numbers |
Navn med mellemrum | 'Name with spaces' |
Navn med "dobbelte" anførselstegn | 'Name with "double" quotes' |
Navn med 'enkelte' anførselstegn | 'Name with ''single'' quotes' |
Navn med et snabel-a (@) | 'Name with an @ at sign' |
Dobbelte anførselstegn bruges til at angive tekststrenge.
Viste navne og logiske navne
Nogle datakilder som f.eks. SharePoint og Microsoft Dataverse har to forskellige navne til at referere til den samme tabel eller kolonne med data:
Logisk navn – Et navn, der garanteret er entydigt, ikke ændres efter oprettelse, normalt ikke tillader mellemrum eller andre specialtegn og ikke er lokaliseret til forskellige sprog. Navnet kan derfor være kryptisk. Disse navne bruges af professionelle udviklere. F.eks. cra3a_customfield. Navnet kan også kaldet et skemanavn eller blot et navn.
Visningsnavn – Et navn, der er brugervenligt og beregnet til at blive set af slutbrugere. Dette navn er muligvis ikke entydigt, det kan ændre sig med tiden, indeholde mellemrum og ethvert Unicode-tegn, og det kan blive oversat til andre sprog. Tilsvarende ovenstående eksempel kan det viste navn være Brugerdefineret felt med mellemrum mellem ordene.
Da de viste navne er nemmere at forstå, foreslår lærredapps dem som valgmuligheder og foreslår ikke logiske navne. Selvom logiske navne ikke foreslås, kan de stadig bruges, hvis de skrives indirekte.
Forestil dig f.eks., at du har føjet et brugerdefineret felt til en tabel i Dataverse. Systemet tildeler dig et logisk navn, som du kun kan ændre, når du opretter feltet. Resultatet vil se nogenlunde sådan ud:
Når du opretter en reference til et område i Konti, foreslås det at bruge 'Brugerdefineret felt', da dette er det viste navn. Enkelte anførselstegn skal bruges, fordi der er mellemrum i dette navn:
Når du har valgt forslaget, vises 'Brugerdefineret felt' på formellinjen, og dataene hentes:
Selvom det ikke er foreslået, kan vi også bruge det logiske navn til dette felt. Det medfører, at de samme data hentes. Der kræves ingen enkelte anførselstegn, da dette navn ikke indeholder mellemrum eller specialtegn:
Bag kulisserne bevares en tilknytning mellem de viste navne, som ses i formlerne, og de underliggende logiske navne. Da logiske navne skal bruges til at kommunikere med datakilden, bruges denne tilknytning til automatisk at konvertere fra det aktuelle viste navn til det logiske navn, og det er det, der ses i netværkstrafikken. Denne tilknytning bruges også til at konvertere tilbage til logiske navne for at skifte til nye viste navne, f.eks. hvis et vist navn ændres eller en udvikler på et andet sprog redigerer appen.
Bemærk
Logiske navne oversættes ikke, når en app flyttes mellem forskellige miljøer. Til Dataverse-systemets tabel- og feltnavne bør dette ikke være et problem, da logiske navne er konsistente på tværs af miljøer. Men eventuelle brugerdefinerede felter som cra3a_customfield i dette eksempel kan have et andet miljøpræfiks (cra3a i dette tilfælde). Viste navne foretrækkes, da de kan sammenlignes med viste navne i det nye miljø.
Fjernelse af flertydige udtryk for navne
Da viste navne ikke er entydige, kan det samme viste navn forekomme flere gange i den samme tabel. Når dette sker, tilføjes det logiske navn i parenteser i slutningen af det viste navn for et eller flere af de navne, der er i konflikt med hinanden. Hvis vi tager eksemplet ovenfor, og der er et andet felt med det samme viste navn Brugerdefineret felt og det logiske navn cra3a_customfieldalt, vil forslagene være:
Utvetydige navnestrenge tilføjes i andre situationer, hvor der opstår navnekonflikter, f.eks. navnene på tabeller, valgmuligheder og andre Dataverse-elementer.
Fjernelse af flertydige udtryk for operator
Nogle funktioner opretter postområder for at få adgang til felter i tabellen, mens hver post behandles, f.eks. Filter, AddColumns og Sum. De feltnavne, der tilføjes sammen med postområdet, tilsidesætter de samme navne fra andre steder i appen. Når det sker, kan du stadig få adgang til værdier uden for postområdet med operatoren @ til fjernelse af flertydige udtryk:
- Du kan få adgang til værdier fra indlejrede postområder ved at bruge operatoren @ sammen med navnet på den tabel, der arbejdes på, ved hjælp af mønsteret:
Tabel[@FieldName] - Du kan få adgang til globale værdier, som f.eks. datakilder, samlinger og kontekstvariabler, ved at bruge mønsteret [@ObjectName] (uden en tabelangivelse).
Se Postområder for at få flere oplysninger og eksempler.