S funkciou
Vzťahuje sa na: aplikácie plátna
toky na počítači
aplikácie riadené modelom
Power Pages
Power Platform CLI
Vypočíta hodnoty a vykoná akcie pre jeden záznam vrátane vnorených záznamov pomenovaných hodnôt.
Popis
Funkciu With vyhodnocuje vzorec pre jeden záznam. Vzorec môže vypočítať hodnotu alebo vykonať akcie, ako sú napríklad úpravy údajov alebo práca s pripojením. Použi funkciu ForAll na vyhodnotenie vzorca pre všetky záznamy v tabuľke záznamov.
Polia záznamu, ktorý sa momentálne spracúva, sú k dispozícii v rámci vzorca. Použite operátor ThisRecord alebo jednoducho odkážte na polia podľa názvu, ako by ste urobili s ľubovoľnou inou hodnotou. Operátor As sa dá použiť aj na pomenovanie záznamu, ktorý sa práve spracúva, vďaka čomu môžete vytvoriť ľahšie pochopiteľný vzorec a sprístupniť vnorené záznamy. Ďalšie informácie nájdete v príkladoch nižšie a v téme, ako pracovať s rozsahom záznamu.
Použitie With na zlepšenie čitateľnosti zložitých vzorcov rozdelením na menšie pomenované podvzorce. Tieto pomenované hodnoty fungujú ako jednoduché miestne premenné obmedzené na rozsah pôsobnosti With. Rovnaká syntax vloženého záznamu, ktorá sa používa vo funkcii UpdateContext možno použiť s With. Použitie With je preferované pred kontextom alebo globálnymi premennými, pretože je samostatný, ľahko zrozumiteľný a môže sa použiť v akomkoľvek kontexte deklaratívnych vzorcov.
Použite With na prístup k poliam záznamu, ktoré vracajú funkcie ako Patch alebo Zhoda. With uchová hodnotu z týchto funkcií dostatočne dlho na to, aby sa dala použiť v ďalších výpočtoch alebo akciách.
Ak je argument Record na With chybový, táto chyba bude vrátená funkciou a Vzorec sa nevyhodnotí.
Syntax
S( Záznam, Vzorec )
- Záznam – Povinné. Záznam, na základe ktorého sa má konať. Pre hodnoty názvov použite inline syntax
{ name1: value1, name2: value2, ... }
- Vzorec – povinné. Vzorec určený na vyhodnotenie pre Záznam. Vzorec môže odkazovať na ktorékoľvek z polí záznamu priamo ako rozsah záznamu.
Príklady
Jednoduché pomenované hodnoty
With( { radius: 10,
height: 15 },
Pi() * (radius*radius) * height
)
// Result: 4712.38898038 (as shown in a label control)
Tento príklad používa záznam pomenovaných hodnôt na výpočet objemu valca. S sa používa na zachytenie všetkých vstupných hodnôt spolu, čo uľahčuje ich oddelenie od samotného výpočtu.
Vnorené 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
)
)
Tento príklad vnorenia funkcie With slúži na vytvorenie dvojstupňového výpočtu pre mesačné splátky hypotéky. Pokiaľ nedôjde ku konfliktu, všetky vonkajšie pomenované hodnoty With sú dostupné vo vnútri With.
Pretože ovládacie prvky posúvača sa môžu pohybovať iba v krokoch 1, sú posúvače rozdelené alebo násobené, aby sa efektívne vytvoril vlastný prírastok. V prípade úrokovej sadzby RateSlidermá svoju vlastnosť Max nastavenú na 48, vydelené 8 pre prírastok 1/8 percentuálneho bodu a vydelené 100 pre prevod z percenta na desatinné miesto, pokrývajúce rozsah 0,125% až 6%. V prípade výšky úveru: AmountSlider má svoju vlastnosť Max nastavenú na 60 a vynásobené 10 000, čo predstavuje rozsah 10 000 až 600 000.
With sa automaticky prepočítava, keď sa posúvače pohybujú a zobrazuje sa nová splátka úveru. Nepoužívajú sa žiadne premenné a nie je potrebné používať OnChange vlastnosť posuvných ovládacích prvkov.
Tu sú podrobné pokyny na vytvorenie tejto aplikácie:
- Vytvorenie novej aplikácie.
- Pridajte ovládací prvok Jazdec a pomenujte ho RateSlider. Nastavte jeho vlastnosť Max na hodnotu 48.
- Pridaj ovládací prvok Označenie naľavo od posuvného ovládača. Nastavte jeho vlastnosť Text na "Úroková sadzba:".
- Pridaj ovládací prvok Označenie vpravo od posuvného ovládača. Nastavte jeho vlastnosť Text na vzorec RateSlider/8 & "%".
- Pridajte ďalší ovládací prvok Jazdec a pomenujte ho AmountSlider. Nastavte jeho vlastnosť Max na hodnotu 60.
- Pridaj ovládací prvok Označenie naľavo od tohto posuvného ovládača. Nastavte jeho vlastnosť Text na "Výška pôžičky:".
- Pridaj ovládací prvok Označenie vpravo od tohto posuvného ovládača. Nastavte jeho vlastnosť Text podľa vzorca AmountSlider/8 * 10000.
- Pridajte ďalší ovládací prvok Jazdec a pomenujte ho YearsSlider. Nastavte jeho vlastnosť Max na hodnotu 40.
- Pridaj ovládací prvok Označenie naľavo od tohto posuvného ovládača. Nastavte jeho hodnotu Text na „Počet rokov:“.
- Pridaj ovládací prvok Označenie vpravo od tohto posuvného ovládača. Nastavte jeho vlastnosť Text podľa vzorca YearsSlider.
- Pridajte ovládací prvok Označenie a jeho vlastnosť Text nastavte na vyššie uvedený vzorec.
- Pridaj ovládací prvok Označenie naľavo od posledného ovládacieho prvku označenia. Nastavte jeho vlastnosť Text na „Opakovaná mesačná platba:“.
Primárny kľúč sa vrátil zo Záplaty
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
)
)
)
Tento príklad pridá záznam do tabuľky Objednávka v SQL Server. Potom použije pre objednávku vrátený primárny kľúč vrátený funkciou Patch v poli OrderID, čím sa vytvoria súvisiace záznamy v tabuľke OrderDetails.
Extrahované hodnoty s regulárnym výrazom
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)
Tento príklad extrahuje hodiny, minúty a sekundy z hodnoty trvania ISO 8601 a potom pomocou týchto čiastkových zhôd vytvorí hodnotu dátum/čas.
Všimnite si, že hoci čiastkové zhody obsahujú čísla, stále sú v textovom reťazci. Použite funkciu Value na prevod na číslo pred vykonaním matematických operácií.
Mapovanie záznamu v súčasti
Pozrite si Mapovanie záznamu.