Dijeli putem


With funkcija

Odnosi se na: Canvas apps Copilot Studio Desktop flows Model-driven apps Power Platform CLI Dataverse functions Power Pages

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

Opis

Funkcija With procjenjuje formulu za jedan 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.

Koristi With se za poboljšanje čitljivosti složenih formula dijeljenjem na manje pod-formule. Ove imenovane vrijednosti funkcioniraju kao jednostavne lokalne varijable ograničene na područje primjene With. Istu sintaksu zapisa u retku koja se koristi s funkcijom UpdateContext može se koristiti s With. Preferira With se nad kontekstnim ili globalnim varijablama jer se ona sama nalazi, lako ga je razumjeti i može se koristiti u bilo kojem deklarativnom kontekstu formule.

Koristi With se za pristup poljima zapisa koja vraćaju funkcije kao što su Zakrpa ili Podudaranje. With sadrži vrijednost tih funkcija dovoljno dugo da se koristi u daljnjim izračunima ili akcijama.

Ako je argument Zapis u With pogreška, funkcija će vratiti tu pogrešku i formula se neće procijeniti.

Sintaksa

With( 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. With koristi se za snimanje svih ulaznih vrijednosti zajedno, što olakšava njihovo odvajanje od samog izračuna.

Ugniježđene With

Kalkulator interesa pomoću With funkcije.

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

U ovom se primjeru With ugniježđene funkcije za stvaranje izračuna s dvije razine za mjesečne otplate hipoteka. Sve dok nema sukoba, sve vanjske imenovane With vrijednosti dostupne su unutar unutarnjih .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.

Automatski With se ponovno izračunava kako se klizači pomičite i prikazuje se nova uplata kredita. 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.