Dijeli putem


S funkcijom

Odnosi se na: Aplikacije radnog područja Tijekovi radne površine CLI aplikacija Power Pages Power Platform utemeljenih na modelu

Izračunava vrijednosti i izvodi radnje za pojedinačni zapis, uključujući i zapise u retku imenovanih vrijednosti.

Opis

Funkcija With procjenjuje neku formulu za pojedinačni zapis. Formula može izračunati neku vrijednost i/ili izvoditi radnje, poput izmjene podataka ili rada s nekom vezom. Upotrijebite funkciju ForAll kako biste procijenili neku formulu za sve zapise u tablici zapisa.

Polja zapisa koja se trenutno obrađuju dostupna su unutar formule. Upotrijebite ThisRecord operator ili jednostavno spomenite polja imenom na isti način kao i bilo koju drugu vrijednost. Za imenovanje zapisa koji se obrađuje možete upotrijebiti i As operator, a to vam može pomoći učiniti formulu razumljivijom, a ugniježđene zapise pristupačnijima. Više informacija potražite u primjerima u nastavku i radu u djelokrugu zapisa.

Upotrijebite With kako biste poboljšali čitljivost složenih formula dijeleći ih na manje imenovane podformule. Te imenovane vrijednosti djeluju poput jednostavnih lokalnih varijabli koje su ograničene na opseg funkcije With. Ista sintaksa ugrađenog zapisa koja se koristi s funkcijom UpdateContext može se koristiti s funkcijom With. Funkcija With radije se koristi od varijabli konteksta ili globalnih varijabli jer sama sebe sadržava, lako se razumije i može se koristiti u bilo kojem kontekstu deklarativne formule.

Koristite With za pristup poljima zapisa koja vraćaju funkcije kao što su Patch ili Match. S zadržava vrijednost iz ovih funkcija dovoljno dugo da se koristi u daljnjim izračunima ili radnjama.

Ako je argument zapis funkcije With pogreška, funkcija će vratiti tu pogrešku i formula se neće procjenjivati.

Sintaksa

S(Zapis,Formula )

  • Zapis– Obavezno. Zapis na koji se djeluje. Za vrijednosti naziva koristite ugrađenu sintaksu { name1: value1, name2: value2, ... }
  • Formula – Obavezno. Formula koju treba procijeniti za zapis. Formula može upućivati na bilo koje polje za zapis izravno kao opseg zapisa.

Primjeri

Jednostavne imenovane vrijednosti

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

Ovaj primjer koristi zapis imenovanih vrijednosti radi izračuna volumena nekog cilindra. S se koristi za bilježenje svih ulaznih vrijednosti zajedno, što olakšava njihovo odvajanje od samog izračuna.

Ugniježđena funkcija With

Kalkulator kamate pomoću funkcije 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
      )
)

Ovaj primjer gnijezdi funkcije With radi stvaranja dvostepenog izračuna za mjesečna hipotekarna plaćanja. Dok ne postoji neki konflikt, sve imenovane vrijednosti vanjske funkcije With dostupne su u unutarnjoj funkciji With.

Budući da se klizači mogu pomicati samo u koracima od 1, klizači se dijele ili množe kako bi se učinkovito stvorio prilagođeni priraštaj. U slučaju kamatne stope, RateSlider ima svojstvo Max postavljeno na 48, podijeljeno s 8 za priraštaj od 1/8-postotnog boda i podijeljeno sa 100 da bi se pretvorilo iz postotka u decimalni iznos, pokrivajući raspon od 0,125 % do 6 %. U slučaju iznosa zajma, AmountSlider ima svojstvo Max postavljeno na 60 i pomnoženo s 10.000, pokrivajući raspon od 10.000 do 600.000.

Funkcija With automatski se preračunava pri pomicanu klizača i prikazuje novo plaćanje zajma. Ne koriste se nikakve varijable i nema potrebe za korištenjem svojstva OnChange klizača.

Evo detaljnih uputa za stvaranje ove aplikacije:

  1. Stvorite novu aplikaciju.
  2. Dodajte kontrolu Slider i nazovite je RateSlider. Postavite svojstvo Max na 48.
  3. Dodajte kontrolu Label s lijeve strane klizača. Postavite njegovo svojstvo Text na "Interest Rate:".
  4. Dodajte kontrolu Label s desne strane klizača. Postavite svojstvo Text na formulu RateSlider/8 & " %".
  5. Dodajte još jednu kontrolu Slider i nazovite je AmountSlider. Postavite svojstvo Max na 60.
  6. Dodajte kontrolu Label s lijeve strane ovog klizača. Postavite njegovo svojstvo Text na "Loan Amount:".
  7. Dodajte kontrolu Label s desne strane ovog klizača. Postavite njegovo svojstvo Text na formulu AmountSlider/8 * 10000.
  8. Dodajte još jednu kontrolu Slider i nazovite je YearsSlider. Postavite svojstvo Max na 40.
  9. Dodajte kontrolu Label s lijeve strane ovog klizača. Postavite njegovo svojstvo Text na "Number of Years:".
  10. Dodajte kontrolu Label s desne strane ovog klizača. Postavite njegovo svojstvo Text na formulu YearsSlider.
  11. Dodajte kontrolu Label i postavite njeno svojstvo Text na formulu prikazanu iznad.
  12. Dodajte kontrolu Label s lijeve strane zadnje kontrole oznake. Postavite njegovo svojstvo Text na "Recurring Monthly Payment:".

Primarni ključ vraćen iz funkcije 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
              )
      )
)

Ovaj primjer dodaje zapis u tablicu Order u SQL Serveru. Zatim koristi vraćeni primarni ključ za narudžbu, koji je vratila funkcija Patch u polje OrderID kako bi se stvorili povezani zapisi u tablici OrderDetails.

Izdvojene vrijednosti s 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)

Ovaj primjer izdvaja sate, minute i sekunde iz ISO 8601 vrijednosti trajanja, a zatim koristi te podrezultate za stvaranje vrijednosti datum/vrijeme.

Imajte na umu da, iako podrezultati sadrže brojeve, oni su i dalje u tekstnom nizu. Upotrijebite funkciju Value za pretvaranje u broj prije izvođenja matematičkih operacija.

Mapirajte zapis u komponenti

Pogledajte Mapirajte zapis.