Funkcje If i Switch

Dotyczy: Aplikacje oparte na kanwie Kolumny frmuł Dataverse Przepływy pulpitu Aplikacje oparte na modelach Power Platform CLI

Funkcje te umożliwiają określenie, czy dowolny warunek w zestawie jest spełniony (If) lub czy wynik formuły jest zgodny z dowolną wartością w zestawie (Switch), a następnie zwracają wynik lub wykonują akcję.

Opis

Funkcja If sprawdza co najmniej jeden warunek aż do napotkania wyniku true. Jeśli taki wynik zostanie znaleziony, jest zwracana odpowiadająca wartość. Jeśli taki wynik nie zostanie znaleziony, jest zwracana wartość domyślna. W obu przypadkach zwrócona wartość może być ciągiem w postaci do wyświetlenia, formułą do obliczenia lub wynikiem w innej postaci.

Funkcja Switch umożliwia obliczenie formuły i określenie, czy wynik pasuje do dowolnej wartości w podanej sekwencji. Jeśli dopasowanie zostanie znalezione, jest zwracana odpowiadająca wartość. Jeśli dopasowanie nie zostanie znalezione, jest zwracana wartość domyślna. W obu przypadkach zwrócona wartość może być ciągiem w postaci do wyświetlenia, formułą do obliczenia lub wynikiem w innej postaci.

Funkcje If i Switch są bardzo podobne, ale należy użyć najlepszej funkcji w danej sytuacji:

  • Użyj funkcji If do obliczenia pojedynczego warunku. Najczęściej składnia tej funkcji to If( Warunek, WynikBlokuThen, WynikDomyślny ), to znaczy typowy wzorzec „if … then … else…” dostępny w innych narzędziach programistycznych.
  • Użyj funkcji If do obliczenia wielu niepowiązanych warunków. W usłudze Power Apps (w przeciwieństwie do programu Microsoft Excel) można określić wiele warunków bez konieczności zagnieżdżania formuł If.
  • Użyj funkcji Switch do obliczenia pojedynczego warunku względem wielu możliwych dopasowań. W takim przypadku można także użyć funkcji If, lecz wtedy należy powtórzyć formułę dla każdego możliwego dopasowania.

Obu tych funkcji można użyć w formułach zachowania w celu utworzenia gałęzi prowadzących do co najmniej dwóch akcji. Tylko jedna gałąź spowoduje wyzwolenie akcji. Warunki i dopasowania są obliczane po kolei, a przetwarzanie jest zatrzymywane po napotkaniu warunku o wartości true lub znalezieniu dopasowania.

Wartość pusta jest zwracana, jeśli żaden warunek nie ma wartości true, nie znaleziono żadnych dopasowań i nie określono wyniku domyślnego.

Składnia

If( Warunek, Wynik [, WynikDomyślny ] )
If( Condition1, ThenResult1 [, Condition2, ThenResult2, ... [ , DefaultResult ] ] )

  • Condition(s) – wymagane. Co najmniej jedna formuła do testowania pod kątem wartości true. Takie formuły zwykle zawierają operatory porównania (takie jak <, > i =) i funkcje testowe (takie jak IsBlank i IsEmpty).
  • ThenResult(s) – wymagana co najmniej jedna wartość. Odpowiadająca wartość do zwrócenia dla warunku, którego obliczenie daje wartość true.
  • DefaultResult – wartość opcjonalna. Wartość zwracana, gdy obliczenie żadnego warunku nie daje wartości true. Jeśli nie określisz tego argumentu, zostanie zwrócona wartość pusta.

Switch( Formuła, Dopasowanie1, Wynik1 [, Dopasowanie2, Wynik2, ... [, WynikDomyślny ] ] )

  • Formula - wymagane. Formuła obliczana pod kątem dopasowań. Jest ona obliczana tylko raz.
  • Dopasowanie – wymagana co najmniej jedna wartość. Wartości do porównania z wynikiem, który daje Formuła. Jeśli zostanie znalezione dokładne dopasowanie, zostanie zwrócona odpowiadająca wartość Wynik.
  • Result(s) – wymagana co najmniej jedna wartość. Odpowiadająca wartość zwracana, gdy zostanie znalezione dokładne dopasowanie.
  • DefaultResult – wartość opcjonalna. Jeśli dokładne dopasowanie nie zostanie znalezione, zostanie zwrócona ta wartość. Jeśli nie określisz tego argumentu, zostanie zwrócona wartość pusta.

Przykłady

Wartości w formułach

W poniższych przykładach kontrolka Slider (o nazwie Slider1) ma wartość 25.

