Függvénnyel
A következőkre vonatkozik: Vászonalapú alkalmazások
Asztali folyamatok
Modellvezérelt alkalmazások
Power Pages
Power Platform CLI
Értékeket számít ki és műveleteket hajt végre egyetlen rekordnál, beleértve a nevesített értékek beágyazott rekordjait is.
Ismertetés
A With függvénnyel kiértékelhet egy adott rekordhoz tartozó képletet. A képlet kiszámít egy értéket és/vagy műveleteket hajt végre, például adatokat módosít vagy egy kapcsolatot használ. A ForAll függvénnyel értékelheti a bejegyzések táblázatában szereplő összes bejegyzéshez tartozó képletet.
Az aktuálisan feldolgozás alatt álló rekordmezők elérhetők a képletben. Használja a ThisRecord operátort, vagy egyszerűen hivatkozzon név szerint a mezőkre, ahogy más értéket is hivatkozna. Az As operátor a feldolgozás alatt álló rekord elnevezésére használatos, amellyel könnyebben érthető a képlet, és hozzáférhetőbbek a beágyazott rekordok. További információkért lásd az alábbi példákat és a rekord hatókörével való munkát.
A With segítségével javíthatja az összetett képletek olvashatóságát úgy, hogy kisebb, elnevezett alképletekre osztja őket. Ezek a megnevezett értékek egyszerű helyi változókként működnek, amelyek a With hatókörére korlátozódnak. Az UpdateContext függvénnyel megegyező beágyazott bejegyzés-szintaxis a With függvénnyel is használható. A With használata előnyben részesíti a kontextust vagy a globális változókat, mivel azok önállóak, könnyen érthetőek, és bármilyen deklaratív Formula-kontextusban használhatók.
A With használatával elérheti a rekord azon mezőit, amelyeket olyan függvények adnak vissza, mint a Patch vagy a Match. A elég hosszú ideig tartja ezeknek a függvényeknek az értékét ahhoz, hogy további számításokban vagy műveletekben használható legyen.
Ha a Rekord argumentum a With esetében hiba, akkor a függvény visszaküldi a hibát, és a Képlet nem lesz kiértékelve.
Szintaxis
A(Rekord,Képlet )
-
Rekord – Kötelező. A rekord, amelyen műveletet kell végrehajtani. A nevek értékeihez használja a szövegközi szintaxist:
{ name1: value1, name2: value2, ... }
- Képlet – Kötelező. A képlet, amelyet ki kell értékelni a Rekord esetében. A képlet a Rekord bármelyik mezőjére hivatkozhat közvetlenül rekordhatókörként.
Példák
Egyszerű elnevezett értékek
With( { radius: 10,
height: 15 },
Pi() * (radius*radius) * height
)
// Result: 4712.38898038 (as shown in a label control)
Ez a példa a megnevezett értékek rekordját használja egy henger térfogatának a kiszámításához. A használatával az összes bemeneti érték rögzítésére szolgál, így könnyen elkülöníthető magától a számítástól.
Egymásba ágyazva
With( { AnnualRate: RateSlider/8/100, // slider moves in 1/8th increments and convert to decimal
Amount: AmountSlider*10000, // slider moves by 10,000 increment
Years: YearsSlider, // slider moves in single year increments, no adjustment required
AnnualPayments: 12 }, // number of payments per year
With( { r: AnnualRate/AnnualPayments, // interest rate
P: Amount, // loan amount
n: Years*AnnualPayments }, // number of payments
r*P / (1 - (1+r)^-n) // standard interest calculation
)
)
Az alábbi példában a With függvények egymásba vannak ágyazva, hogy kétszintű számítás jöjjön létre a havi jelzáloghitel-kifizetésekhez. Mindaddig, amíg nincs ütközés, az összes külső With névvel ellátott érték elérhető a belső With függvényen belül.
Mivel a csúszka vezérlői csak 1. lépésekben mozoghatnak, a csúszkák oszthatók, illetve megszorozhatók, hogy hatékonyan hozhassunk létre egyéni növekményt. A kamatláb esetében a RateSliderMax tulajdonságának beállítása 48, osztva nyolccal az 1/8 százalékpontos növekmény miatt, és százzal osztva, hogy a százalékértékből decimális érték legyen, lefedi a 0,125% és 6% közötti tartományt. A kölcsön összege esetén az AmountSliderMax tulajdonságának értéke 60, és ez van megszorozva 10 000-rel, a 10 000 és 600 000 közötti tartományt lefedve.
A With értékét a rendszer automatikusan újraszámítja a csúszkák mozgatásával, és megjelenik az új hiteltörlesztés. Nem használnak változókat, és a csúszka vezérlőinek OnChange tulajdonságát nem kell használni.
Az alkalmazás létrehozásának részletes ismertetése:
- Új alkalmazás létrehozása.
- Adjon hozzá egy Csúszka vezérlőelemet, és adja neki a RateSlider nevet. Állítsa a Max tulajdonságot 48-ra.
- Vegyen fel egy Címke vezérlőelemet a csúszka bal oldalán. Állítsa be a Szöveg tulajdonságot a "Kamatláb:" értékre.
- Vegyen fel egy Címke vezérlőelemet a csúszka jobb oldalán. Állítsa a Szöveg tulajdonságát a RateSlider/8 & " %" képletre.
- Adjon hozzá egy Csúszka vezérlőelemet, és adja neki az AmountSlider nevet. Állítsa a Max tulajdonságot 60-ra.
- Vegyen fel egy Címke vezérlőelemet ennek a csúszkának a bal oldalán. Állítsa be a Szöveg tulajdonságot a "Kölcsön összege:" értékre.
- Vegyen fel egy Címke vezérlőelemet a csúszka bal oldalán. Állítsa be a Szöveg tulajdonságot a AmountSlider/8 * 10000 képlethez.
- Adjon hozzá egy Csúszka vezérlőelemet, és adja neki a YearsSlider nevet. Állítsa a Max tulajdonságot 40-ra.
- Vegyen fel egy Címke vezérlőelemet ennek a csúszkának a bal oldalán. Állítsa be a Szöveg tulajdonságát az "Évek száma:" értékre.
- Vegyen fel egy Címke vezérlőelemet a csúszka bal oldalán. Állítsa be a Szöveg tulajdonságot a YearsSlider képlethez.
- Adjon hozzá egy Címke vezérlőelemet, és a Szöveg tulajdonságát állítsa a fenti képletre.
- Vegyen fel egy Címke vezérlőelemet az utolsó címkevezérlő bal oldalán. Állítsa be a Szöveg tulajdonságot az "Ismétlődő havi fizetés:" értékre.
A Patch által visszaküldött elsődleges kulcs
With( Patch( Orders, Defaults( Orders ), { OrderStatus: "New" } ),
ForAll( NewOrderDetails,
Patch( OrderDetails, Defaults( OrderDetails ),
{ Order: OrderID, // from With's first argument, primary key of Patch result
Quantity: Quantity, // from ForAll's NewOrderDetails table
ProductID: ProductID } // from ForAll's NewOrderDetails table
)
)
)
Ez a példa egy bejegyzést ad hozzá az SQL Server Megrendelés táblájához. Ezután a rendszer a visszaküldött elsődleges kulcsot használja a rendeléshez, amelyet a Patch függvény adott vissza a Rendeléskód mezőben, hogy ezzel kapcsolódó bejegyzéseket hozzon létre az OrderDetails táblában.
Kinyert értékek reguláris kifejezéssel
With(
Match( "PT2H1M39S", "PT(?:(?<hours>\d+)H)?(?:(?<minutes>\d+)M)?(?:(?<seconds>\d+)S)?" ),
Time( Value( hours ), Value( minutes ), Value( seconds ) )
)
// Result: 2:01 AM (as shown in a label control, use the Text function to see the seconds)
Ez a példa az ISO 8601 időtartamértékből kivonja az órákat, a perceket és a másodperceket, majd ezekkel az alegyezésekkel létrehoz egy dátum- és időértéket.
Ne feledje, hogy bár az alegyezések számokat tartalmaznak, még mindig szöveges sztringben vannak. A matematikai műveletek végrehajtása előtt a Value függvénnyel konvertálja számmá.
Összetevő rekordjának leképezése
Lásd: Rekord leképezése.