Funksjonene If og Switch
Gjelder: Lerretsapper Dataverse-formelkolonner Skrivebordsflyt Modelldrevne apper Power Platform CLI
Bestemmer om eventuelle betingelser i et sett er sant (If) eller om resultatet av en formel samsvarer med en verdi i et sett (Switch) og returnerer deretter et resultat eller utfører en handling.
Beskrivelse
Funksjonen If tester én eller flere betingelser inntil et sann-resultat blir funnet. Hvis et slikt resultat blir funnet, returneres en tilsvarende verdi. Hvis ingen slike resultater blir funnet, returneres en standardverdi. I begge tilfeller kan den returnerte verdien være en streng for å vise, en formel for å evaluere eller en annen form for resultat.
Switch-funksjonen evaluerer en formel og bestemmer om resultatet samsvarer med en verdi i en rekkefølge som du angir. Hvis et treff finnes, returneres en tilsvarende verdi. Hvis det ikke finnes noen treff, returneres en standardverdi. I begge tilfeller kan den returnerte verdien være en streng for å vise, en formel for å evaluere eller en annen form for resultat.
If og Switch er svært like, men du bør bruke funksjonen som passer situasjonen din best:
- Bruk If til å evaluere en enkel betingelse. Den vanligste syntaksen for denne funksjonen er If( Condition, ThenResult, DefaultResult ), som gir det vanlige «hvis ... deretter … ellers ...» mønsteret som brukes i andre programmeringsverktøy.
- Bruk If til å evaluere flere ikke-relaterte betingelser. Du kan angi flere betingelser i Power Apps (i motsetning til Microsoft Excel) uten å måtte neste If-formler.
- Bruk Switch til å evaluere en enkel betingelse mot flere mulige treff. Du kan også bruke If i dette tilfellet, men du må gjenta formelen for hvert mulige treff.
Du kan bruke begge disse funksjonene i formler for virkemåte til å forgrene mellom to eller flere handlinger. Bare én gren utløser en handling. Betingelser og treff evalueres i rekkefølge, og de stopper hvis en betingelse er sann eller finner et treff.
Blank returneres hvis ingen betingelser er sann, ingen treff finnes og du ikke angir et standardresultat.
Syntaks
If( Condition, ThenResult [, DefaultResult ] )
If( Condition1, ThenResult1 [, Condition2, ThenResult2, ... [ , DefaultResult ] ] )
- Condition(s) – obligatorisk. Formelen(e) til å teste for sann. Slike formler inneholder vanligvis sammenlignende operatorer (for eksempel <, > og =) og tester funksjoner som IsBlank og IsEmpty.
- ThenResult(s) - obligatorisk. Den tilsvarende verdien skal returneres for en betingelse som evalueres til sann.
- DefaultResult - valgfritt. Verdien som skal returneres hvis ingen betingelser evalueres til sann. Hvis du ikke angir dette argumentet, returneres tom.
Switch( Formula, Match1, Result1 [, Match2, Result2, ... [, DefaultResult ] ] )
- Formula – obligatorisk. Formelen som skal evalueres for treff. Denne formelen er evaluert bare én gang.
- Match(s) - obligatorisk. Verdier som skal sammenlignes med resultatet fra formelen. Hvis et nøyaktig treff blir funnet, returneres det tilhørende resultatet.
- Result(s) - obligatorisk. Den tilsvarende verdien skal returneres når det er funnet et nøyaktig treff.
- DefaultResult - valgfritt. Hvis det ikke blir funnet et nøyaktig treff, returneres verdien. Hvis du ikke angir dette argumentet, returneres tom.
Eksempler
Verdier i formler
I eksemplene nedenfor har en Slider-kontroll (kalt Slider1) en verdi på 25.
Formel | Bekrivelse | Result |
---|---|---|
If( Slider1.Value = 25, "Result1" ) | Betingelsen er sann, og det tilsvarende resultatet returneres. | "Result1" |
If( Slider1.Value = 25, "Result1", "Result2" ) | Betingelsen er sann, og det tilsvarende resultatet returneres. | "Result1" |
If( Slider1.Value>1000, "Result1" ) | Betingelsen er usann, og ingen DefaultResult ble angitt. | tom |
If( Slider1.Value>1000, "Result1", "Result2" ) | Betingelsen er usann, et DefaultResult ble angitt, og det returneres. | "Result2" |
If( Slider1.Value = 25, "Result1", Slider1.Value > 0, "Result2" ) | Den første betingelsen er sann, og det tilsvarende resultatet returneres. Den andre betingelsen er også sann, men den evalueres ikke fordi den vises i argumentlisten senere enn en betingelse som evalueres til sann. | "Result1" |
If( IsBlank( Slider1.Value ), "Result1", IsNumeric( Slider1.Value ), "Result2" ) | Den første betingelsen er usann fordi glidebryteren ikke er tom. Den andre betingelsen er sann fordi verdien til glidebryteren er et tall, og det tilsvarende resultatet returneres. | "Result2" |
If( Slider1.Value>1000, "Result1", Slider1.Value>50, "Result2", "Result3") | Både første og andre betingelse er usann, DefaultResult ble angitt, og den returneres. | "Result3" |
Switch( Slider1.Value, 25, "Result1" ) | Verdien til glidebryteren samsvarer med den første verdien som skal kontrolleres, og det tilsvarende resultatet returneres. | "Result1" |
Switch( Slider1.Value, 20, "Result1", 25, "Result2", 30, "Result3" ) | Verdien til glidebryteren samsvarer med den andre verdien som skal kontrolleres, og det tilsvarende resultatet returneres. | "Result2" |
Switch( Slider1.Value, 20, "Result1", 10, "Result2", 0, "Result3", "DefaultResult" ) | Verdien til glidebryteren samsvarer ikke med en verdi som skal kontrolleres. DefaultResult ble angitt, slik at det returneres. | "DefaultResult" |
Forgrening i formler for virkemåte
I disse eksemplene har en Text input-kontroll kalt FirstName verdien «John» skrevet inn i den.
Formel | Beskrivelse | Resultat |
---|---|---|
If( ! IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ) ) | Betingelsen er sann, slik at Navigate-funksjonen kjører. Du kan bruke IsBlank-funksjonen til å teste om et obligatorisk skjemafelt er fylt ut. Hvis FirstName var blank, vil ikke denne formelen ha noen innvirkning. | true Visningen er endret til Screen1. |
If( IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ), Back() ) | Uten !-operatoren, er betingelsen usann, slik at Navigate-funksjonen ikke kjøres. Back-funksjonen ble angitt som DefaultResult, slik at den kjører. | true Visningen går tilbake til skjermbildet som tidligere ble vist. |
Switch( FirstName.Text, "Carlos", Navigate( Screen1, ScreenTransition.None ), "Kirstin", Navigate( Screen2, ScreenTransition.None ), "John", Navigate( Screen3, ScreenTransition.None ) ) | Verdien for FirstName.Text sammenlignes mot «Carlos», «Kirstin» og «John» i den rekkefølgen. Appen finner et treff med «John», og går til Screen3. | true Visningen er endret til Screen3. |
Trinnvis
Legg til en Text input-kontroll, og gi den navnet Text1 hvis den ikke har det navnet som standard.
Skriv 30 i Text1.
Legg til en Label-kontroll, og sett Text-egenskapen til denne formelen:
If( Value(Text1.Text) < 20, "Bestill mye mer!", Value(Text1.Text) < 40, "Bestill mer!", Text1.Text )Etikett-kontrollen viser Bestill mer!, fordi verdien av Tekst1 er mer enn 20, men mindre enn 40.
Skriv 15 i Text1.
Etikett-kontrollen viser Bestill mye mer!, fordi verdien av Tekst1 er mer enn 20, men mindre enn 20.
Skriv 50 i Text1.
Label-kontrollen viser verdien som du skrev inn fordi den er mer enn 40.