Formuła opis Result
If( Slider1.Value = 25, "Result1" ) Warunek ma wartość true i zostanie zwrócony odpowiadający wynik. „Result1”
If( Slider1.Value = 25, "Result1", "Result2" ) Warunek ma wartość true i zostanie zwrócony odpowiadający wynik. „Result1”
If( Slider1.Value>1000, "Wynik1" ) Warunek ma wartość false i nie określono wartości WynikDomyślny. puste
If( Slider1.Value>1000, "Result1", "Result2" ) Warunek ma wartość false i podano wartość WynikDomyślny, która zostanie zwrócona. „Result2”
If( Slider1.Value = 25, "Result1", Slider1.Value > 0, "Result2" ) Pierwszy warunek ma wartość true i zostanie zwrócony odpowiedni wynik. Drugi warunek ma także wartość true, ale nie jest obliczany, ponieważ znajduje się dalej na liście argumentów niż warunek, który daje wynik true. „Result1”
If( IsBlank( Slider1.Value ), "Result1", IsNumeric( Slider1.Value ), "Result2" ) Pierwszy warunek ma wartość false, ponieważ suwak nie ma wartości pustej. Drugi warunek ma wartość true, ponieważ wartość suwaka jest liczbą, i zostanie zwrócony odpowiadający wynik. „Result2”
If( Slider1.Value>1000, "Result1", Slider1.Value>50, "Result2", "Result3") Pierwszy i drugi warunek mają wartość false i określono wartość WynikDomyślny, która zostanie zwrócona. „Result3”
Switch( Slider1.Value, 25, "Result1" ) Wartość suwaka pasuje do pierwszej sprawdzanej wartości i zostanie zwrócony odpowiadający wynik. „Result1”
Switch( Slider1.Value, 20, "Result1", 25, "Result2", 30, "Result3" ) Wartość suwaka pasuje do drugiej sprawdzanej wartości i zostanie zwrócony odpowiadający wynik. „Result2”
Switch( Slider1.Value, 20, "Result1", 10, "Result2", 0, "Result3", "DefaultResult" ) Wartość suwaka nie pasuje do żadnej sprawdzanej wartości. Podano wartość DefaultResult, która zostanie zwrócona. „DefaultResult”

Rozgałęzianie w formułach zachowania

W poniższych przykładach w kontrolce Text input o nazwie FirstName jest wpisana wartość „Jan”.

Wzór Opis Wynik
If( ! IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ) ) Warunek ma wartość true, więc zostanie uruchomiona funkcja Navigate. Funkcja IsBlank umożliwia sprawdzenie, czy wymagane pole formularza zostało wypełnione. Jeśli kontrolka FirstName zawierałaby wartość blank, formuła nie miałaby żadnego efektu. true

Wyświetlanie zostanie przełączone na ekran o nazwie Screen1.
If( IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ), Back() ) Bez operatora ! warunek ma wartość false, więc funkcja Navigate nie zostanie uruchomiona. Funkcja Back została podana jako wartość WynikDomyślny, więc zostanie uruchomiona. true

Wyświetlanie zostanie przełączone z powrotem na poprzedni ekran.
Switch( FirstName.Text, "Carlos", Navigate( Screen1, ScreenTransition.None ), "Kirstin", Navigate( Screen2, ScreenTransition.None ), "John", Navigate( Screen3, ScreenTransition.None ) ) Wartość FirstName.Text zostanie porównana z wartościami „Carlos”, „Kirstin” i „John” w tej kolejności. Zostanie znalezione dopasowanie z wartością „John”, więc aplikacja przejdzie do ekranu o nazwie Screen3. true

Wyświetlanie zostanie przełączone na ekran o nazwie Screen3.

Krok po kroku

  1. Dodaj kontrolkę Text input i nadaj jej nazwę Text1, jeśli nazwa domyślna jest inna.

  2. W kontrolce Text1 wpisz wartość 30.

  3. Dodaj kontrolkę Label i ustaw jej właściwość Text na następującą formułę:
    If( Value(Text1.Text) < 20, "Zamów dużo więcej!", Value(Text1.Text) < 40, "Zamów więcej!", Text1.Text )

    Kontrolka Etykieta wyświetla wartość Zamów więcej!, ponieważ wartość kontrolki Text1 jest większa niż 20, lecz mniejsza niż 40.

  4. W kontrolce Text1 wpisz wartość 15.

    Kontrolka Etykieta wyświetla wartość Zamów dużo więcej!, ponieważ wartość kontrolki Text1 jest mniejsza niż 20.

  5. W kontrolce Text1 wpisz wartość 50.

    Kontrolka Label wyświetla wpisaną wartość, ponieważ wartość jest większa od 40.