Megosztás:


With függvény

A következőkre vonatkozik: Vászonalapú alkalmazások Copilot Studio Desktop folyamatok Modellalapú alkalmazások Power Platform CLI Dataverse függvények Power Pages

É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ény egyetlen rekord képletét értékeli ki. 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.

Összetett With képletek olvashatóságának javítása kisebb elnevezett alképletekre való felosztásával. Ezek az elnevezett értékek úgy működnek, mint az egyszerű helyi változók, amely a Withhatókörre korlátozódik. Az UpdateContext függvényhez használt beágyazott rekordszintaxis a következővel Withhasználható: A használat With előnyben részesíti a környezeti vagy globális változókat, mivel önálló, könnyen érthető, és bármilyen deklaratív képletkörnyezetben használható.

A rekord olyan mezőinek eléréséhez használható With , amelyeket olyan függvények adnak vissza, mint a Patch vagy a Match. With a függvények értékét elég hosszú ideig tárolja ahhoz, hogy további számításokban vagy műveletekben használhassa.

Ha a rekord argumentuma With hiba, akkor a függvény visszaadja a hibát, és a képlet nem lesz kiértékelve.

Szintaxis

With( 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. With az összes bemeneti érték közös rögzítésére szolgál, így könnyen elkülönítheti őket a számítástól.

Beágyazott With

Kamatkalkulátor függvény használatával With .

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

Ez a példa függvényeket With ágyaz be, hogy kétszintű számítást hozzon létre a havi törlesztőrészletekhez. Mindaddig, amíg nincs ütközés, az összes külső With névvel ellátott érték elérhető a belső With.

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 csúszkák áthelyezésével és az új hiteltörlesztés megjelenítésével a rendszer automatikusan újraszámítja a törlesztőrészletet. 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:

  1. Új alkalmazás létrehozása.
  2. Adjon hozzá egy Csúszka vezérlőelemet, és adja neki a RateSlider nevet. Állítsa a Max tulajdonságot 48-ra.
  3. 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.
  4. 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.
  5. Adjon hozzá egy Csúszka vezérlőelemet, és adja neki az AmountSlider nevet. Állítsa a Max tulajdonságot 60-ra.
  6. 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.
  7. 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.
  8. Adjon hozzá egy Csúszka vezérlőelemet, és adja neki a YearsSlider nevet. Állítsa a Max tulajdonságot 40-ra.
  9. 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.
  10. 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.
  11. Adjon hozzá egy Címke vezérlőelemet, és a Szöveg tulajdonságát állítsa a fenti képletre.
  12. 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.