Funktionerne If og Switch

Gælder for: Lærredsapps Dataverse formelkolonner Skrivebordsflows Modeldrevne apps Power Platform CLI

Bestemmer, om en betingelse i et sæt er sand (If), eller om resultatet af en formel svarer til en værdi i et sæt (Switch) og returnerer derefter et resultat eller udfører en handling.

Beskrivelse

Funktionen If tester en eller flere betingelser, indtil et resultat, som er sand, er fundet. Hvis der findes et sådant resultat, returneres en tilsvarende værdi. Hvis der ikke findes et sådant resultat, returneres en standardværdi. I begge tilfælde kan den returnerede værdi være en streng, der skal vises, en formel, som skal evalueres, eller en anden form for resultat.

Funktionen Switch evaluerer en formel og afgør, om resultatet svarer til en værdi i en sekvens, som du angiver. Hvis der findes et sådant match, returneres en tilsvarende værdi. Hvis der ikke findes et sådant match, returneres en standardværdi. I begge tilfælde kan den returnerede værdi være en streng, der skal vises, en formel, som skal evalueres, eller en anden form for resultat.

If og Switch er meget ens, men du skal bruge den funktion, der passer bedst til din situation:

  • Brug If til at evaluere en enkelt betingelse. Den mest almindelige syntaks for denne funktion er If( Condition, ThenResult, DefaultResult ), som giver det fælles mønster "if … then … else ...."-mønster, der ses i andre programmeringsværktøjer.
  • Brug If til at evaluere flere ikke-relaterede betingelser. I Power Apps (modsat Microsoft Excel) kan du angive flere betingelser, uden at du skal indlejre If-formler.
  • Brug Switch til at vurdere en enkelt betingelse i forhold til flere mulige matches. Du kan også bruge If i dette tilfælde, men du skal gentage formlen for hvert mulige match.

Du kan bruge begge disse funktioner i formler for funktionsmåde til at skifte mellem to eller flere handlinger. Det er kun én gren, der udløser en handling. Betingelser og matches evalueres i rækkefølge, og de stopper, hvis en betingelse er sand, eller der findes et match.

Tom returneres, hvis ingen betingelser er sand, der ikke findes nogen resultater, og du ikke angiver et standardresultat.

Syntaks

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

  • Condition(s) – påkrævet. Formler til test af sand. Disse formler indeholder typisk operatorer til sammenligning (f.eks. <, > and =) og testfunktioner såsom IsBlank og IsEmpty.
  • ThenResult(s) – påkrævet. Den tilsvarende værdi, der skal returneres for en betingelse, som evalueres til sand.
  • DefaultResult - valgfri. Den værdi, der skal returneres, hvis ingen betingelser evalueres til sand. Hvis du ikke angiver dette argument, returneres værdien tom.

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

  • Formel – påkrævet. Formel, der skal evalueres for matches. Denne formel evalueres kun én gang.
  • Match(s) - påkrævet. Værdier, der skal sammenlignes med resultatet fra Formel. Hvis der findes et præcist match, returneres det tilsvarende Result.
  • Resultat(er) - påkrævet. Den tilsvarende værdi, som skal returneres, når der findes et præcist match.
  • DefaultResult - valgfri. Hvis der ikke findes et præcist match, returneres denne værdi. Hvis du ikke angiver dette argument, returneres værdien tom.

Eksempler

Værdier i formler

I følgende eksempler har et Slider-kontrolelement (med navnet Slider1) en værdi på 25.

Formel Beskrivelse Resultat
If( Slider1.Value = 25, "Result1" ) Betingelsen er sand, og det tilsvarende resultat returneres. "Result1"
If( Slider1.Value = 25, "Result1", "Result2" ) Betingelsen er sand, og det tilsvarende resultat returneres. "Result1"
If( Slider1.Value>1000, "Result1" ) Betingelsen er falsk, og der er ikke angivet noget DefaultResult. blank
If( Slider1.Value>1000, "Result1", "Result2" ) Betingelsen er falsk, DefaultResult er angivet, og det er returneret. "Result2"
If( Slider1.Value = 25, "Result1", Slider1.Value > 0, "Result2" ) Den første betingelse er sand, og det tilsvarende resultat returneres. Den anden betingelse er også sand, men den evalueres ikke, da den vises senere på argumentlisten end en betingelse, der evalueres som sand. "Result1"
If( IsBlank( Slider1.Value ), "Result1", IsNumeric( Slider1.Value ), "Result2" ) Den første betingelse er falsk, da skyderen ikke er tom. Den anden betingelse er sand, da skyderens værdi er et tal, og det tilsvarende resultat returneres. "Result2"
If( Slider1.Value>1000, "Result1", Slider1.Value>50, "Result2", "Result3") Både den første og anden betingelse er falsk, DefaultResult blev angivet, og det returneres. "Result3"
Switch( Slider1.Value, 25, "Result1" ) Skyderens værdi matcher den første værdi, der skal kontrolleres, og det tilsvarende resultat returneres. "Result1"
Switch( Slider1.Value, 20, "Result1", 25, "Result2", 30, "Result3" ) Skyderens værdi matcher den anden værdi, der skal kontrolleres, og det tilsvarende resultat returneres. "Result2"
Switch( Slider1.Value, 20, "Result1", 10, "Result2", 0, "Result3", "DefaultResult" ) Skyderens værdi matcher ikke en af de værdier, der skal kontrolleres. DefaultResult blev angivet og returneres. "DefaultResult"

Forgrening i formler for funktionsmåde

I disse eksempler indeholder et Text input-kontrolelement med navnet FirstName værdien "John".

Formel Beskrivelse Resultat
If( ! IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ) ) Betingelsen er sand, så funktionen Navigate køres. Du kan bruge funktionen IsBlank til at teste, om et påkrævet formularfelt er udfyldt. Hvis FirstName var blank, har denne formel ingen effekt. true

Visningen er ændret til Screen1.
If( IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ), Back() ) Uden !-operatøren er betingelsen falsk, og dermed køres funktionen Navigate ikke. Funktionen Back blev angivet som DefaultResult og køres derfor. true

Der vendes tilbage til den skærm, der tidligere blev vist.
Switch( FirstName.Text, "Carlos", Navigate( Screen1, ScreenTransition.None ), "Kirstin", Navigate( Screen2, ScreenTransition.None ), "John", Navigate( Screen3, ScreenTransition.None ) ) Værdien for FirstName.Text sammenlignes med "Carlos", "Kirstin" og "John" i nævnte rækkefølge. Der blev fundet et match med "John", og derfor navigerer appen til Screen3. true

Skærmen ændres til Screen3.

Trin for trin

  1. Tilføj et Text input-kontrolelement, og navngiv det Text1, hvis det ikke allerede har dette navn som standard.

  2. Skriv 30 i Text1.

  3. Tilføj et kontrolelement af typen Label, og angiv dets egenskab Tekst til denne formel:
    If( Value(Text1.Text) < 20, "Order MANY more!", Value(Text1.Text) < 40, "Order more!", Text1.Text )

    Kontrolelementet Etiket viser Flere ordrer!, fordi værdien for Text1 er større end 20, men mindre end 40.

  4. Skriv 15 i Text1.

    Kontrolelementet Etiket viser MANGE flere ordrer!, fordi værdien for Text1 er mindre end 20.

  5. Skriv 50 i Text1.

    Kontrolelementet Labelviser den værdi, du har skrevet, da den er større end 40.