Megosztás a következőn keresztül:


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:

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

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

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

Galériában megjelenített alkalmazottak.

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

A munkavállaló képének képlete.

Hasonlóképpen a név képlete is a ThisItem elemet használja:

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

A munkavállaló első és vezetéknév képlete.

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

Az alkalmazottak szűrése név alapján a ThisRecord használatával.

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

Alkalmazottak galériája az As operátor használatával.

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

Egy alkalmazott képe, aki az As operátorral beállított Alkalmazott nevét használja.

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

Egy alkalmazott első és vezetéknév, aki az As operátorral beállított Employee name nevet használja.

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:

Címkevezérlőben megjelenített sakktáblaszöveg.

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

A rangsorolási iterációt biztosító külső katalógus illusztrációja.

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

A fájliterációt biztosító belső galéria illusztrációja.

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

Címkevezérlés a két galérián belül, amely biztosítja a sakktábla váltakozó színeit.

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:

Partnerek entitás hozzáadott egyéni mezővel, amely az

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 Studio szerkesztőléce javaslatokat jelenít meg a Partnerek mezőneveire vonatkozóan, kiemelve az

A javaslat kijelölése után az 'Egyéni mező' felirat megjelenik a szerkesztőlécen, és az adatokat beolvassa a rendszer:

A Studio szerkesztőléce, amely az

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 Studio szerkesztőléce, amely a mező logikai nevének cr5e3_customfield használatát mutatja.

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 Studio szerkesztőléce, amely a logikai név használatát mutatja cr5e3_customfieldalt az

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.