Operatorer og id'er i Power Apps

Gælder for: Lærredapps Modelbaserede apps

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 "Hello, World" Tekststrenge sættes i dobbelte anførselstegn
$"..." Indskudt streng $"Kære {FirstName}," Formler, der er integreret i en tekststreng
. Egenskabsvælger Slider1.Value
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 Price = 100 Er lig med
>   Price > 100 Større end
>=   Price >= 100 Større end eller lig med
<   Price < 100 Mindre end
<=   Price <= 100 Er mindre end eller lig med
<>   Price <> 100 Er ikke lig med
& Operator til strengsammenkædning "hello" & " " & "world" Får flere strenge til at se ud som om, de kommer i løbende rækkefølge
&& eller And Logiske operatorer Pris < 100 && Slider1.Value = 20
eller Price < 100 And Slider1.Value = 20
Logisk forbindelse, der svarer til funktionen And
|| eller Or   Price < 100 || Slider1.Value = 20 eller Price < 100 Or Slider1.Value = 20 Logisk adskillelse, der svarer til funktionen Or
! eller Not   !(Price < 100) eller Not (Price < 100) Logisk negation, der svarer til funktionen Not
exactin Medlemskabsoperatorer Gallery1.Selected exactin SavedItems Hører til en samling eller en tabel
exactin   "Windows" exactin “To display windows in the Windows operating system...” Understrengstest (store og små bogstaver)
i   Gallery1.Selected in SavedItems Hører til en samling eller en tabel
i   "The" in "The keyboard and the monitor..." Understrengstest (uafhængigt af store og små bogstaver)
@ Fjernelse af flertydige udtryk for operatorer MyTable[@fieldname] Fjernelse af flertydige udtryk for felter
@   [@MyVariable] Global fjernelse af flertydige udtryk
,
[sprogafhængig]
Listeseparator If( X < 10, "Low", "Good" )
{ X: 12, Y: 32 }
[ 1, 2, 3 ]
Adskiller:
  • argumenter i funktionskald
  • felter i en post
  • poster i en tabel
Dette tegn afhænger af sproget.
;
[sprogafhængig]
Sammenkædning af formel Collect(T, A); Navigate(S1, "") Adskiller aktivering af funktioner i egenskaber for funktionsmåde. Sammenkædningsoperatoren afhænger af sproget.
Som As-operator AllCustomers As Customer Tilsidesætter ThisItem og ThisRecord i gallerier og postområdefunktioner. As er praktisk til at give et bedre og specifikt navn og er særligt vigtigt i indlejrede scenarier.
Selv Selv-operator Selv.Udfyld Adgang til egenskaberne for det aktuelle kontrolelement
Overordnet Overordnet operator Parent.Fill Adgang til egenskaberne for en beholder til kontrolelementer
ThisItem ThisItem-operator ThisItem.FirstName Adgang til felter i et Gallery- eller form-kontrolelement
ThisRecord ThisRecord-operator 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:

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

  2. Angiv egenskaben Items for galleriet til denne formel:
    Filter(Inventory, "E" in ProductName)

    Galleriet viser alle produkter undtagen Callisto, fordi navnet på produktet er det eneste, der ikke indeholder det angivne bogstav.

  3. Rediger egenskaben Items for galleriet til denne formel:
    Filter(Inventory, "E" exactin ProductName)

    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
ThisItem Galleri-kontrolelement
Rediger formular-kontrolelement
Vis formular-kontrolelement
Standardnavnet for den aktuelle post i et Galleri- eller et formularkontrolelement.
ThisRecord ForAll, Filter, With, Sum og andre postområdefunktioner Standardnavnet for den aktuelle post i ForAll- og andre postområdefunktioner.
Somnavn Galleri-kontrolelement
ForAll, Filter, With, 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

Medarbejdere vist i et galleri.

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

Formel for billedet af en medarbejder.

Desuden bruger formlen for navnet også ThisItem:

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

Formel for for- og efternavnet på en medarbejder.

ThisRecord-operator

ThisRecord bruges i funktioner, der har et postområde. 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" ) )

Filtrering af medarbejdere baseret på navn ved hjælp af ThisRecord.

ThisRecord er valgfri og forudsætter at bruge felterne direkte, f.eks. i dette tilfælde kunne vi 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 valgfrit, 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

Galleri over medarbejdere ved brug af As-operatoren.

Formlerne til billedet og navnet justeres, så de bruger dette navn til den aktuelle post:

Employee.Picture

Billede af en medarbejder ved hjælp af det medarbejdernavn, der er angivet med As-operatoren.

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

For- og efternavn på en medarbejder ved hjælp af det medarbejdernavn, der er angivet med As-operatoren.

As kan også bruges sammen med postområdefunktioner 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:

Skakbrættekst, der vises i et etiketkontrolelement.

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 ifrkanten 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 et Char(10) tilføjet 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

Illustration af det ydre galleri, der angiver Rangering-gentagelsen.

I dette galleri anbringer vi et vandret galleri for Fil, som replikeres for hver Rangering med en Items-egenskab for:

Sequence(8) as File

Illustration af det indre galleri, der angiver Fil-gentagelsen.

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 )

Etiketkontrolelement i de to gallerier, der angiver de skiftende farver til skakbrættet.

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.
Selv-operator 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 operator 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.

Selv 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, ændres ikke, når det er oprettet. Det tillader som regel ikke mellemrum eller andre specialtegn og er ikke oversat til andre 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.

  • Vist navn – Et navn, der er brugervenligt og bestemt til at blive set af slutbrugerne. 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:

Kontotabel med brugerdefineret felt tilføjet og det viste navn

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:

Studio-formellinje, der viser forslag til feltnavne i Konti med det viste navn 'Brugerdefineret felt' markeret.

Når du har valgt forslaget, vises 'Brugerdefineret felt' på formellinjen, og dataene hentes:

Studio-formellinje, der viser brugen af det viste navn 'Brugerdefineret felt' for feltet.

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:

Studio-formellinje, der viser brugen af det logiske navn cr5e3_customfield for feltet.

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 parentes 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:

Studio-formellinje, der viser brugen af det logiske navn cr5e3_customfieldalt for at fjerne flertydighed for de to versioner af

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:
    Table[@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.