Operátorok és azonosítók
Feljegyzés
A Microsoft Power Fx a vászonalapú alkalmazások képletnyelvének új neve. Ezek a cikkek még nem véglegesek; miközben kinyerjük a vászonalapú alkalmazás nyelvét, integráljuk más Microsoft Power Platform-termékekkel, és nyílt forráskódúként elérhetővé tesszük. A nyelv megismeréséhez először olvassa el A Microsoft Power Fx áttekintése című cikket.
A Microsoft Power Fx-operátorok leírása alább látható. Ezen operátorok némelyike a szerző nyelvétől függ. További információért lásd: Globális alkalmazások.
Szimbólum | Típus szerint | Szintaxis | Ismertetés |
---|---|---|---|
. | Tulajdonságválasztó | Slider1.Value Color.Red |
Kinyeri a tulajdonságot egy táblavezérlőből vagy enumerálásból. A visszamenőleges kompatibilitás érdekében ! is használható. |
. nyelvfüggő |
Tizedeselválasztó | 1.23 | A szám egész- és törtrészének tagolására szolgáló elválasztó. A karakter az adott nyelvtől függ. |
( ) | Zárójelek | Szűrő(T, A < 10) (1 + 2) * 3 |
Kikényszeríti a műveleti sorrendet, illetve az alkifejezéseket nagyobb kifejezésekbe csoportosítja |
+ | Aritmetikai operátorok | 1 + 2 | Összeadás |
- | 2 - 1 | Kivonás és előjel | |
* | 2 * 3 | Szorzás | |
/ | 2 / 3 | Osztás (lásd még: Mod függvény) | |
^ | 2 ^ 3 | Hatványozás, egyenértékű a Power függvénnyel | |
% | 20% | Százalék (egyenértékű a „* 1/100” értékkel) | |
= | Összehasonlító operátorok | Ár = 100 | Egyenlő |
> | Ár: > 100 | Nagyobb mint | |
>= | Ár >= 100 | Nagyobb vagy egyenlő | |
< | Ár: < 100 | Kisebb mint | |
<= | Ár <= 100 | Kisebb vagy egyenlő | |
<> | Ár: <> 100 | Nem egyenlő | |
& | Karakterlánc-összefűzési operátor | "hello" & " " & "világ" | Lehetővé teszi több karaktersor összefüggő megjelenítését |
&&vagy és | Logikai operátorok | Ár < 100 &&; Slider1.Value = 20 vagy Price < 100 És Slider1.Value = 20 |
Logikai ÉS művelet, egyenértékű az And függvénnyel |
|| vagy vagy | Ár < 100 || Slider1.Value = 20 vagy Price < 100 vagy Slider1.Value = 20 | Logikai VAGY művelet, egyenértékű az Or függvénnyel | |
! vagy Nem | ! (Ár < 100) vagy Nem (Ár < 100) | Logikai negálás, egyenértékű a Not függvénnyel | |
exaktin | Tagsági operátorok | Gallery1.Selected exactin SavedItems | Egy gyűjteményhez vagy egy táblához tartozik |
exaktin | "Windows" exactin "Ablakok megjelenítése a Windows operációs rendszerben ..." | Karakterláncrészlet tesztelése (megkülönbözteti a kis- és nagybetűket) | |
ban | Gallery1.Selected in SavedItems | Egy gyűjteményhez vagy egy táblához tartozik | |
ban | "A" a "A billentyűzet és a monitor..." | Karakterláncrészlet tesztelése (nem különbözteti meg a kis- és nagybetűket) | |
@ | Egyértelműsítő operátor | Saját táblázat[@fieldname] | A mező egyértelműsítése |
@ | [@MyVariable] | Globális egyértelműsítés | |
, [nyelvfüggő] |
Listaelválasztó | Ha(X < 10, "Alacsony"; "Jó") { X: 12, Y: 32 } [ 1, 2, 3 ] |
Elválasztja: Ez a karakter az adott nyelvtől függ. |
; [nyelvfüggő] |
Képletláncolás | Collect(T, A); Navigálás(S1; "") | A függvényhívások elkülönítése a viselkedési tulajdonságokban. A láncolási karakter az adott nyelvtől függ. |
Amint | Üzemeltetőként | AllCustomers mint ügyfél | Felülbírálja a ThisItem és ThisRecord elemet gyűjteményekben és rekordhatóköri függvényekben. Az As hasznos egy jobb, konkrét név megadásához, és különösen fontos beágyazott forgatókönyvekben. |
Önmaga | Önkezelő | Önkitöltés | Hozzáférést biztosít az aktuális vezérlő tulajdonságaihoz |
szülő | szülő üzemeltető | Szülő.Kitöltés | Hozzáférés a vezérlői tároló tulajdonságaihoz |
ThisItem | ThisItem operátor | ThisItem.FirstName | Hozzáférés a katalógus vagy az űrlap vezérlőelem mezőihez |
Ez a rekord | ThisItem operátor | ThisRecord.FirstName | A teljes rekordhoz és a rekord egyes mezőihez való hozzáférést a ForAll, Sum, With és más rekordhatóköri függvényekben. A Mint operátorral felülírható. |
in és exactin operátorok
Az in és az exactin operátorokat sztringek keresésére használhatja egy adott adatforrásban, például egy gyűjteményben vagy egy importált táblában. Az in operátor kis- és nagybetűtől függetlenül azonosítja a találatokat, míg az exactin operátor csak akkor ad vissza találatot, ha a kis- és nagybetűk is megegyeznek. Például:
Importáljon vagy hozzon létre egy Leltár nevű gyűjteményt, és jelenítse meg azt egy katalógusban, ahogyan az a Képek és szöveg megjelenítése katalógusban című témakörben szerepel.
Állítsa be a katalógus Elemek tulajdonságát az alábbi képletre:
Szűrő(Készlet, "E" a Terméknévben)A katalógusban a Callisto kivételével az összes termék szerepel, mert csak ennek a terméknek a neve nem tartalmazza a megadott betűt.
Módosítsa a katalógus Elemek tulajdonságát az alábbi képletre:
Szűrő(Készlet, "E" exactin Terméknév)A katalógusban csak az Europa szerepel, mert egyedül ennek a neve tartalmazza a megadott nagybetűt.
ThisItem, ThisRecord, és Mint operátorok
A néhány vezérlő és függvény a képleteket a táblázat egyes rekordjaira alkalmazza. Ha egy képletben az egyes rekordra szeretne hivatkozni, használja a következő lehetőségek egyikét:
Operátor | Érvényesség | Ismertetés |
---|---|---|
ThisItem | Katalógus vezérlőelem Űrlap-vezérlőelem szerkesztése Űrlapvezérlő megjelenítése |
Az aktuális rekord alapértelmezett neve egy Katalógusban vagy űrlap-vezérlőelemben. |
Ez a rekord | ForAll,Filter,With,Sum ... ... ... és egyéb rekordhatókör-függvények | Az aktuális rekord alapértelmezett neve a ForAll vagy más rekordhatóköri függvényekben. |
Névként | Katalógus vezérlőelem ForAll,Filter,With,Sum ... ... ... és egyéb rekordhatókör-függvények |
Megadja az aktuális rekord nevét, lecseréli az alapértelmezett ThisItem vagy ThisRecord elemet. A Mint használatával a képletek könnyebben érthetők meg és oldhatók fel a beágyazáskor. |
ThisItem operátor
A következő Katalógus vezérlőelemben például a Cikkek tulajdonság az alkalmazottak adatforrásra van beállítva (például az Alkalmazottak entitás, ami a Northwind Traders sablonban szerepel):
Employees
A katalógus első eleme egy sablon, amely minden egyes alkalmazottra replikálódik. A sablonban a kép képlete a ThisItem segítségével hivatkozik az aktuális elemre:
ThisItem.Picture
Hasonlóképpen a név képlete is a ThisItem elemet használja:
ThisItem.'First Name' & " " & ThisItem.'Last Name'
ThisRecord operátor
A ThisRecord rekordhatókörrel rendelkezőfüggvényekben használatos. Például használhatjuk a Filter függvényt a katalógusunk Cikkek tulajdonságával, hogy csak az M betűvel kezdődő utóneveket jelenítse meg.
Filter( Employees, StartsWith( ThisRecord.Employee.'First Name', "M" ) )
A ThisRecord opcionális és implikált a mezők közvetlen használatával, például ebben az esetben írhattunk volna:
Filter( Employees, StartsWith( 'First Name', "M" ) )
Bár a ThisRecord használata nem kötelező, a képletek könnyebben érthetők, és kétértelmű helyzetekben kötelezőek lehetnek, amikor a mezőnév is kapcsolat neve. A ThisRecord nem kötelező, míg a ThisItem mindig kötelező.
A ThisRecord segítségével a teljes rekordot a Patch, a Collect és az egyéb rekordhatóköri funkciókkal hivatkozhatjuk. A következő képlet például az inaktív alkalmazottak állapotát az aktív értékre állítja be:
With( { InactiveEmployees: Filter( Employees, Status = 'Status (Employees)'.Inactive ) },
ForAll( InactiveEmployees,
Patch( Employees, ThisRecord, { Status: 'Status (Employees)'.Active } ) ) )
Mint operátor
Használja a Mint operátor a rekord elnevezéséhez egy katalógusban vagy rekordhatóköri függvényben, felülbírálva az alapértelmezett ThisItem vagy ThisRecord elemet. A rekord elnevezése egyszerűbbé teheti a képletek megértését, és a beágyazott helyzetekben szükséges lehet más hatókörök rekordjainak elérésére.
Például módosíthatja a katalógus Cikkek tulajdonságát a Mint használatára, amellyel meghatározhatja, hogy alkalmazottal dolgozunk:
Employees As Employee
A kép és a név képletei úgy vannak kialakítva, hogy az aktuális rekordhoz a következő nevet használják:
Employee.Picture
Employee.'First Name' & " " & Employee.'Last Name'
A rekordhatókör-függvényekkel együtt az alapértelmezett ThisRecord névcseréjére is használható. Ezt az előző példára alkalmazjuk, hogy tisztázni lehessen a következő rekordot:
With( { InactiveEmployees: Filter( Employees, Status = 'Status (Employees)'.Inactive ) },
ForAll( InactiveEmployees As Employee,
Patch( Employees, Employee, { Status: 'Status (Employees)'.Active } ) ) )
A galériák és a rekord hatókör funkciók beágyazásakor a ThisItem és a ThisRecord mindig a belső legszélesebb hatókörre hivatkozik, és nem érhetők el a külső hatókörök rekordjai. A Mint használatával az összes rekordhatókör elérhetővé tehető, mindegyik számára megadva egy egyedi nevet.
Ez a képlet például egy sakktábla mintát hoz létre szöveges karakterláncként, két ForAll függvény beágyazásával:
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
)
Egy Label (Címke) vezérlőelem Text (Szöveg) tulajdonságának erre a képletre való beállítása a következőt jeleníti meg:
Nézzük meg, hogy mi történik itt:
- Azzal kezdjük, hogy iterálunk egy meg nem nevezett táblázatot, amely a Sequence függvényé 8 számozott rekordjából áll. Ez a hurok a tábla minden egyes sorára vonatkozik, amelyet általában Rang néven neveznek, és így ezt a nevet adjuk neki.
- Minden egyes sor esetében iterálunk egy további, 8 nem megnevezett oszlop tartalmazó táblát, és a Fájl közös nevet adjuk meg.
- Ha a Rank.Value + File.Value egy páratlan szám, a négyzet egy X jelet kap, egyébként egy pontot. A képlet ezen része mindkét ForAll hurokra hivatkozik, amelyeket a Mint operátor használata tesz lehetővé.
- A Concat-ot kétszer használják, először az oszlopok, majd a sorok összeállításához, és egy Char(10) -et dobnak be egy új sor létrehozásához.
Hasonló példa lehetséges a beágyazott Katalógus vezérlővel a ForAll függvények helyett. Kezdjük a Rang függőleges katalógusával. Ez a katalógus egy Elemek képletből fog állni:
Sequence(8) as Rank
Ezen a katalóguson belül egy vízszintes katalógust fogunk bemutatni a Fájl elemhez, amelyet a rendszer minden Rang elemhez replikál a következő Elemek tulajdonsággal:
Sequence(8) as File
És végül a katalóguson belül hozzáadunk egy Címke vezérlőt, amelyet a rendszer minden egyes Fájl és Rang eleméhez replikálva lesz. A teljes terület kitöltésére méretezzük, és a Kitöltés tulajdonsággal megadjuk a színt a következő képlettel:
If( Mod( Rank.Value + File.Value, 2 ) = 1, Green, Beige )
Saját és fölérendelt operátorok
A vezérlőelemekre és tulajdonságaikra három módon lehet hivatkozni egy képleten belül:
Módszer | Ismertetés |
---|---|
Vezérlő neve alapján | Bármelyik vezérlőelemre név szerint lehet hivatkozni bárhol az alkalmazásban. Például a Label1.Fill a vezérlőelem kitöltési tulajdonságára utal, amelynek a neve Label1. |
Önkezelő | A képletek írásakor gyakran célszerű ugyanannak a vezérlőelemnek egy másik tulajdonságra hivatkozni. Ahelyett, hogy név szerinti abszolút referenciát használna, könnyebb és hordozhatóbb relatív hivatkozást használni saját magára. A Saját operátor egyszerű hozzáférést biztosít az aktuális vezérlő tulajdonságaihoz. Például a Self.Fill kifejezés az aktuális vezérlő kitöltési színére utal. |
szülő operátor | Egyes vezérlők más vezérlőket is tárolnak, például a Képernyő és a Gyűjtemény vezérlőt. A tároló vezérlőelemet a benne lévő vezérlőelemek szülőjének nevezzük. A Saját operátorhoz hasonlóan a Szülő operátor is egyszerű, relatív hivatkozást biztosít a tároló vezérlőre. A Parent.Fill például a vezérlőelem kitöltési tulajdonságára utal, amely az aktuális vezérlő tárolója. |
Ön- és szülő vannak operátorok, nem pedig magukon a vezérlőkön lévő tulajdonságok. A Parent.Parent, a Self.Parent és a Parent.Self kifejezés nem támogatott.
Azonosítónevek
A változók, adatforrások, oszlopok és egyéb objektumok neve tetszőleges Unicode-karaktereket tartalmazhat.
A szóközöket vagy egyéb különleges karaktereket tartalmazó nevek körül használjon aposztrófokat.
Két aposztróf együttes használatával jelölhet egyetlen aposztrófot a névben. A különleges karaktereket nem tartalmazó nevekben nincs szükség aposztrófokra.
Íme néhány példa oszlopnevekre, amelyek megjelenhetnek egy táblában, illetve azok megjelenése egy képletben:
Oszlop neve adatbázisban | Oszlop hivatkozása képletben |
---|---|
EgyszerűNév | SimpleName |
Név123Számokkal | NameWith123Numbers |
Név szóközökkel | 'Name with spaces' |
Név "kettős" idézőjelekkel | 'Name with "double" quotes' |
Név 'egyszeres' idézőjelekkel | 'Name with ''single'' quotes' |
Név @ jellel | 'Name with an @ at sign' |
Az idézőjelek szöveges karakterláncok kijelölésére szolgálnak.
Megjelenítendő nevek és logikai nevek
Egyes adatforrások, például a SharePoint és a Microsoft Dataverse két különböző nevet használnak, amelyek ugyanarra a táblára vagy oszlopra hivatkoznak:
Logikai név - Olyan név, amely garantáltan egyedi, nem változik a létrehozás után, általában nem engedélyezi a szóközöket vagy más speciális karaktereket, és nincs lokalizálva különböző nyelvekre. Ennek eredményeként a név nehezebben olvasható lehet. Ezeket a neveket a professzionális fejlesztők használják. Például cra3a_customfield. Ez a név a séma neve vagy csak név néven is szerepelhet.
megjelenítendő név - Felhasználóbarát név, amelyet a végfelhasználók láthatnak. Előfordulhat, hogy ez a név nem egyedi, az idő múlásával módosul, tartalmazhat szóközöket és bármilyen Unicode-karaktert, és honosítják különböző nyelvekre. A fenti példának megfelelően a megjelenítendő név lehet Egyéni mező szóközzel elválasztva a szavakat.
Mivel a megjelenítendő nevek könnyen érthetőek, a Power Fx választási lehetőségként ezeket javasolja, nem pedig logikai neveket. Bár a logikai nevek használata nem javasolt, azok továbbra is használhatók, ha indirekt módon vannak beírva.
Tegyük fel például, hogy hozzáadott egy Egyéni mezőt egy entitáshoz a Dataverse alkalmazásban. A rendszer hozzárendel egy logikai nevet, amelyet csak a mező létrehozásakor lehet módosítani. Az eredmény így néz ki:
Amikor a Partnerek mezőre mutató hivatkozást ad ki, a rendszer javasolja az 'Egyéni mező' használatát, mivel ez a megjelenítendő név. Az egyszeres idézőjeleket kell használni, mert a névben szóköz van:
A javaslat kijelölése után az 'Egyéni mező' felirat megjelenik a szerkesztőlécen, és az adatokat beolvassa a rendszer:
Bár ez nem javasolt, használhatjuk a mező logikai nevét is. Ennek eredményeképpen ugyanaz az adat fog megjelenni. Nem szükséges szimpla idézőjel, mivel a név nem tartalmaz szóközöket vagy különleges karaktereket:
A színfalak mögött a leképezések megmaradnak a képletekben és a mögöttes logikai nevekben látható megjelenítendő nevek között. Mivel a logikai neveket arra kell használni, hogy azok kommunikáljanak az adatforrással, ez a leképezés az aktuális megjelenítendő név logikai névre való átalakítására szolgál automatikusan, és a hálózati forgalomban is ez látható. Ezzel a leképezéssel vissza lehet alakítani a logikai nevekre, hogy átváltsanak az új megjelenítendő nevekre, például ha egy megjelenítendő név módosul, vagy egy készítő egy másik nyelven szerkeszti az alkalmazást.
Feljegyzés
A logikai neveket a rendszer nem fordítja le, ha egy alkalmazást a környezetek között helyez el. A Dataverse-rendszerentitások és mezőnevek esetében ez nem lehet probléma, mivel a logikai nevek konzisztensek a környezetek között. De az egyéni mezők – például a fenti példában cra3a_customfield – eltérő környezeti előtaggal rendelkezhetnek (ebben az esetben cra3a). A megjelenítendő nevek előnyben részesülnek, mivel összehasonlíthatók egy új környezet megjelenítendő neveivel.
Név egyértelműsítése
Mivel a megjelenítendő nevek nem egyediek, ugyanaz a megjelenítendő név egynél többször is megjelenhet ugyanabban az entitásban. Ebben az esetben a logikai név zárójelben hozzáadódik a megjelenítendő név végéhez az ütköző nevek egyikénél. A fenti példára építve, ha egy másik mező ugyanazzal az Egyéni mező megjelenítendő névvel rendelkezik, amelynek logikai neve cra3a_customfieldalt, akkor a javaslatok az alábbiakat mutatják:
A neveket egyértelműsítő karakterláncokat a rendszer más helyzetekben is hozzáadja, ahol névütközés fordul elő, például az entitások, a beállításhalmazok és egyéb Dataverse-elemek nevei esetén.
Egyértelműsítő operátor
Bizonyos függvények rekordra vonatkozó hatókörök létrehozásával férnek hozzá a táblamezőkhöz az egyes rekordok feldolgozásakor, például Filter, AddColumns és Sum. A rekordra vonatkozó hatókörrel felvett mezőnevek felülbírálják az alkalmazásban máshol előforduló azonos neveket. Ilyenkor a @ egyértelműsítő operátorral továbbra is elérhetők a rekord hatókörén kívüli értékek:
- A rekordra vonatkozó beágyazott hatókörök értékeit a @ operátor és a műveleti tábla nevének együttes használatával érheti el. Használandó minta:
Tábla[@Mezőnév] - A globális értékek (például adatforrások, gyűjtemények és környezeti változók) elérésére használja a következő mintát: [@ObjektumNév] (tábla megadása nélkül).
További információt és példákat találhat a rekordra vonatkozó hatókörök leírásában.