Share via


With-funktio

Koskee seuraavia: Pohjaan perustuvat sovellukset Työpöytätyönkulut Mallipohjaiset sovellukset 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 säilyttää näiden funktioiden arvon riittävän kauan, jotta sitä voidaan käyttää jatkolaskennoissa tai -toiminnoissa.

Jos With-funktion Tietue-argumentti on virhe, funktio palauttaa kyseisen virheen, ja kaavaa ei lasketa.

Syntaksi

With( Record, Formula )

  • Record – pakollinen. Tietue, jonka osalta toimitaan. Käytä nimiarvojen osalta sisäistä syntaksia { name1: value1, name2: value2, ... }
  • Formula – 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. With-toimintoa käytetään kaikkien syötearvojen yhteen keräämisessä, jolloin ne on helppo erottaa itse laskennasta.

Sisäkkäinen With-funktio

Korkolaskuri With-funktion avulla.

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:

  1. Luo uusi sovellus.
  2. Lisää Slider-ohjausobjekti ja anna sille nimeksi RateSlider. Määritä sen Max-ominaisuudeksi 48.
  3. Lisää Slider-ohjausobjektin vasemmalle puolelle Label-ohjausobjekti. Määritä sen Text-ominaisuuden arvoksi "Interest Rate:".
  4. Lisää Slider-ohjausobjektin oikealle puolelle Label-ohjausobjekti. Määritä sen Teksti-ominaisuuden arvoksi kaava RateSlider/8 & " %".
  5. Lisää uusi Slider-ohjausobjekti ja anna sille nimeksi AmountSlider. Määritä sen Max-ominaisuudeksi 60.
  6. Lisää tämän Slider-ohjausobjektin vasemmalle puolelle Label-ohjausobjekti. Määritä sen Text-ominaisuuden arvoksi "Loan Amount:".
  7. Lisää tämän Slider-ohjausobjektin oikealle puolelle Label-ohjausobjekti. Määritä sen Text-ominaisuuden kaavaksi AmountSlider/8 * 10000.
  8. Lisää uusi Slider-ohjausobjekti ja anna sille nimeksi YearsSlider. Määritä sen Max-ominaisuudeksi 40.
  9. Lisää tämän Slider-ohjausobjektin vasemmalle puolelle Label-ohjausobjekti. Aseta sen Text-ominaisuuden arvoksi "Number of Years:".
  10. Lisää tämän Slider-ohjausobjektin oikealle puolelle Label-ohjausobjekti. Määritä sen Text-ominaisuuden kaavaksi YearsSlider.
  11. Lisää Label-ohjausobjekti ja määritä sen Text-ominaisuudeksi edellä esitetty kaava.
  12. 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.