Operatorji in identifikatorji
opomba,
Microsoft Power Fx je novo ime za jezik formule za aplikacije s platnom. Ti članki so delo v teku, saj izvlečemo jezik iz aplikacij s platnom, ga integriramo z drugimi izdelki Microsoft Power Platform in damo na voljo odprtokodno. Začnite s člankom Pregled storitve Microsoft Power Fx za uvod v jezik.
Operatorji v storitvi Microsoft Power Fx so opisani spodaj. Nekateri od teh operatorjev so odvisni od jezika avtorja. Za več informacij glejte razdelek o globalnih aplikacijah.
Simbol | Vrsti | Sintaksa | Opis |
---|---|---|---|
. | Izbirnik lastnosti | Slider1.Value Color.Red |
Izvleče lastnost iz kontrolnika tabele ali oštevilčenje. Za združljivost s prejšnjimi različicami lahko uporabite tudi !. |
. odvisno od jezika |
Decimalno ločilo | 1.23 | Ločilo med celimi in ulomljenimi deli števila. Znak je odvisen od jezika. |
( ) | Oklepaji | Filter (T, A < 10) (1 + 2) * 3 |
Uveljavi prednostni vrstni red in združi podizraze v večji izraz |
+ | Aritmetični operatorji | 1 + 2 | Seštevanje |
- | 2 - 1 | Odštevanje in znak | |
* | 2 * 3 | Množenje | |
/ | 2/3 | Deljenje (glejte tudi funkcijo Mod) | |
^ | 2 ^ 3 | Potenciranje, enakovredno funkciji Power | |
% | 20 % | Odstotek (enakovredno »* 1/100«) | |
= | Operatorji primerjanja | Cena = 100 | Enako kot |
> | Cena > 100 | Večje od | |
>= | Cena >= 100 | Večje ali enako kot | |
< | Cena < 100 | Manjše od | |
<= | Cena <= 100 | Manjše ali enako kot | |
<> | Cena <> 100 | Ni enako kot | |
& | Operator za spojitev nizov | "zdravo" & " " & "svet" | Ustvari videz nepretrganega sklopa iz več nizov |
&& ali In | Logični operatorji | Cena < 100 && Slider1.Value = 20 ali Price < 100 And Slider1.Value = 20 |
Logična konjunkcija, enakovredna funkciji And |
|| ali Ali | Cena < 100 || Slider1.Value = 20 ali Price < 100 ali Slider1.Value = 20 | Logična disjunkcija, enakovredna funkciji Or | |
! ali Not | !(Cena < 100) ali Ne (Cena < 100) | Logična negacija, enakovredna funkciji Not | |
exactin | Operaterji članstva | Galerija 1. Natančno izbrani shranjeni predmeti | Ki pripada zbirki ali tabeli |
exactin | "Windows" točno v "Za prikaz oken v operacijskem sistemu Windows ..." | Preizkus podniza (razlikovanje med velikimi in malimi črkami) | |
v | Galerija1.Izbrano v SavedItems | Ki pripada zbirki ali tabeli | |
v | "The" v "Tipkovnica in monitor ..." | Preizkus podniza (brez razlikovanja med velikimi in malimi črkami) | |
@ | Operator razdvoumljanja | Moja tabela[@fieldname] | Razločitev polja |
@ | [@MyVariable] | Globalna razločitev | |
, [odvisno od jezika] |
Ločilo za seznam | If(X < 10, "Nizko", "Dobro") { X: 12, Y: 32 } [ 1, 2, 3 ] |
Ločuje: Ta znak je odvisen od jezika. |
; [odvisno od jezika] |
Veriženje formul | Zberi (T, A); Krmarjenje (S1, "") | Ločuje priklice funkcij pri lastnostih delovanja. Operator veriženja je odvisen od jezika. |
Kot | Kot operater | Vse stranke kot stranke | Preglasi operatorja ThisItem in ThisRecord v galerijah in funkcijah obsega zapisov. Kot je uporaben za zagotavljanje boljšega, specifičnega imena in je še posebej pomemben v ugnezdenih scenarijih. |
sebe | Samostojni operater | Self.Fill | Dostop do lastnosti trenutnega kontrolnika |
starš | Nadrejeni operater | Nadrejeni. Izpolni | Dostop do lastnosti kontrolnega vsebnika |
Ta predmet | Operater ThisItem | ThisItem.FirstName | Dostop do polj v galeriji ali kontrolnika obrazca |
Ta zapis | Operater ThisItem | ThisRecord.FirstName | Dostop do celotnega zapisa in posameznih polj zapisa znotraj funkcij ForAll, Sum, With in drugih funkcij obsega zapisa. Lahko preglasimo z operatorjem As. |
Operatorja »in« in »exactin«
Uporabite operatorja in in exactin, da najdete niz v viru podatkov, na primer zbirko ali uvoženo tabelo. Operator in prepozna ujemanja ne glede na primer, operator exactin pa prepozna ujemanja, samo če se uporabljajo enak način zapisa velikih začetnic. V nadaljevanju je predstavljen primer:
Ustvarite ali uvozite zbirko z imenom Zaloga in jo prikažite v galeriji, kot opisuje prvi postopek v članku Prikaz slik in besedila v galeriji.
Nastavite lastnost Items galerije na to formulo:
Filter (inventar, "E" v imenu izdelka)V galeriji so prikazani vsi izdelki razen izdelka »Callisto«, ker je ime tega izdelka edino, ki ne vsebuje črke, ki ste jo določili.
Spremenite lastnost Items galerije na to formulo:
Filter (inventar, "E" točno v imenu izdelka)V galeriji je prikazan samo element Europa, ker samo to ime vsebuje črko, ki ste jo navedli v opredeljenem primeru.
Operatorji »ThisItem«, »ThisRecord« in »As«
Nekaj kontrolnikov in funkcij uporablja formule za posamezne zapise tabele. Če se želite sklicevati na posamezen zapis v formuli, uporabite eno od naslednjih:
Operator | Velja za | Opis |
---|---|---|
Ta predmet | Galerija nadzor Uredi obrazec nadzor Prikazni obrazec nadzor |
Privzeto ime za trenutni zapis v galeriji ali kontrolniku obrazca. |
Ta zapis | Za Vse, Filter, z, vsota in drugo obseg zapisa funkcije | Privzeto ime za trenutni zapis v funkciji ForAll in druge funkcije obsega zapisa. |
Kot ime | Galerija nadzor Za vse, Filter, Z, Vsota in druge funkcije obsega zapisa |
Določa ime za trenutni zapis, ki nadomesti privzetega operatorja ThisItem ali ThisRecord. Uporabite operator As, za lažje razumevanje formul in za razrešitev dvoumnosti pri gnezdenju. |
Operator ThisItem
Na primer v kontrolniku Galerija je lastnost Elementi nastavljena na vir podatkov Zaposleni (kot je entiteta Zaposleni vključena v Vzorec Northwind Traders):
Employees
Prvi element v galeriji je predloga, ki se podvoji za vsakega zaposlenega. Formula za sliko v predlogi uporablja operatorja ThisItem za sklicevanje na trenutni element:
ThisItem.Picture
Prav tako formula za ime uporablja operatorja ThisItem:
ThisItem.'First Name' & " " & ThisItem.'Last Name'
Operator »ThisRecord«
Ta zapis se uporablja v funkcijah, ki imajo obseg zapisa. Lahko na primer uporabimo funkcijo Filter z lastnostjo naše galerije Predmeti, da prikazuje samo imena, ki se začnejo na M:
Filter( Employees, StartsWith( ThisRecord.Employee.'First Name', "M" ) )
Ta zapis je neobvezen in impliciten z neposredno uporabo polj, na primer, v tem primeru bi lahko zapisali:
Filter( Employees, StartsWith( 'First Name', "M" ) )
Čeprav je izbiren, lahko operator ThisRecord olajša razumevanje formul, njegovo uporabo pa lahko zahtevajo v dvoumnih situacijah, kjer je ime polja lahko tudi ime odnosa. Ta zapis je neobvezen, medtem ko je Tapostavka vedno zahtevan.
Uporabite operator ThisRecord, če se želite sklicevati na celotni zapis s funkcijama Patch in Collect ter drugimi funkcijami obsega zapisa. Naslednja formula na primer nastavi stanje vseh nedejavnih zaposlenih na dejavno:
With( { InactiveEmployees: Filter( Employees, Status = 'Status (Employees)'.Inactive ) },
ForAll( InactiveEmployees,
Patch( Employees, ThisRecord, { Status: 'Status (Employees)'.Active } ) ) )
Operator »As«
Z operatorjem As poimenujte zapis v galeriji ali funkciji obsega zapisa in preglasite privzetega operatorja ThisItem ali ThisRecord. Poimenovanje zapisa lahko olajša razumevanje formul, v ugnezdenih situacijah pa je lahko poimenovanje zahtevano za dostop do zapisov v drugih obsegih.
Lahko na primer spremenite lastnost galerije Elementi in uporabite operator As da ugotovite, ali sodelujete z zaposlenim:
Employees As Employee
Formule za sliko in ime so prilagojene tako, da se to ime uporablja za trenutni zapis:
Employee.Picture
Employee.'First Name' & " " & Employee.'Last Name'
As se lahko uporablja tudi s funkcijami obsega zapisa za zamenjavo privzetega imena ThisRecord. To lahko uporabimo v prejšnjem primeru, da razjasnimo zapis, s katerim delamo:
With( { InactiveEmployees: Filter( Employees, Status = 'Status (Employees)'.Inactive ) },
ForAll( InactiveEmployees As Employee,
Patch( Employees, Employee, { Status: 'Status (Employees)'.Active } ) ) )
Pro gnezdenju galerij in funkcij obsega zapisa, se operatorja ThisItem in ThisRecord vedno nanašata na najbolj notranji obseg, pri čemer zapisi v zunanjih področjih niso na voljo. Uporabite operator As in omogočite dostop do vseh obsegov zapisa tako, da vsakemu dodelite enolično ime.
Ta formula na primer ustvari vzorec šahovnice kot besedilni niz z ugnezdenjem dveh funkcij ForAll:
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
)
Nastavljanje funkcije Label kontrolnikovi lastnosti Besedilo tej formuli prikaže:
Poglejmo, kaj se tukaj dogaja:
- Začnemo s ponavljanjem neimenovane tabele z 8 oštevilčenimi zapisi iz funkcije Sequence. Ta zanka je za vsako vrstico plošče, ki se običajno imenuje Uvrstitev, zato ji damo to ime.
- Za vsako vrstico ponovimo še eno neimenovano tabelo z 8 stolpci in ji damo skupno ime Datoteka.
- Če je vsota Rank.Value + File.Value liho število, kvadrat dobi X, če število ni liho, pa piko. Ta del formule navaja obe zanki ForAll, kar omogoča operator As.
- Concat je uporabljen dvakrat, najprej za sestavljanje stolpcev in nato vrstic, z Char(10) vstavljenim za ustvarjanje nove vrstice.
Podoben primer je možen z ugnezdenimi kontrolniki Galerija namesto funkcij ForAll. Začnimo z vertikalno galerijo za Uvrstitev. Ta kontrolnik galerije bo imel formulo Elementi:
Sequence(8) as Rank
V galeriji bomo postavili vodoravno galerijo za Datoteko, ki bo podvojena za vsako Uvrstitev, z lastnostjo Elementi:
Sequence(8) as File
Na koncu bomo v galerijo dodali še kontrolnik Label, ki se bo podvojil za vsako Datoteko in vsako Uvrstitev. Velikost bomo prilagodili celotnemu prostoru in uporabili lastnost Izpolni, da zagotovimo barvo s to formulo:
If( Mod( Rank.Value + File.Value, 2 ) = 1, Green, Beige )
Operatorja »Self« in »Parent«
Obstajajo trije načini sklicevanja na kontrolnik in njegove lastnosti v formuli:
Način | Opis |
---|---|
Po imenu kontrolnika | Na vsak kontrolnik se je mogoče sklicevati po imenu od kjer koli znotraj aplikacije. Na primer Label1.Fill se sklicuje na lastnost zapolnitve kontrolnika, katerega ime je Label1. |
Samo operater | Ob zapisovanju formule se je pogosto priročno sklicevati na drugo lastnost istega kontrolnika. Namesto uporabe absolutnega sklica po imenu, je lažje in bolj prenosljivo uporabiti relativni sklic na sebe (self). Operator Self zagotavlja enostaven dostop do trenutnega kontrolnika. Na primer Self.Fill se sklicuje na barvo polnila trenutnega kontrolnika. |
Nadrejeni operater | Nekateri kontrolniki gostujejo druge kontrolnike, kot kontrolnika Zaslon in Galerija. Gostujočemu kontrolniku notranjih kontrolnikov se reče nadrejeni. Kot operator Self operator Parent zagotavlja enostaven relativen sklic na kontrolnik vsebnika. Na primer, Parent.Fill se sklicuje na lastnost polnitve kontrolnika, ki je vsebnik za trenutni kontrolnik. |
Self in Parent sta operaterja in ne lastnosti samih kontrolnikov. Sklicevanje na Parent.Parent, Self.Parent ali Parent.Self ni podprto.
Imena identifikatorjev
Imena spremenljivk, virov podatkov, stolpcev in drugih predmetov lahko vsebujejo kateri koli znak Unicode.
Uporabite enojne narekovaje pri imenu, ki vsebuje presledek ali drug poseben znak.
Skupaj uporabite dva enojna narekovaja, ki bosta predstavljala posamezno navedbo znotraj imena. Imena, ki ne vsebujejo posebnih znakov, ne potrebujejo enojnih narekovajev.
V nadaljevanju je navedenih nekaj primerov za imena stolpcev, na katera lahko naletite v tabeli, in način, kako so predstavljena znotraj formule:
Ime stolpca v zbirki podatkov | Sklic na stolpec v formuli |
---|---|
SimpleName | SimpleName |
NameWith123Numbers | NameWith123Numbers |
Ime s presledki | 'Name with spaces' |
Ime z "dvojnimi" narekovaji | 'Name with "double" quotes' |
Ime z 'enojnimi' narekovaji | 'Name with ''single'' quotes' |
Ime z znakom @ | 'Name with an @ at sign' |
Dvojni narekovaji se uporabljajo za označevanje besedilnih nizov.
Prikazna imena in logična imena
Nekateri viri podatkov, kot sta SharePoint in Microsoft Dataverse, imajo dve različni imeni, ki se nanašajo na isto tabelo ali stolpec podatkov:
Logično ime - ime, ki je zajamčeno edinstveno, se ne spremeni po ustvarjanju, običajno ne dovoljuje presledkov ali drugih posebnih znakov in ni lokalizirano v različne jezike. Kot rezultat, je ime lahko šifrirano. Ta imena uporabljajo profesionalni razvijalci. Na primer: cra3a_customfield. To ime se lahko imenuje tudi ime sheme ali enostavno ime.
prikazno ime - Ime, ki je uporabniku prijazno in namenjeno, da ga vidijo končni uporabniki. To ime morda ni edinstveno, se lahko sčasoma spreminja, lahko vsebuje presledke in kateri koli znak Unicode ter je lahko lokalizirano v različne jezike. V skladu z zgornjim primerom je prikazno ime morda Polje po meri s presledkom med besedami.
Ker je prikazno ime lažje razumeti, jih bo Power Fx predlagal kot izbiro namesto logičnih imen. Čeprav logična imena niso predlagana, jih je mogoče uporabiti, če jih vtipkamo posredno.
Predstavljajte si, da ste polje po meri na primer dodali entiteti v storitvi Dataverse. Sistem vam bo dodelil logično ime, ki ga lahko spreminjate samo ob ustvarjanju polja. Rezultat bo podoben naslednjemu:
Pri ustvarjanju sklica na polje kupcev bo predlog uporabljal 'Polje po meri', saj je to prikazno ime. Uporabiti je treba enojne narekovaje, ker ime vsebuje presledek:
Po izbiri predloga se v vnosni vrstici prikaže »Polje po meri« in pridobijo se podatki:
Čeprav ni predlagano, bi lahko uporabili tudi logično ime za to polje. Posledično bodo naloženi enaki podatki. Enojni narekovaji niso potrebni, ker to ime ne vsebuje presledkov ali posebnih znakov:
V ozadju se ohranja preslikava med prikaznimi imeni, ki jih vidimo pri formulah, in temeljnimi logičnimi imeni. Ker je treba za interakcijo z virom podatkov uporabiti logična imena, se ta preslikava uporablja za samodejno pretvorbo iz trenutnega prikaznega imena v logično ime, kar se tudi vidi pri omrežnem prometu. To preslikavo se uporablja tudi za pretvorbo nazaj v logična imena za prehod v nova prikazna imena, na primer, če se prikazno ime spremeni ali izdelovalec aplikacijo uredi v drugem jeziku.
opomba,
Pri premikanju aplikacije med okolji logična imena niso prevedena. Za sistemsko entiteto storitve Dataverse in imena polj to ne bi smela biti težava, saj so logična imena skladna med okolji. Toda vsa polja po meri, kot je cra3a_customfield v tem zgornjem primeru, imajo lahko drugačno predpono okolja (cra3a v tem primeru). Prednostna so prikazna imena, saj se lahko ujemajo s prikaznimi imeni v novem okolju.
Razločitev imena
Ker prikazna imena niso edinstvena, se lahko isto prikazno ime večkrat prikaže v isti entiteti. Ko se to zgodi, bo logično ime dodano na konec prikazno ime v oklepaju za eno ali več nasprotujočih si imen. Na podlagi zgornjega primera torej velja: če obstaja drugo polje z istim prikaznim imenom Polje po meri in logičnim imenom cra3a_customfieldalt, bi bili predlogi naslednji:
Nizi za razločitev imena so dodani v drugih primerih, ko se pojavijo spori pri imenih, na primer pri imenih entitet, naborih možnosti in drugih predmetih Dataverse.
Operator za razločitev
Nekatere funkcije ustvarijo obsege zapisov za dostop do polj tabele med obdelavo vsakega zapisa, kot so Filter, AddColumns in Sum. Imena polj, dodana z obsegom zapisov, preglasijo enaka imena od drugod v aplikaciji. Ko se to zgodi, lahko do vrednosti še vedno dostopate zunaj obsega zapisov z operatorjem za razločitev @:
- Za dostop do vrednosti iz ugnezdenih obsegov zapisov uporabite operator @ z imenom tabele, ki se upravlja s tem vzorcem:
Tabela[@Ime polja] - Za dostop do globalnih vrednosti, kot so viri podatkov, zbirke in spremenljivke konteksta, uporabite vzorec [@ObjectName] (brez oznake tabele).
Za več informacij in primerov glejte obsege zapisov.