Funcțiile If și Switch
Se aplică pentru: planșă de lucru aplicații
Dataverse coloane de formule
Fluxuri desktop
Aplicații bazate pe model
Power Pages
Power Platform 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.
Dacă și Switch sunt foarte asemănătoare, 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 furnizează mesajul comun „dacă... apoi... else..." 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.
Numărul se returnează dacă nu sunt condiții adevărate, nu sunt găsite potriviri și nu specificați un rezultat implicit.
Sintaxă
Dacă( Condiție, ThenResult [, DefaultResult ] )
Dacă( Condiție1, ThenResult1 [, Condiție2 , ThenResult2, ... [, DefaultResult ] ] )
- Condiții - 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.
- ThenResults - 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.
Comutare( Formulă, Match1, Rezultat1 [, Match2, Rezultat2, ... [, DefaultResult ] ] )
- Formula - Obligatoriu. Formulă de evaluat pentru corespondențe. Această formulă este evaluată o singură dată.
- Potriviri - Obligatoriu. Valori de comparat cu rezultatul din Formula. Dacă se găsește o potrivire exactă, este returnat un Rezultat corespunzător.
- Rezultate - 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 |
---|---|---|
Dacă( Slider1.Value = 25, „Result1” ) | Condiția este true, iar rezultatul corespunzător este returnat. | "Result1" |
Dacă( Slider1.Value = 25, „Result1”, „Result2” ) | Condiția este true, iar rezultatul corespunzător este returnat. | "Result1" |
Dacă( Slider1.Value > 1000, „Result1” ) | Condiția este false și nu este furnizat niciun DefaultResult. | necompletat |
Dacă( Slider1.Value > 1000, „Rezultat1”, „Rezultat2” ) | Condiția este false, un DefaultResult este furnizat și este returnat. | "Result2" |
Dacă( 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" |
Dacă( 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" |
Dacă( 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" |
Comutare( Slider1.Value, 25, "Result1") | Valoarea glisorului se potrivește cu prima valoare verificată, iar rezultatul corespunzător este returnat. | "Result1" |
Comutare( 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" |
Comutare( 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. |
adevărat Ecranul este schimbat în Screen1. |
If( IsBlank(Prenume.Text), Navigare( 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ă. |
adevărat Afișajul revine la ecranul care a fost arătat anterior. |
Comutare(Prenume.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. |
adevărat Ecranul este schimbat în Screen3. |
Pas cu pas
Adăugați un control Text input și numiți-l Text1 dacă nu are acest nume în mod implicit.
În Text1, introduceți 30.
Adăugați un control Label și setați proprietatea Text la această formulă:
Dacă( Value(Text1.Text) < 20, „Comanda MULTE mai multe!”, Value(Text1.Text) < 40, „Comanda mai mult!”, Text1.Text )Controlul Etichetă afișează Comandă mai mult! deoarece valoarea Text1 este mai mult de 20, dar mai mic de 40.
În Text1, introduceți 15.
Controlul Etichetă afișează Comandă MAI mult! deoarece valoarea Text1 este mai mic de 20.
În Text1, introduceți 50.
Controlul Label arată valoarea pe care ați tastat-o deoarece este mai mare de 40.