Operatori i identifikatori
Napomena
Microsoft Power Fx novo je ime za jezik formula za aplikacije od gotovih gradivnih elemenata. Ovi su članci nedovršeni dok izdvajamo jezik iz aplikacija od gotovih gradivnih elemenata i integriramo ga s drugim Microsoft Power Platform proizvoda i činimo ga dostupnim kao otvoreni kod. Počnite s odjeljkom Pregled jezika Microsoft Power Fx za uvod u jezik.
Operateri u jeziku Microsoft Power Fx opisani su u nastavku. Neki od tih operatora ovise o jeziku autora. Dodatne informacije potražite u odjeljku Globalne aplikacije.
Simbol | Tip | Sintaksa | Opis |
---|---|---|---|
. | Birač svojstva | Slider1.Value Color.Red |
Izdvaja svojstvo iz kontrole tablice ili nabrajanja. Za povratnu kompatibilnost može se koristiti !. |
. ovisi o jeziku |
Decimalni znak odjeljivanja | 1.23 | Znak odjeljivanja između cijelog broja i razlomka. Znak ovisi o jeziku. |
( ) | Zagrada | Filter (T, A < 10) (1 + 2) * 3 |
Provodi redoslijed prioriteta i grupira podizraze u veći izraz |
+ | Aritmetički operatori | 1 + 2 | Zbrajanje |
- | 2 - 1 | Oduzimanje i predznak | |
* | 2 * 3 | Množenje | |
/ | 2 / 3 | Dijeljenje (pogledajte također funkciju Mod) | |
^ | 2 ^ 3 | Potenciranje, ekvivalentno funkciji Power | |
% | 20 % | Postotak (ekvivalentno "* 1/100") | |
= | Operatori usporedbe | Cijena = 100 | Jednako |
> | Cijena > 100 | Veće od | |
>= | Cijena >= 100 | Veće od ili jednako | |
< | Cijena < 100 | Manje od | |
<= | Cijena <= 100 | Manje od ili jednako | |
<> | Cijena <> 100 | Nije jednako | |
& | Operator za povezivanje niza | "Hello" & " " &; "Svijet" | Čini da se višestruki nizovi prikazuju neprekidno |
&&ili I | Logički operatori | Cijena < : 100 &&; Klizač1.Vrijednost = 20 ili Price < 100 And Slider1.Value = 20 |
Logička konjunkcija, ekvivalentna vrijednosti funkcije And |
|| ili Ili | Price < 100 || Slider1.Value = 20 ili Price < 100 Or Slider1.Value = 20 | Logička disjunkcija, ekvivalentna vrijednosti funkciji Or | |
! ili Ne | !(Price < 100) ili Not (Price < 100) | Logička negacija, ekvivalentna vrijednosti funkciji Not | |
exactin | Operatori za članstvo | Gallery1.Selected exactin SavedItems | Pripadaju zbirci ili tablici |
exactin | "Windows" exactin “Za prikaz prozora u operacijskom sustavu Windows...” | Testiranje podniza (prepoznaje velika i mala slova) | |
u | Gallery1.Selected in SavedItems | Pripadaju zbirci ili tablici | |
u | "The" u "The keyboard and the monitor..." | Testiranje podniza (ne prepoznaje velika i mala slova) | |
@ | Operator rješavanja nesklada | MyTable[@fieldname] | Rješavanje nesklada polja |
@ | [@MyVariable] | Globalno rješavanje nesklada | |
, [ovisi o jeziku] |
Razdjelnik popisa | If( X < 10, "Low", "Good" ) { X: 12, Y: 32 } [ 1, 2, 3 ] |
Razdvaja: Taj znak ovisi o jeziku. |
; [ovisi o jeziku] |
Ulančavanje formule | Collect(T, A); Navigate(S1, "") | Odvojeni pozivi funkcija u svojstvima ponašanja. Operator ulančavanja ovisi o jeziku. |
Kao | Operator As | AllCustomers As Customer | Nadjačava funkcije ThisItem i ThisRecord u galerijama i funkcijama djelokruga zapisa. Operater As koristan je za davanje boljeg, specifičnog naziva i posebno je važan u ugniježđenim scenarijima. |
Self | Operator Self | Self.Fill | Pristup svojstvima trenutačne kontrole |
Parent | Nadređeni operator | Parent.Fill | Pristup svojstvima kontrolnog spremnika |
ThisItem | Operator ThisItem | ThisItem.FirstName | Pristup poljima galerije ili kontroli obrasca |
ThisRecord | Operator ThisItem | ThisRecord.FirstName | Pristup cjelokupnom zapisu i pojedinačnim poljima zapisa unutar funkcija ForAll, Sum, With i drugih funkcija djelokruga zapisa. Može se nadjačati operatorom As. |
u završnim exactin operatorima
Koristite operatore in i exactin za pronalaženje niza u izvoru podataka, kao što je zbirka ili uvezena tablica. Operator in identificira podudaranja bez obzira na slučaj, a operator exactin identificira podudaranja samo ako su ispisani velikim slovima na isti način. Evo primjera:
Stvarate ili uvozite zbirku po imenu Zaliha i prikažite je u galeriji kao prvi postupak u opisima Prikaži slike i tekst u galeriji.
Postavite svojstvo Items za galeriju na ovu formulu:
Filter(Inventory, "E" in ProductName)Gallery prikazuje sve proizvode osim Callisto jer je naziv tog proizvoda jedini koji ne sadrži slovo koje ste naveli.
Promijenite svojstvo Items za galeriju na ovu formulu:
Filter(Inventory, "E" exactin ProductName)Gallery prikazuje samo Europa jer samo njeno ime sadrži slovo koje ste naveli u slučaju koji ste naveli.
Operatori ThisItem, ThisRecord i As
Nekoliko kontrola i funkcija primjenjuje formule na pojedinačne zapise tablice. Za upućivanje na pojedinačni zapis u formuli koristite jedno od sljedećeg:
Operater | Odnosi se na | Opis |
---|---|---|
ThisItem | Galerija kontrola Uređivanje obrasca kontrola Prikaz obrasca kontrola |
Zadani naziv za trenutni zapis u Galeriji ili kontroli obrasca. |
ThisRecord | ForAll, Filter, With, Sum i druge funkcije djelokruga zapisa | Zadani naziv za trenutni zapis u funkciji ForAll i drugim funkcijama djelokruga zapisa. |
Kaonaziv | Galerija kontrola ForAll, Filter, With, Sum i druge funkcije djelokruga zapisa |
Definira naziv za trenutni zapis zamjenjujući zadanu funkciju ThisItem ili ThisRecord. Koristite operator As da biste pojednostavili formule i riješili nejasnoće pri ugnježđivanju. |
Operator ThisItem
Na primjer, u kontroli Gallery u nastavku, svojstvo Items je postavljeno na izvor podataka Zaposlenici (kao što je entitet Zaposlenici uključen u uzorak Northwind Traders):
Employees
Prva stavka u galeriji je predložak koji se ponavlja za svakog zaposlenika. U predlošku, formula za sliku koristi funkciju ThisItem za upućivanje na trenutnu stavku:
ThisItem.Picture
Isto tako, formula za naziv također koristi ThisItem:
ThisItem.'First Name' & " " & ThisItem.'Last Name'
Operator ThisRecord
ThisRecord se koristi u funkcijama koje imaju djelokrug zapisa. Na primjer, možemo koristiti funkciju Filter sa svojstvom Items naše galerije za prikaz samo imena koja počinju sa slovom M:
Filter( Employees, StartsWith( ThisRecord.Employee.'First Name', "M" ) )
Operator ThisRecord nije obavezan i podrazumijeva se direktnom upotrebom polja, na primjer, u ovom smo slučaju mogli napisati:
Filter( Employees, StartsWith( 'First Name', "M" ) )
Iako nije obavezna, upotreba operatora ThisRecord može olakšati razumijevanje formula i može biti potrebna u nejasnim situacijama kada naziv polja može biti i naziv odnosa. Operator ThisRecord nije obavezan, ali ThisItem uvijek jeste.
Koristite operator ThisRecord za upućivanje na cijeli zapis s funkcijama Patch, Collect i ostalim funkcijama djelokruga zapisa. Na primjer, sljedeća formula postavlja status svih neaktivnih zaposlenika u aktivne:
With( { InactiveEmployees: Filter( Employees, Status = 'Status (Employees)'.Inactive ) },
ForAll( InactiveEmployees,
Patch( Employees, ThisRecord, { Status: 'Status (Employees)'.Active } ) ) )
Operator As
Koristite operator As za imenovanje zapisa u galeriji ili funkciji djelokruga zapisa, nadjačavajući zadani operator ThisItem ili ThisRecord. Imenovanje zapisa može vam olakšati razumijevanje formula i može biti potrebno u ugniježđenim situacijama za pristup zapisima u drugom djelokrugu.
Na primjer, možete izmijeniti svojstvo Items naše galerije za upotrebu operatora As kako bismo utvrdili da radimo sa zaposlenikom:
Employees As Employee
Formule za sliku i naziv prilagođene su upotrebi ovog naziva za trenutni zapis:
Employee.Picture
Employee.'First Name' & " " & Employee.'Last Name'
Operator As se također može koristiti s funkcijama djelokruga zapisa za zamjenu zadanog naziva ThisRecord. To možemo primijeniti na naš prethodni primjer da bismo pojasnili zapis s kojim radimo:
With( { InactiveEmployees: Filter( Employees, Status = 'Status (Employees)'.Inactive ) },
ForAll( InactiveEmployees As Employee,
Patch( Employees, Employee, { Status: 'Status (Employees)'.Active } ) ) )
Pri ugnježđivanju galerija i funkcija djelokruga zapisa, operatori ThisItem i ThisRecord uvijek se odnose na unutarnji djelokrug, što zapise u vanjskom djelokrugu ostavlja nedostupnim. Koristite operator As da bi svaki djelokrug postao dostupan tako što ćete mu dati jedinstven naziv.
Na primjer, ova formula stvara uzorak šahovske ploče kao tekstni niz ugnježđivanjem dviju funkcija 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
)
Postavljanje svojstva Text kontrole Label prema ovoj formuli prikazat će sljedeće:
Analizirajmo što se ovdje događa:
- Počinjemo iteracijom neimenovane tablice od 8 numeriranih zapisa iz funkcije Sequence. Ova petlja je za svaki red ploče koji se obično naziva Rang i zato mu dajemo ovaj naziv.
- Za svaki red ponavljamo još jednu neimenovanu tablicu od 8 stupaca i dajemo zajednički naziv Datoteka.
- Ako je vrijednost Rank.Value + File.Value neparni broj, kvadrat dobiva X, u suprotnom, točku. Ovaj dio formule odnosi se na obje petlje ForAll, što je omogućeno pomoću operatora As.
- Concat koristi se dvaput, prvo za sastavljanje stupaca, a zatim redaka, uz funkciju Char(10) ubačenu za stvaranje novog retka.
Sličan primjer moguć je s ugniježđenim kontrolama Gallery umjesto funkcijama ForAll. Započnimo s okomitom galerijom za Rang. Ova kontrola galerije imat će formulu Items sačinjenu od:
Sequence(8) as Rank
Unutar ove galerije postavit ćemo vodoravnu galeriju za Datoteku, koja će se replicirati za svaki Rang, sa svojstvom Items sačinjenim od:
Sequence(8) as File
Na kraju ćemo unutar ove galerije dodati kontrolu Label koja će se replicirati za svaku Datoteku i svaki Rang. Podesit ćemo njenu veličinu kako bi ispunila cijeli prostor i upotrijebit ćemo svojstvo Fill za pružanje boje pomoću ove formule:
If( Mod( Rank.Value + File.Value, 2 ) = 1, Green, Beige )
Operatori Self i Parent
Postoje tri načina za upućivanje na kontrolu i njena svojstva u formuli:
Način | Opis |
---|---|
Prema nazivu kontrole | Na bilo koju kontrolu može se uputiti prema nazivu s bilo kojeg mjesta unutar aplikacije. Na primjer Label1.Fill odnosi se na svojstvo fill kontrole pod nazivom Label1. |
Operator Self | Često je prikladno uputiti na drugo svojstvo iste kontrole pri pisanju formule. Umjesto apsolutnog upućivanja prema nazivu lakše je i prijenosnije koristiti relativno upućivanje self na samog sebe. Operator Self omogućuje taj jednostavan pristup trenutačnoj kontroli. Na primjer Self.Fill odnosi se na boju ispuna trenutne kontrole. |
Nadređeni operator | Neke kontrole udomaćuju druge kontrole poput kontrola Screen i Gallery. Kontrola domaćin kontrola unutar sebe naziva se parent (nadređena kontrola). Poput operatora Self operator Parent pruža jednostavno relativno upućivanje na kontrolu spremnika. Na primjer Parent.Fill odnosi se na svojstvo ispuna kontrole koje je spremnik za trenutnu kontrolu. |
Self i Parent su operatori, a ne svojstva na samim kontrolama. Upućivanje na Parent.Parent, Self.Parent ili Parent.Self nije podržano.
Nazivi identifikatora
Nazivi varijabli, izvora podataka, stupaca i drugih objekata mogu sadržavati svaki Unicode standard.
Upotrijebite pojedinačne navodnike oko naziva koji sadrži razmak ili drugi posebni znak.
Upotrijebite dva jednostruka navodnika zajedno kako biste predstavili jedan jednostruki navodnik u nazivu. Nazivima koji ne sadrže posebne znakove ne trebaju pojedinačni navodnici.
Evo nekoliko primjera naziva stupaca na koje možete naići u tablici i načina njihova prikazivanja u formuli:
Naziv stupca u bazi podataka | Referenca stupca u formuli |
---|---|
SimpleName | SimpleName |
NameWith123Numbers | NameWith123Numbers |
Naziv s razmacima | 'Name with spaces' |
Naziv s „dvostrukim” navodnicima | 'Name with "double" quotes' |
Naziv s 'jednostrukim' navodnicima | 'Name with ''single'' quotes' |
Naziv sa znakom @ | 'Name with an @ at sign' |
Dvostruki navodnici upotrebljavaju se za određivanje tekstnih nizova.
Prikaz naziva i logičkih naziva
Neki izvori podataka kao što su SharePoint i Microsoft Dataverse imaju dva različita naziva koja se odnose na istu tablicu ili stupac podataka:
Logički naziv – Naziv za koji se jamči da je jedinstven, ne mijenja se nakon stvaranja, obično ne dopušta razmake ili druge posebne znakove i ne prevodi se na različite jezike. Kao rezultat, naziv može biti zagonetan. Ove nazive upotrebljavaju profesionalni razvojni inženjeri. Na primjer, cra3a_customfield. Ovaj se naziv može također navesti kao naziv sheme ili samo naziv.
Zaslonski naziv – naziv koji je prilagođen korisniku i vidljiv krajnjim korisnicima. Taj naziv možda nije jedinstven, može se vremenom mijenjati, može sadržavati razmake i svaki Unicode znak, a može biti preveden na različite jezike. U skladu s prethodnim primjerom, zaslonski naziv može biti Prilagođeno polje s razmakom između riječi.
Budući da je zaslonske nazive lakše razumjeti, Power Fx predložit će ih kao izbor, a neće predložiti logičke nazive. Iako logički nazivi nisu predloženi, i dalje ih se može upotrebljavati ako se upišu neizravno.
Na primjer, zamislite da ste dodali stavku Prilagođeno polje entitetu na platformi Dataverse. Logički naziv dodijelit će vam sustav i možete ga mijenjati samo tijekom stvaranja polja. Rezultat bi bio sličan sljedećem:
Tijekom stvaranja reference na polje Računi predložit će se uporaba naziva „Prilagođeno polje”, budući da je to zaslonski naziv. Moraju se koristiti pojedinačni navodnici jer ovaj naziv sadrži razmak:
Nakon odabira prijedloga, na traci formule prikazuje se 'Prilagođeno polje' i podatci se preuzimaju:
Iako nije predloženo, mogli bismo za ovo polje upotrijebiti i logičko ime. To će rezultirati preuzimanjem istih podataka. Nisu potrebni pojedinačni navodnici jer ovaj naziv ne sadrži razmake ili posebne znakove:
Iza scene održava se mapiranje između zaslonskih naziva koji se vide u formulama i pozadinskih logičkih imena. Budući da se logički nazivi moraju upotrijebiti za interakciju s izvorom podataka, ovo se mapiranje upotrebljava za automatsko pretvaranje trenutačnog zaslonskog naziva u logički naziv i to je ono što se vidi u mrežnom prometu. Ovo se mapiranje koristi i za pretvaranje natrag u logičke nazive za prelazak na nove zaslonske nazive, na primjer, ako se zaslonski naziv promijeni ili autor uredi aplikaciju na drugom jeziku.
Napomena
Logički se nazivi ne prevode tijekom premještanja aplikacije između okruženja. Za nazive entiteta sustava i polja platforme Dataverse to ne bi trebao biti problem jer su logička imena dosljedna u svim okruženjima. Ali svako prilagođeno polje, poput cra3a_customfield u ovom prethodnom primjeru ,može imati drugačiji prefiks okruženja (u ovom slučaju cra3a). Prednost imaju zaslonski nazivi jer se mogu prilagoditi zaslonskim imenima novog okruženja.
Rješavanje nesklada polja
Budući da zaslonski nazivi nisu jedinstveni, isto se zaslonsko ime može pojaviti više puta u istom entitetu. Kada se to dogodi, logički naziv dodat će se na kraju zaslonskog naziva unutar zagrada za jedan od više sukobljenih naziva. Vodeći se gornjim primjerom, ako je postojalo drugo polje istog zaslonskog naziva Prilagođeno polje i logičkog imena cra3a_customfieldalt tada bi prijedlozi pokazali:
Nizovi za rješavanje nesklada naziva dodani su u drugim situacijama u kojima dolazi do sukoba naziva, poput naziva entiteta, skupova opcija i drugih stavki na platformi Dataverse.
Operator rješavanja nesklada
Neke funkcije stvaraju opsege zapisa za pristup poljima tablice tijekom obrade svakog zapisa, kao što su Filter, AddColumns i Iznos. Nazivi polja dodani s pomoću opsega zapisa zamjenjuju iste nazive svugdje u aplikaciji. Kada se to dogodi, i dalje možete pristupiti vrijednostima izvan opsega zapisa s pomoću operatora za rješavanje nesklada @:
- Za pristup vrijednostima s ugniježđenih opsega zapisa upotrijebite operator @ s nazivom tablice kojom se koristi ovaj uzorak:
Tablica[@Naziv polja] - Za pristup globalnim vrijednostima, poput izvora podataka, zbirki i varijabli konteksta, upotrijebite uzorak [@ObjectName] (bez oznake tablice).
Dodatne informacija i primjere potražite u odjeljku Opsezi zapisa.
Povratne informacije
https://aka.ms/ContentUserFeedback.
Stiže uskoro: Tijekom 2024. postupno ćemo ukinuti servis Problemi sa servisom GitHub kao mehanizam za povratne informacije za sadržaj i zamijeniti ga novim sustavom za povratne informacije. Dodatne informacije potražite u članku:Pošaljite i pogledajte povratne informacije za