Функції «Якщо» і «Перемикання»
Застосовується до: стовпців Dataverse формул програм Canvas Потоків робочого столу Програм, Power Platform керованих моделлю, CLI
Визначення того, чи має будь-яка умова в наборі значення true (If), або чи відповідає результат формули будь-якому значенню в наборі (Switch), а потім – повернення результату або виконання дії.
Опис
Функція If перевіряє одну або кілька умов, доки не буде знайдено результат true. Якщо такий результат знайдено, повертається відповідне значення. В іншому разі повертається значення за замовчуванням. В обох випадках повернуте значення може бути рядком для відображення, формулою для обчислення або результатом в іншій формі.
Функція Switch обчислює формулу та визначає, чи відповідає результат будь-якому значенню у вказаній послідовності. Якщо знайдено збіг, повертається відповідне значення. В іншому разі повертається значення за замовчуванням. В обох випадках повернуте значення може бути рядком для відображення, формулою для обчислення або результатом в іншій формі.
Функції If та Switch дуже схожі, проте слід використовувати ту функцію, яка найкраще відповідає конкретній ситуації.
- Використовуйте функцію If для оцінки однієї умови. Найпоширенішим синтаксисом для цієї функції є If(Condition,ThenResult,DefaultResult ), який забезпечує загальне «if ... then … інакше..." патерн, який можна побачити в інших інструментах програмування.
- Використовуйте функцію If для оцінки декількох непов’язаних умов. У Power Apps (на відміну від Microsoft Excel) можна вказати кілька умов без необхідності вкладання формул If.
- Використовуйте функцію Switch для оцінки однієї умови щодо декількох можливих збігів. У цій ситуації також можливе використання функції If, однак це вимагало б повторення формули для кожного можливого збігу.
Обидві ці функції можна використовувати у формулах поведінки для відгалуження двох або більшої кількості дій. Лише одне відгалуження ініціюватиме дію. Оцінка умов і збігів виконується за порядком і припиняється, якщо буде знайдено умову зі значенням true або збіг.
Пусте значення повертається, якщо жодна з умов не має значення true, не знайдено жодного збігу та не вказано результату за замовчуванням.
Синтаксис
If( Condition, ThenResult [, DefaultResult ] )
If( Condition1, ThenResult1 [, Condition2, ThenResult2, ... [ , DefaultResult ] ] )
- Condition(s) – обов’язковий аргумент. Формула або формули для перевірки на значення true. Такі формули зазвичай містять оператори порівняння (наприклад, <, > та =) і тестові функції, як-от IsBlank та IsEmpty.
- ThenResult(s) – обов’язковий аргумент. Відповідне значення, що повертається для умови з оціненим значенням true.
- DefaultResult – необов’язковий аргумент. Значення, що повертається, якщо немає жодної умови з оціненим значенням true. Якщо не вказати цей аргумент, повертається пусте значення.
Switch( Formula, Match1, Result1 [, Match2, Result2, ... [, DefaultResult ] ] )
- Formula – обов’язковий аргумент. Формула для оцінки на збіги. Ця формула оцінюється тільки один раз.
- Match(s) – обов’язковий аргумент. Значення для порівняння з результатом формули. Якщо знайдено точний збіг, повертається відповідний результат.
- Result(s) – обов’язковий аргумент. Відповідне значення для повернення в разі виявлення точного збігу.
- DefaultResult – необов’язковий аргумент. Це значення повернеться, якщо не буде знайдено точного збігу. Якщо не вказати цей аргумент, повертається пусте значення.
Приклади
Значення у формулах
У зазначених нижче прикладах елемент керування Повзунок (з ім’ям Slider1 (Повзунок1)) має значення 25.
Формула | Опис | Результат |
---|---|---|
If( Slider1.Value = 25, "Result1" ) | Умова має значення true та повертається відповідний результат. | "Result1" |
If( Slider1.Value = 25, "Result1", "Result2" ) | Умова має значення true та повертається відповідний результат. | "Result1" |
If( Slider1.Value>1000, "Result1" ) | Умова має значення false та не вказано аргументу DefaultResult. | пусто |
If( Slider1.Value>1000, "Result1", "Result2" ) | Умова має значення false, було вказано аргумент DefaultResult і він повертається. | "Result2" |
If( Slider1.Value = 25, "Result1", Slider1.Value > 0, "Result2" ) | Перша умова має значення true та повертається відповідний результат. Друга умова також має значення true, проте вона не оцінюється, оскільки в списку аргументів вона стоїть після умови, що повертає значення true. | "Result1" |
If( IsBlank( Slider1.Value ), "Result1", IsNumeric( Slider1.Value ), "Result2" ) | Перша умова має значення false, оскільки повзунок не є пустим. Друга умова має значення true, тому що значенням повзунка є число; повертається відповідний результат. | "Result2" |
If( Slider1.Value>1000, "Result1", Slider1.Value>50, "Result2", "Result3") | Перша та друга умови мають значення false, було вказано аргумент DefaultResult і він повертається. | "Result3" |
Switch( Slider1.Value, 25, "Result1" ) | Значення повзунка відповідає першому значенню, яке має бути перевірено; повертається відповідний результат. | "Result1" |
Switch( Slider1.Value, 20, "Result1", 25, "Result2", 30, "Result3" ) | Значення повзунка відповідає другому значенню, яке має бути перевірено; повертається відповідний результат. | "Result2" |
Switch( Slider1.Value, 20, "Result1", 10, "Result2", 0, "Result3", "DefaultResult" ) | Значення повзунка не відповідає жодному значенню, яке має бути перевірено. Було вказано аргумент DefaultResult і він повертається. | "DefaultResult" |
Відгалуження у формулах поведінки
У цих прикладах в елемент керування Ввід тексту з іменем FirstName (Ім’я) було введено значення «John» (Джон).
Формула | Опис | Результат |
---|---|---|
If( ! IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ) ) | Умова має значення true, тому виконується функція Navigate. За допомогою функції IsBlank можна перевірити, чи було заповнено обов’язкове поле форми. Якби елемент керування з іменем FirstName був blank, ця формула не мала б жодного впливу. | true Екран змінюється на Screen1. |
If( IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ), Back() ) | Без оператора ! умова має значення false, тому функція Navigate не виконується. Функцію Back було вказано як аргумент DefaultResult, тому вона виконується. | true Відбувається повернення до екрана, що відображався раніше. |
Switch( FirstName.Text, "Carlos", Navigate( Screen1, ScreenTransition.None ), "Kirstin", Navigate( Screen2, ScreenTransition.None ), "John", Navigate( Screen3, ScreenTransition.None ) ) | Значення FirstName.Text порівнюється зі значеннями «Carlos» (Карлос), «Kirstin» (Кірстін) та «John» у цьому порядку. Знайдено збіг зі значенням «John», тому програма переходить до екрана Screen3. | true Екран змінюється на Screen3. |
Покрокові інструкції
Додайте елемент керування Ввід тексту та назвіть його Text1 (Текст1), якщо це ім’я не було присвоєно йому за замовчуванням.
В елементі керування з іменем Text1 уведіть 30.
Додайте елемент керування Label і для його властивості Текст укажіть цю формулу:
If( Value(Text1.Text) < 20, "Order MANY more!", Value(Text1.Text) < 40, "Order more!", Text1.Text )Елемент керування Надпис відображає фразу Order more!, оскільки значення Текст становить понад 20, однак менше 40.
В елементі керування з іменем Text1 уведіть 15.
Елемент керування Надпис відображає фразу Order MANY more!, оскільки значення Текст становить менше 20.
В елементі керування з іменем Text1 уведіть 50.
Елемент керування Підпис відображає введене значення, бо воно перевищує 40.