If- ja Switch-funktio

Koskee seuraavia: Pohjaan perustuvat sovellukset Dataverse -kaavasarakkeet Työpöytätyökulut Mallipohjaiset sovellukset Power Platform CLI

Määrittää, onko mikään joukon ehdoista tosi (If) tai vastaako kaavan tulos mitään joukon arvoa (Switch), ja palauttaa sitten tuloksen tai suorittaa toiminnon.

Kuvaus

If-funktio testaa yhtä tai useampaa ehtoa, kunnes tosi-tulos löydetään. Jos tällainen tulos löytyy, palautetaan sitä vastaava arvo. Jos tällaista tulosta ei löydy, palautetaan oletusarvo. Kummassakin tapauksessa palautettu arvo voi olla näytettävä merkkijono, laskettava kaava tai mikä tahansa muu tulos.

Switch-funktio laskee kaavan ja määrittää, vastaako tulos mitään määrittämäsi jakson arvoa. Jos vastaavuus löytyy, palautetaan sitä vastaava arvo. Jos vastaavuutta ei löydy, palautetaan oletusarvo. Kummassakin tapauksessa palautettu arvo voi olla näytettävä merkkijono, laskettava kaava tai mikä tahansa muu tulos.

If ja Switch ovat hyvin samankaltaisia, mutta kannattaa käyttää tilanteeseesi parhaiten sopivaa funktiota:

  • Käytä If-funktiota, jos lasket yksittäistä ehtoa. Funktion yleisin syntaksi on If( Condition, ThenResult, DefaultResult ), joka antaa tavallisen ”jos… then … niin..." -mallin, jota käytetään muissa ohjelmointityökaluissa.
  • Käytä If-funktiota, jos lasket useita toisiinsa liittymättömiä ehtoja. Power Appsissa (toisin kuin Microsoft Excelissä) voit määrittää useita ehtoja ilman sisäkkäisiä If-kaavoja.
  • Käytä Switch-funktiota, jos lasket yksittäistä ehtoa useita mahdollisia vastaavuuksia vastaan. Voit käyttää tässä tapauksessa myös If-funktiota, mutta kaava pitää toistaa jokaista mahdollista vastaavuutta kohden.

Voit käyttää molempia funktioita toimintakaavoissa kahden tai useamman toiminnon välillä haarautumiseen. Vain yksi haara käynnistää toiminnon. Ehdot ja vastaavuudet lasketaan järjestyksessä ja ne pysähtyvät, jos ehto on tosi tai vastaavuus löytyy.

Blank palautetaan, jos yksikään ehto ei ole tosi, jos vastaavuuksia ei löydetä tai jos et määrittänyt oletustulosta.

Syntaksi

If( Condition, ThenResult [, DefaultResult ] )
If( Condition1, ThenResult1 [, Condition2, ThenResult2, ... [ , DefaultResult ] ] )

  • Condition(s) – Pakollinen. Kaavat, jotka testaavat arvoa tosi. Tällaiset kaavat sisältävät usein vertailuoperaattoreita (kuten <, > ja =) ja testausfunktioita kuten IsBlank ja IsEmpty.
  • ThenResult(s) – Pakollinen. Vastaava arvo, joka palautetaan arvon tosi antavalle ehdolle.
  • DefaultResult – Valinnainen. Palautettava arvo, jos mikään ehto ei anna arvoa tosi. Jos et määritä tätä argumenttia, palautetaan arvo tyhjä.

Switch( Formula, Match1, Result1 [, Match2, Result2, ... [, DefaultResult ] ] )

  • Formula – Pakollinen. Kaava, jolla vastaavuuksia lasketaan. Kaava lasketaan vain kerran.
  • Match(s) – Pakollinen. Arvot, joita verrataan Formula-parametrin tulokseen. Jos tarkka vastaavuus löydetään, vastaava Result palautetaan.
  • Result(s) – Pakollinen. Vastaava arvo, joka palautetaan, kun tarkka vastaavuus löydetään.
  • DefaultResult – Valinnainen. Arvo, joka palautetaan, jos tarkkaa vastaavuutta ei löydy. Jos et määritä tätä argumenttia, palautetaan arvo tyhjä.

Esimerkit

Arvot kaavoissa

Seuraavissa esimerkeissä Slider-ohjausobjektin (nimeltä Slider1) arvo on 25.

