Avgör om något villkor i en mängd är sant (If) eller om resultatet av en formel matchar något värde i en mängd (Switch) och returnerar sedan ett resultat eller utför en åtgärd.

Beskrivning

Funktionen If testar ett eller flera villkor tills ett true-resultat hittas. Om ett sådant resultat hittas returneras ett motsvarande värde. Om inget sådant resultat hittas returneras ett standardvärde. I båda fallen kan det returnerade värdet vara en sträng att visa, en formel att utvärdera eller någon annan typ av resultat.

Funktionen Switch utvärderar en formel och avgör om resultatet matchar något värde i en sekvens som du anger. Om en matchning hittas returneras ett motsvarande värde. Om ingen matchning hittas returneras ett standardvärde. I båda fallen kan det returnerade värdet vara en sträng att visa, en formel att utvärdera eller någon annan typ av resultat.

If och Switch är mycket lika, men du ska använda den funktion som är bäst för den aktuella situationen:

  • Använd If för att utvärdera ett enda villkor. Den vanligaste syntaxen för den här funktionen är If( Condition, ThenResult, DefaultResult ), som ger det vanliga mönstret ”if … then … else …” som syns i andra programmeringsverktyg.
  • Använd If för att utvärdera flera ej relaterade villkor. I PowerApps (till skillnad från Microsoft Excel) kan du ange flera villkor utan att behöva kapsla If-formler.
  • Använd Switch för att utvärdera ett enda villkor mot flera möjliga matchningar. Du kan även använda If i detta fall, men då måste du upprepa formeln för varje tänkbar matchning.

Du kan använda båda dessa funktioner i beteendeformler för att växla mellan två eller flera åtgärder. Endast en gren utlöser en åtgärd. Villkor och matchningar utvärderas i ordning och de stoppas om ett villkor är true eller en matchning hittas.

Blank returneras om inga villkor är true, inga matchningar hittas och du inte anger ett standardresultat.

Syntax

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

  • Condition(s) – Krävs. Formler för att testa true. Sådana formler innehåller vanligtvis operatorer för jämförelse (t.ex. <, > och =) och testfunktioner som IsBlank och IsEmpty.
  • ThenResult(s) – Krävs. Motsvarande värde som ska returneras för ett villkor som utvärderas till true.
  • DefaultResult – Valfritt. Värdet som returneras om inget villkor är lika med true. Om du inte anger det här argumentet returneras ett tomt värde.

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

  • Formula – obligatoriskt. Formel som ska utvärderas för matchningar. Den här formeln utvärderas bara en gång.
  • Match(s) – Krävs. Värden som ska jämföras med resultatet från Formula. Om en exakt matchning hittas returneras motsvarande Result.
  • Result(s) – Krävs. Motsvarande värde som returneras när en exakt matchning hittas.
  • DefaultResult – Valfritt. Det här värdet returneras om en exakt matchning inte hittas. Om du inte anger det här argumentet returneras ett tomt värde.

Exempel

Värden i formler

I följande exempel har en Skjutreglage-kontroll (med namnet Slider1) värdet 25.

Formel Beskrivning Resultat
If( Slider1.Value = 25, "Result1" ) Villkoret är true och motsvarande resultat returneras. "Result1"
If( Slider1.Value = 25, "Result1", "Result2" ) Villkoret är true och motsvarande resultat returneras. "Result1"
If( Slider1.Value > 1000, "Result1" ) Villkoret är false och inget DefaultResult har angetts. blank
If( Slider1.Value > 1000, "Result1", "Result2" ) Villkoret är false, ett DefaultResult har angetts och det returneras. "Result2"
If( Slider1.Value = 25, "Result1", Slider1.Value > 0, "Result2" ) Det första villkoret är true och motsvarande resultat returneras. Det andra villkoret är också true, men det utvärderas inte eftersom det förekommer senare i argumentlistan än ett villkor som utvärderas till true. "Result1"
If( IsBlank( Slider1.Value ), "Result1", IsNumeric( Slider1.Value ), "Result2" ) Det första villkoret är false eftersom skjutreglaget inte är blank. Det andra villkoret är true eftersom skjutreglagets värde är ett tal och motsvarande resultat returneras. "Result2"
If( Slider1.Value > 1000, "Result1", Slider1.Value > 50, "Result2", "Result3") Både det första och det andra villkoret är false, DefaultResult har angetts och returneras. "Result3"
Switch( Slider1.Value, 25, "Result1" ) Skjutreglagets värde matchar det första värdet som ska kontrolleras och motsvarande resultat returneras. "Result1"
Switch( Slider1.Value, 20, "Result1", 25, "Result2", 30, "Result3" ) Skjutreglagets värde matchar det andra värdet som ska kontrolleras och motsvarande resultat returneras. "Result2"
Switch( Slider1.Value, 20, "Result1", 10, "Result2", 0, "Result3", "DefaultResult" ) Skjutreglagets värde matchar inte något värde som ska kontrolleras. Ett DefaultResult har angetts och returneras. "DefaultResult"

Förgrening i beteendeformler

I följande exempel har en Textinmatning-kontroll med namnet FirstName värdet "John".

Formel Beskrivning Resultat
If( ! IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ) ) Villkoret är true och funktionen Navigate körs. Du kan använda funktionen IsBlank för att testa om ett obligatoriskt formulärfält har fyllts i. Om FirstName var blank skulle den här formeln inte ge något resultat. true

Visningen ändras till Screen1.
If( IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ), Back() ) Utan operatorn ! är villkoret false och funktionen Navigate körs inte. Funktionen Back har angetts som DefaultResult och körs. true

Visningen går tillbaka till skärmen som visades tidigare.
Switch( FirstName.Text, "Carlos", Navigate( Screen1, ScreenTransition.None ), "Kirstin", Navigate( Screen2, ScreenTransition.None ), "John", Navigate( Screen3, ScreenTransition.None ) ) Värdet för FirstName.Text jämförs med "Carlos", "Kirstin" och "John" i den ordningen. En matchning hittas med "John", så appen navigerar till Screen3. true

Visningen ändras till Screen3.

Steg för steg

  1. Lägg till en Textinmatning-kontroll och ge den namnet Text1, om den inte redan har det namnet som standard.

  2. I Text1 skriver du 30.

  3. Lägg till kontrollen Etikett och ange egenskapen Text till följande formel:
    If( Value(Text1.Text) < 20, "Order MANY more!", Value(Text1.Text) < 40, "Order more!", Text1.Text )

    Kontrollen Etikett visar Order more! eftersom värdet för Text1 är mer än 20 men mindre än 40.

  4. I Text1 skriver du 15.

    Kontrollen Etikett visar Order MANY more! eftersom värdet för Text1 är mindre än 20.

  5. I Text1 skriver du 50.

    Kontrollen Etikett visar det värde du skrev in eftersom det är mer än 40.