Deli z drugimi prek


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:
  • argumente pri priklicih funkcije
  • polja v zapisu
  • zapisi v tabeli
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:

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

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

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

Zaposleni prikazani v galeriji.

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

Formula za sliko zaposlenega.

Prav tako formula za ime uporablja operatorja ThisItem:

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

Formula za prvega in priimek zaposlenega.

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" ) )

Filtriranje zaposlenih na podlagi imena z uporabo ThisRecord.

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

Galerija zaposlenih, z uporabo operaterja As.

Formule za sliko in ime so prilagojene tako, da se to ime uporablja za trenutni zapis:

Employee.Picture

Slika zaposlenega, ki uporablja ime zaposlenega, nastavljeno z operatorjem As.

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

First in priimek zaposlenega, ki uporablja ime zaposlenega, nastavljeno z operatorjem As.

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:

Besedilo šahovnice, prikazano v kontrolniku oznake.

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

Ilustracija zunanje galerije, ki zagotavlja iteracijo Rank.

V galeriji bomo postavili vodoravno galerijo za Datoteko, ki bo podvojena za vsako Uvrstitev, z lastnostjo Elementi:

Sequence(8) as File

Ilustracija notranje galerije, ki ponuja ponovitev datoteke.

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 )

Nadzor oznak v dveh galerijah, ki zagotavlja izmenične barve za šahovnico.

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:

Entiteta računov z dodanim poljem po meri, ki prikazuje prikazno ime »Polja po meri« in logično ime »cr5e3_customfield«.

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:

Vrstica s formulo Studio prikazuje predloge za imena polj računov z označenim prikazno ime »Poljem po meri«.

Po izbiri predloga se v vnosni vrstici prikaže »Polje po meri« in pridobijo se podatki:

Vrstica formule Studio, ki prikazuje uporabo prikazno ime 'Polja po meri' za polje.

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

Vrstica formule Studio, ki prikazuje uporabo logičnega imena cr5e3_customfield za polje.

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:

Vrstica formule Studio, ki prikazuje uporabo logičnega imena cr5e3_customfieldalt za razločitev dveh različic »Polja po meri«.

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.