With-funktio
Koskee seuraavia: pohjaan perustuvat sovellukset työpöytätyönkulut Mallipohjaisten sovellusten Power Pages Power Platform CLI
Laskee arvot ja suorittaa toimintoja yksittäiselle tietueelle, mukaan lukien nimettyjen arvojen sisäiset tietueet.
Kuvaus
With-funktion avulla voit arvioida yhden tietueen kaavan. Kaava voi laskea arvon ja suorittaa toimintoja, kuten tietojen muokkaus tai yhteyden käyttäminen. Käytä ForAll-funktiota, kun haluat laskea kaavan kaikille tietuetaulukon tietueille.
Parhaillaan käsiteltävän tietueen kentät ovat kaavan käytettävissä. Käytä ThisRecord-operaattoria tai viittaa kenttiin nimellä muiden arvojen tapaan. As-operaattoria voidaan käyttää myös käsiteltävän tietueen nimeämiseen, mikä voi auttaa tekemään kaavasta helpommin ymmärrettävän ja mahdollistaa sisäkkäisten tietueiden käytön. Lisätietoja on seuraavissa esimerkeissä ja tietueen vaikutusalueen käsittelyn ohjeessa.
With-funktion avulla voit parantaa monimutkaisten kaavojen luettavuutta jakamalla ne pienempiin nimettyihin alikaavoihin. Nämä nimetyt arvot toimivat kuten yksinkertaiset paikalliset muuttujat, jotka rajoittuvat With-funktion vaikutusalueeseen. With -funktion kanssa voi käyttää samaa sisäistä tietuesyntaksia kuin UpdateContext-funktion kanssa. With-funktion käyttäminen on ensisijaista konteksti- tai yleismuuttujien käyttöön nähden, koska funktio on itsenäinen, sitä on helppo ymmärtää ja sitä voi käyttää missä tahansa deklaratiivisessa kaavakontekstissa.
Käytä With-toimintoa käyttääksesi tietueen kenttiä, joita palauttavat funktiot, kuten Patch ja Match. With pitää näiden funktioiden arvon riittävän kauan, jotta sitä voidaan käyttää tulevissa laskelmissa tai toiminnoissa.
Jos With-funktion Tietue-argumentti on virhe, funktio palauttaa kyseisen virheen, ja kaavaa ei lasketa.
Syntaksi
With(tietue,kaava )
- Record – Pakollinen. Tietue, jonka osalta toimitaan. Käytä nimiarvojen osalta sisäistä syntaksia
{ name1: value1, name2: value2, ... }
- Kaava – Pakollinen. Tietueen osalta arvioitava kaava. Kaava voi viitata mihin tahansa Tietueen kenttään suoraan tietueen vaikutusalueena.
Esimerkit
Yksinkertaiset nimetyt arvot
With( { radius: 10,
height: 15 },
Pi() * (radius*radius) * height
)
// Result: 4712.38898038 (as shown in a label control)
Tässä esimerkissä kartion tilavuus lasketaan nimettyjen arvojen tietueen perusteella. Kanssa käytetään kaikkien syötettyjen arvojen kaappaamiseen yhdessä, mikä helpottaa niiden erottamista itse laskelmasta.
Sisäkkäinen With-funktio
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
)
)
Tässä esimerkissä käytetään sisäkkäisiä With-funktioita kaksiosaiseen kuukausittaisten asuntolainan lyhennyksien laskemiseen. Niin kauan kuin ristiriitaa ei ilmene, kaikki ulkoiset With-funktion nimetyt arvot ovat käytettävissä sisemmässä With-funktiossa.
Koska liukusäätimet voivat liikkua vain 1 arvon kerrallaan, liukusäätimet jaetaan tai kerrotaan käytännössä mukautetun lisäyksen luomiseksi. Koron osalta RateSlider-säätimen Max-ominaisuudeksi on määritetty 48, joka jaetaan kahdeksalla, jotta saadaan 1/8-prosenttipisteen lisäys, ja sitten 100:lla prosenttiosuuden desimaaliksi muuntamiseksi, jolloin saadaan katettua alue 0,125–6 %. Lainan määrän osalta AmountSlider-säätimen Max-ominaisuuden arvoksi on määritetty 60. Se kerrotaan 10 000:lla, jolloin katetaan alue 10 000 – 600 000.
With lasketaan automaattisesti uudelleen, kun liukusäätimet liikkuvat ja uusi lainanmaksu on näkyvissä. Muuttujia ei käytetä eikä liukusäädinten OnChange-ominaisuutta tarvitse käyttää.
Tässä esitetään yksityiskohtaiset ohjeet tämän sovelluksen luomiseen:
- Luo uusi sovellus.
- Lisää Slider-ohjausobjekti ja anna sille nimeksi RateSlider. Määritä sen Max-ominaisuudeksi 48.
- Lisää Slider-ohjausobjektin vasemmalle puolelle Label-ohjausobjekti. Määritä sen Text-ominaisuuden arvoksi "Interest Rate:".
- Lisää Slider-ohjausobjektin oikealle puolelle Label-ohjausobjekti. Määritä sen Teksti-ominaisuuden arvoksi kaava RateSlider/8 & " %".
- Lisää uusi Slider-ohjausobjekti ja anna sille nimeksi AmountSlider. Määritä sen Max-ominaisuudeksi 60.
- Lisää tämän Slider-ohjausobjektin vasemmalle puolelle Label-ohjausobjekti. Määritä sen Text-ominaisuuden arvoksi "Loan Amount:".
- Lisää tämän Slider-ohjausobjektin oikealle puolelle Label-ohjausobjekti. Määritä sen Text-ominaisuuden kaavaksi AmountSlider/8 * 10000.
- Lisää uusi Slider-ohjausobjekti ja anna sille nimeksi YearsSlider. Määritä sen Max-ominaisuudeksi 40.
- Lisää tämän Slider-ohjausobjektin vasemmalle puolelle Label-ohjausobjekti. Aseta sen Text-ominaisuuden arvoksi "Number of Years:".
- Lisää tämän Slider-ohjausobjektin oikealle puolelle Label-ohjausobjekti. Määritä sen Text-ominaisuuden kaavaksi YearsSlider.
- Lisää Label-ohjausobjekti ja määritä sen Text-ominaisuudeksi edellä esitetty kaava.
- Lisää viimeisen Label-ohjausobjektin vasemmalle puolelle Label-ohjausobjekti. Määritä sen Text-ominaisuudeksi "Recurring Monthly Payment:".
Patch-toiminnon palauttama perusavain
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
)
)
)
Tässä esimerkissä lisätään tietue SQL Serverin Tilaus-taulukkoon. Sen jälkeen se käyttää tilauksen palautettua perusavainta, jonka Patch-toiminto palautti OrderID-kenttään, luodakseen liittyviä tietueita OrderDetails-taulukossa.
Poimitut arvot, joilla on säännöllinen lauseke
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)
Tämä esimerkki poimii tunnit, minuutit ja sekunnit ISO 8601 -kestoarvosta ja käyttää sitten alivastaavuuksia Päivämäärä-/Aika-arvon luomiseen.
Huomaa, että vaikka alivastaavuudet sisältävät lukuja, ne ovat vielä tekstimerkkijonossa. Muunna numero Value-funktiolla, ennen kuin suoritat matemaattisia toimintoja.
Tietueen yhdistäminen komponenttiin
Katso Yhdistä tietue.