Share via


S funkcijo

Velja za: Aplikacije Canvas Namizne tokove Aplikacije, ki temeljijo na modelu Power Platform CLI

Izračuna vrednosti in izvede dejanja za en zapis, vključno z zapisi poimenovanih vrednosti v vrstici.

Opis

Funkcija With ovrednoti formulo za en zapis. Formula lahko izračuna vrednost in/ali izvede dejanja, kot so spreminjanje podatkov ali delo s povezavo. Uporabite funkcijo ForAll in ovrednotite formulo za vse zapise v tabeli zapisov.

Polja zapisa, ki je trenutno v obdelavi, so na voljo v okviru formule. Uporabite operator ThisRecord ali pa polja preprosto navedite poimensko, kot bi storili za katero koli drugo vrednost. Operator As lahko uporabite tudi za poimenovanje zapisa, ki se obdeluje, s čimer bo formulo lažje razumeti in bodo dostopni ugnezdeni zapisi. Več informacij je v spodnjih primerih in razdelku delo z obsegom zapisov.

Uporabite funkcijo With, da izboljšate berljivost zapletenih formul tako, da jih razdelite na manjše poimenovane podformule. Te poimenovane vrednosti delujejo kot enostavne lokalne spremenljivke, vezane na obseg funkcije With. Ista sintaksa zapisa v vrstici, ki se uporablja s funkcijo UpdateContext, se lahko uporablja s funkcijo With. Uporaba funkcije With ima prednost pred spremenljivkami konteksta ali globalnimi spremenljivkami, saj je samostojna, lahko razumljiva in jo je mogoče uporabiti v kateremkoli deklarativnem kontekstu formule.

Uporabite With za dostop do polj zapisa, ki jih vrnejo funkcije, kot je Patch ali Ujemanje. Funkcija With hrani vrednost teh funkcij dovolj dolgo, da jo je mogoče uporabiti pri nadaljnjih izračunih ali dejanjih.

Če je argument Record za funkcijo With napaka, bo funkcija vrnila napako in formula ne bo ovrednotena.

Sintaksa

With( Record, Formula )

  • Zapis – obvezno. Zapis za obdelavo. Pri vrednosti imen uporabite sintakso v vrstici { name1: value1, name2: value2, ... }
  • Formula – obvezno. Formula za vrednotenje za Zapis. Formula se lahko sklicuje na katerokoli polje v zapisu neposredno kot na obseg zapisa.

Primeri

Enostavne poimenovane vrednosti

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

Ta primer uporablja zapis poimenovanih vrednosti za izračun prostornine valja. Funkcija With se uporablja za zajem vseh vhodnih vrednosti skupaj, zato jih je enostavno ločiti od samega izračuna.

Ugnezdena funkcija »With«

Kalkulator obresti s funkcijo »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
      )
)

Ta primer ugnezdi funkcijo With za ustvarjanje izračuna na dveh ravneh za mesečna hipotekarna plačila. Dokler ni sporov, se vse poimenovane vrednosti zunanje funkcije With na voljo v notranji funkciji With.

Ker se kontrolniki drsnika lahko pomikajo le v korakih po 1, se drsniki delijo ali množijo, da ustvarijo povečanje po meri. V primeru obrestne mere je za RateSlider lastnost Max nastavljena na 48 in deljena z 8 za povečanje za 1/8 odstotne točke ter deljena s 100 za pretvorbo iz odstotka v decimalno vrednost, ki zajema obseg od 0,125 % do 6 %. V primeru zneska posojila je za AmountSlider lastnost Max nastavljena na 60 in pomnožena z 10.000, da pokriva obseg od 10.000 do 600.000.

Funkcija With se samodejno preračuna med premikanjem drsnikov in prikaže se novo plačilo posojila. Uporabljena ni nobena spremenljivka in ni treba uporabiti lastnosti OnChange kontrolnikov drsnika.

Podrobna navodila za ustvarjanje te aplikacije:

  1. Ustvarite novo aplikacijo.
  2. Dodajte kontrolnik Slider in ga poimenujte RateSlider. Nastavite njegovo lastnost Max na 48.
  3. Dodajte kontrolnik Label levo od kontrolnika drsnika. Nastavite njegovo lastnost Besedilo na "Interest Rate:".
  4. Dodajte kontrolnik Label desno od kontrolnika drsnika. Njegovo lastnost Besedilo nastavite na formulo RateSlider/8 & " %".
  5. Dodajte še en kontrolnik Slider in ga poimenujte AmountSlider. Nastavite njegovo lastnost Max na 60.
  6. Dodajte kontrolnik Label levo od tega kontrolnika drsnika. Nastavite njegovo lastnost Besedilo na "Loan Amount:".
  7. Dodajte kontrolnik Label desno od tega kontrolnika drsnika. Nastavite njegovo lastnost Besedilo na formulo AmountSlider/8 * 10000.
  8. Dodajte še en kontrolnik Slider in ga poimenujte YearsSlider. Nastavite njegovo lastnost Max na 40.
  9. Dodajte kontrolnik Label levo od tega kontrolnika drsnika. Nastavite njegovo lastnost Besedilo na "Number of Years:".
  10. Dodajte kontrolnik Label desno od tega kontrolnika drsnika. Nastavite njegovo lastnost Besedilo na formulo YearsSlider.
  11. Dodajte kontrolnik Label in nastavite njegovo lastnost Besedilo na zgoraj prikazano formulo.
  12. Dodajte kontrolnik Label levo od zadnjega kontrolnika oznake. Nastavite njegovo lastnost Besedilo na "Recurring Monthly Payment:".

Primarni ključ, ki ga vrne funkcija »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
              )
      )
)

Ta primer doda zapis v tabelo Naročilo v strežniku SQL Server. Nato uporabi vrnjeni primarni ključ za naročilo, ki ga vrne funkcija Patch, v polju OrderID, da ustvari povezane zapise v tabeli OderDetails.

Izvlečene vrednosti z regularnim izrazom

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)

Ta primer izvleče ure, minute in sekunde iz vrednosti trajanja ISO 8601 ter nato uporabi ta podujemanja za ustvarjanje vrednosti datuma/časa.

Upoštevajte, da so podujemanja še vedno v besedilnem nizu, čeprav vsebujejo številke. Uporabite funkcijo Value za pretvorbo v število, preden izvedete matematične operacije.

Preslikava zapisa v komponenti

Glejte Preslikava zapisa.