Funkce With

Platí pro: aplikace plátna desktopové toky modelem řízené aplikace Power Platform CLI

Vypočítá hodnoty a provede akce s jedním záznamem včetně vložených záznamů pojmenovaných hodnot.

Popis

Funkce With vyhodnocuje vzorec pro jeden záznam. Vzorec může vypočítat hodnotu nebo provést akce, jako jsou třeba úpravy dat nebo práce s připojením. Použijte funkci ForAll, chcete-li vyhodnotit vzorec pro všechny záznamy v tabulce záznamů.

Aktuálně zpracovávaná pole záznamu jsou dostupná v rámci vzorce. Použijte operátor ThisRecord nebo jednoduše odkazujte na pole podle jména, jako byste měli jakoukoli jinou hodnotu. Operátor As lze také použít k pojmenování zpracovávaného záznamu, což může usnadnit pochopení vzorce a zpřístupnit vnořené záznamy. Další informace uvádějí následující příklady a práce s rozsahem záznamu.

Použití With pro zlepšení čitelnosti složitých vzorců jejich rozdělením na menší pojmenované dílčí vzorce. Tyto pojmenované hodnoty fungují jako jednoduché místní proměnné omezené na rozsah With. Stejná syntaxe vloženého záznamu, která se používá s funkcí UpdateContext lze použít s With. Použití With je preferováno před kontextem nebo globálními proměnnými, protože je samostatné, snadno pochopitelné a lze jej použít v jakémkoli kontextu deklarativního vzorce.

Použití With pro přístup k polím záznamu, které jsou vráceny funkcemi, jako je Patch nebo Match. With drží hodnotu z těchto funkcí dostatečně dlouho, aby se použila v dalších výpočtech nebo akcích.

Pokud argument Záznam k With je chyba, tato chyba bude vrácena funkcí a Vzorec nebude hodnocen.

Syntaxe

With ( Záznam, Vzorec)

  • Záznam – povinné. Tento záznam se použije. Pro hodnoty jmen použijte vloženou syntaxi { name1: value1, name2: value2, ... }
  • Vzorec – povinné. Vzorec, který se má vyhodnotit pro Záznam. Vzorec může odkazovat na kterékoli pole Záznam přímo jako rozsah záznamu.

Příklady

Jednoduché pojmenované hodnoty

With( { radius: 10,
        height: 15 },
    Pi() * (radius*radius) * height
)
// Result: 4712.38898038 (as shown in a label control)

Tento příklad používá záznam pojmenovaných hodnot pro výpočet objemu válce. With se používá k zachycení všech vstupních hodnot společně, což usnadňuje jejich oddělení od samotného výpočtu.

Vnořený

Úroková kalkulačka pomocí funkce 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 příklad vnořuje funkci With pro vytvoření dvouvrstvého výpočtu pro měsíční splátky hypotéky. Pokud nedojde ke konfliktu, všechny vnější hodnoty pojmenované With jsou dostupné uvnitř With.

Protože ovládací prvky posuvníku se mohou pohybovat pouze v krocích po 1, jsou posuvníky rozděleny nebo násobeny, aby se efektivně vytvořil vlastní přírůstek. V případě úrokové sazby RateSlider má svoji vlastnost Max nastavenou na 48 děleno 8 pro krok 1/8 procentního bodu a děleno 100 pro převod z procenta na desetinné místo, pokrývající rozmezí 0,125% až 6%. V případě výše půjčky, AmountSlider má svoji vlastnost Max nastavenou na 60 a vynásobenou 10 000, pokrývající rozmezí 10 000 až 600 000.

With se automaticky přepočítává, jak se posuvníky pohybují a zobrazuje se nová splátka úvěru. Nepoužívají se žádné proměnné a není nutné používat vlastnost OnChange posuvných ovládacích prvků.

Zde jsou podrobné pokyny k vytvoření této aplikace:

  1. Vytvořte novou aplikaci.
  2. Přidejte ovládací prvek Slider a pojmenujte jej RateSlider. Vlastnost Max nastavte na 48.
  3. Přidejte ovládací prvek Popisek vlevo od posuvného ovladače. Nastavte jeho vlastnost Text na "Úroková sazba:".
  4. Přidejte ovládací prvek Popisek vpravo od posuvného ovladače. Nastavte jeho vlastnost Text podle vzorce RateSlider/8 & " %".
  5. Přidejte další ovládací prvek Slider a pojmenujte jej AmountSlider. Vlastnost Max nastavte na 60.
  6. Přidejte ovládací prvek Popisek vlevo od tohoto posuvného ovladače. Nastavte jeho vlastnost Text na "Výše úvěru:".
  7. Přidejte ovládací prvek Popisek vpravo od tohoto posuvného ovladače. Nastavte jeho vlastnost Text podle vzorce AmountSlider/8 * 10000.
  8. Přidejte další ovládací prvek Slider a pojmenujte jej YearsSlider. Vlastnost Max nastavte na 40.
  9. Přidejte ovládací prvek Popisek vlevo od tohoto posuvného ovladače. Vlastnost Text nastavte na "Počet let:".
  10. Přidejte ovládací prvek Popisek vpravo od tohoto posuvného ovladače. Nastavte jeho vlastnost Text podle vzorce YearsSlider.
  11. Přidejte ovládací prvek Popisek a jeho vlastnost Text nastavte na vzorec výše.
  12. Přidejte ovládací prvek Label vlevo od posledního ovládacího prvku Label. Vlastnost Text nastavte na „Opakující se měsíční platba:“.

Primární klíč vrácený z Patch

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 příklad přidá záznam do tabulky Objednávka v SQL Server. Poté použije pro objednávku vrácený primární klíč, který vrátila funkce Patch v poli OrderID, avy se vytvořily související záznamy v tabulce OrderDetails.

Extrahované hodnoty s regulárním výrazem

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 příklad extrahuje hodiny, minuty a sekundy z hodnoty trvání ISO 8601 a pak pomocí těchto dílčích shod vytvoří hodnotu Date / Time.

Všimněte si, že ačkoli dílčí shody obsahují čísla, jsou stále v textovém řetězci. Použijte funkci Value, chcete-li převést na číslo před provedením matematických operací.

Mapování záznamu v komponentě

Viz Mapování záznamu.