Kaava Description Result
If( Slider1.Value = 25, "Result1" ) Ehto on tosi, ja vastaava tulos palautetaan. "Result1"
If( Slider1.Value = 25, "Result1", "Result2" ) Ehto on tosi, ja vastaava tulos palautetaan. "Result1"
If( Slider1.Value>1000, "Result1" ) Ehto on epätosi, eikä DefaultResult-arvoa ole annettu. blank
If( Slider1.Value>1000, "Result1", "Result2" ) Ehto on epätosi, ja DefaultResult on annettu, joten se palautetaan. "Result2"
If( Slider1.Value = 25, "Result1", Slider1.Value > 0, "Result2" ) Ensimmäinen ehto on tosi, ja vastaava tulos palautetaan. Myös toinen ehto on tosi, mutta sitä ei lasketa, koska se esiintyy argumenttiluettelossa myöhemmin kuin toinen ehto, joka antaa arvon tosi. "Result1"
If( IsBlank( Slider1.Value ), "Result1", IsNumeric( Slider1.Value ), "Result2" ) Ensimmäinen ehto on epätosi, koska liukusäädin ei ole tyhjä. Toinen ehto on tosi, koska liukusäätimen arvo on numero. Vastaava tulos palautetaan. "Result2"
If( Slider1.Value>1000, "Result1", Slider1.Value>50, "Result2", "Result3") Sekä ensimmäisen että toisen ehdon arvo on epätosi, mutta OletusTulos on annettu, joten se palautetaan. "Result3"
Switch( Slider1.Value, 25, "Result1" ) Liukusäätimen arvo vastaa ensimmäistä tarkastettavaa arvoa, joten vastaava tulos palautetaan. "Result1"
Switch( Slider1.Value, 20, "Result1", 25, "Result2", 30, "Result3" ) Liukusäätimen arvo vastaa toista tarkastettavaa arvoa, joten vastaava tulos palautetaan. "Result2"
Switch( Slider1.Value, 20, "Result1", 10, "Result2", 0, "Result3", "DefaultResult" ) Liukusäätimen arvo ei vastaa mitään tarkistettavaa arvoa. DefaultResult on annettu, joten se palautetaan. "DefaultResult"

Haarautuminen toimintakaavioissa

Seuraavissa esimerkeissä Text input-ohjausobjektilla nimeltä FirstName on arvo ”John”.

Kaava Kuvaus Tulos
If( ! IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ) ) Ehto on tosi, joten Navigate-funktio suoritetaan. Voit testata, onko pakollinen lomakekenttä täytetty käyttämällä IsBlank-funktiota. Jos FirstName on blank, kaavalla ei ole vaikutusta. true

Näytöksi vaihdetaan Screen1.
If( IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ), Back() ) Ilman !-operaattoria ehto on epätosi, joten Navigate-funktiota ei suoriteta. Annettu DefaultResult on Back-funktio, joten se suoritetaan. true

Näyttö siirtyy takaisin aiemmin näytettyyn näyttöön.
Switch( FirstName.Text, "Carlos", Navigate( Screen1, ScreenTransition.None ), "Kirstin", Navigate( Screen2, ScreenTransition.None ), "John", Navigate( Screen3, ScreenTransition.None ) ) FirstName.Text-arvoa verrataan nimiin ”Carlos”, ”Kirstin” ja ”John” tässä järjestyksessä. Vastaavuus löytyy nimellä ”John”, joten sovellus siirtyy näyttöön Screen3. true

Näytöksi vaihdetaan Screen3.

Vaihe vaiheelta

  1. Lisää Text input-ohjausobjekti ja anna sille nimeksi Text1, jos tämä ei ole sen oletusnimi.

  2. Kirjoita kohtaan Text1 teksti 30.

  3. Lisää Label-ohjausobjekti ja määritä sen Text-ominaisuudeksi seuraava kaava:
    If( Value(Text1.Text) < 20, "Order MANY more!", Value(Text1.Text) < 40, "Order more!", Text1.Text )

    Label-ohjausobjektin tuloksena on Tilaa lisää!, koska Text1-arvo on suurempi kuin 20 mutta pienempi kuin 40.

  4. Kirjoita kohtaan Text1 teksti 15.

    Label-ohjausobjektin tuloksena on Tilaa PALJON lisää!, koska Text1-arvo on pienempi kuin 20.

  5. Kirjoita kohtaan Text1 teksti 50.

    Label-ohjausobjektissa näytetään kirjoittamasi arvo, koska se on suurempi kuin 40.