Partajați prin


Funcțiile If și Switch

Se aplică la: Aplicații proiectate pe pânză Coloane Dataverse de formule Fluxuri desktop Aplicații Power Platform proiectate pe bază de model CLI

Determină dacă o condiție dintr-un set este adevărată (If) sau rezultatul unei formule se potrivește cu orice valoare dintr-un set (Switch) și apoi returnează un rezultat sau execută o acțiune.

Descriere

Funcția If funcția testează una sau mai multe condiții până când este găsit un rezultat true. Dacă se găsește un astfel de rezultat, se returnează o valoare corespunzătoare. Dacă nu se găsește un astfel de rezultat, se returnează o valoare implicită. În ambele cazuri, valoarea returnată ar putea fi o șir de afișat, o formulă de evaluat sau un alt formular al rezultatului.

Funcția Switch evaluează o formulă și stabilește dacă rezultatul se potrivește cu orice valoare dintr-o secvență pe care o specificați. Dacă se găsește o corespondență, se returnează o valoare corespunzătoare. Dacă nu se găsește o corespondență, se returnează o valoare implicită. În ambele cazuri, valoarea returnată ar putea fi o șir de afișat, o formulă de evaluat sau un alt formular al rezultatului.

If și Switch sunt foarte similare, dar ar trebui să utilizați cea mai bună funcție pentru situația dvs.:

  • Utilizați If pentru a evalua o singură condiție. Cea mai comună sintaxă pentru această funcție este If(Condition,ThenResult,DefaultResult ), care oferă "dacă ... apoi... Altfel ..." model văzut în alte instrumente de programare.
  • Utilizați If pentru a evalua mai multe condiții neasociate. În Power Apps (spre deosebire de Microsoft Excel), puteți specifica mai multe condiții fără a fi necesar să imbricați formule If.
  • Utilizați Switch pentru a evalua o singură condiție împotriva mai multor potriviri posibile. Puteți utiliza, de asemenea If în acest caz, dar va trebui să repetați formula pentru fiecare potrivire posibilă.

Puteți utiliza ambele funcții în formule comportamentale pentru a se ramifica între două sau mai multe acțiuni. O singură ramură va declanșa o acțiune. Condițiile și corespondențele sunt evaluate în ordine și se opresc dacă o condiție este if sau este găsită o potrivire.

Necompletat este returnat dacă nu există condiții true, nu se găsește nicio potrivire și nu specificați un rezultat implicit.

Sintaxă

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

  • Condition(s) – Obligatoriu. Formule pentru a testa true. Aceste formule conțin în mod obișnuit operatori de comparație (precum <, > și =) și funcții de testare, cum ar fi IsBlank și IsEmpty.
  • ThenResult(s) - Obligatoriu. Valoarea corespunzătoare returnată pentru o condiție care se evaluează la true.
  • DefaultResult – Opțional. Valoarea de returnat dacă nu se evaluează nicio condiție true. Dacă nu specificați acest argument, necompletat este returnat.

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

  • Formula – Obligatoriu. Formulă de evaluat pentru corespondențe. Această formulă este evaluată o singură dată.
  • Match(s) - Obligatoriu. Valori de comparat cu rezultatul din Formula. Dacă se găsește o potrivire exactă, este returnat un Rezultat corespunzător.
  • Result(s) - Obligatoriu. Valoarea corespunzătoare de returnat când se găsește o potrivire exactă.
  • DefaultResult – Opțional. Dacă nu se găsește o potrivire exactă, această valoare este returnată. Dacă nu specificați acest argument, necompletat este returnat.

Exemple

Valori în formule

În următoarele exemple, un control Slider (numit Glisor1) are o valoare de 25.

Formula Descriere Rezultat
If( Slider1.Value = 25, "Result1" ) Condiția este true, iar rezultatul corespunzător este returnat. "Result1"
If( Slider1.Value = 25, "Result1", "Result2" ) Condiția este true, iar rezultatul corespunzător este returnat. "Result1"
If( Slider1.Value>1000, "Result1" ) Condiția este false și nu este furnizat niciun DefaultResult. blank
If( Slider1.Value>1000, "Result1", "Result2" ) Condiția este false, un DefaultResult este furnizat și este returnat. "Result2"
If( Slider1.Value = 25, "Result1", Slider1.Value > 0, "Result2" ) Prima condiție este true, iar rezultatul corespunzător este returnat. A doua condiție este și ea true, dar nu este evaluată deoarece apare în lista de argumente mai târziu decât o condiție care se evaluează la true. "Result1"
If( IsBlank( Slider1.Value ), "Result1", IsNumeric( Slider1.Value ), "Result2" ) Prima condiție este false deoarece glisorul nu este necompletat. A doua condiție este true deoarece valoarea glisorului este un număr, iar rezultatul corespunzător este returnat. "Result2"
If( Slider1.Value>1000, "Result1", Slider1.Value>50, "Result2", "Result3") Și prima și a doua condiție sunt false, un DefaultResult este furnizat și este returnat. "Result3"
Switch( Slider1.Value, 25, "Result1" ) Valoarea glisorului se potrivește cu prima valoare verificată, iar rezultatul corespunzător este returnat. "Result1"
Switch( Slider1.Value, 20, "Result1", 25, "Result2", 30, "Result3" ) Valoarea glisorului se potrivește cu a doua valoare verificată, iar rezultatul corespunzător este returnat. "Result2"
Switch( Slider1.Value, 20, "Result1", 10, "Result2", 0, "Result3", "DefaultResult" ) Valoarea glisorului nu se potrivește cu nicio valoare care trebuie verificată. A fost furnizat DefaultResult, deci este returnat. "DefaultResult"

Ramificarea în formule comportamentale

În aceste exemple, un control Intrare text numit FirstName are valoarea "Ioan" introdusă.

Formulă Descriere Rezultat
If( ! IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ) ) Condiția este true, prin urmare funcția Navigate rulează. Puteți utiliza funcția IsBlank pentru a testa dacă un câmp de formular obligatoriu a fost completat. Dacă FirstName ar fi blank, această formulă nu ar avea niciun efect. true

Ecranul este schimbat în Screen1.
If( IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ), Back() ) Fără operatorul !, condiția este false, prin urmare funcția Navigare nu rulează. Funcția Back a fost furnizată ca DefaultResult, deci rulează. true

Afișajul revine la ecranul care a fost arătat anterior.
Switch( FirstName.Text, "Carlos", Navigate( Screen1, ScreenTransition.None ), "Kirstin", Navigate( Screen2, ScreenTransition.None ), "John", Navigate( Screen3, ScreenTransition.None ) ) Valoarea FirstName.Text este comparată cu "Călin", "Cristina" și "Ioan" în această ordine. Se găsește o potrivire cu "Ioan", astfel încât aplicația navighează la Screen3. true

Ecranul este schimbat în Screen3.

Pas cu pas

  1. Adăugați un control Text input și numiți-l Text1 dacă nu are acest nume în mod implicit.

  2. În Text1, introduceți 30.

  3. Adăugați un control Label și setați proprietatea Text la această formulă:
    If( Value(Text1.Text) < 20, "Comandați MULT mai mult!", Value(Text1.Text) < 40, "Comandați mai mult!", Text1.Text )

    Controlul Etichetă afișează Comandă mai mult! deoarece valoarea Text1 este mai mult de 20, dar mai mic de 40.

  4. În Text1, introduceți 15.

    Controlul Etichetă afișează Comandă MAI mult! deoarece valoarea Text1 este mai mic de 20.

  5. În Text1, introduceți 50.

    Controlul Label arată valoarea pe care ați tastat-o deoarece este mai mare de 40.