Функції if і Switch
Застосовується до: стовпців Dataverse формул програм Canvas Потоків робочого столу Командного Power Pages Power Platform рядка на основі моделі
Визначення того, чи має будь-яка умова в наборі значення true (If), або чи відповідає результат формули будь-якому значенню в наборі (Switch), а потім – повернення результату або виконання дії.
Опис
Функція If перевіряє одну або кілька умов, доки не буде знайдено результат true. Якщо такий результат знайдено, повертається відповідне значення. В іншому разі повертається значення за замовчуванням. В обох випадках повернуте значення може бути рядком для відображення, формулою для обчислення або результатом в іншій формі.
Функція Switch обчислює формулу та визначає, чи відповідає результат будь-якому значенню у вказаній послідовності. Якщо знайдено збіг, повертається відповідне значення. В іншому разі повертається значення за замовчуванням. В обох випадках повернуте значення може бути рядком для відображення, формулою для обчислення або результатом в іншій формі.
If і Switch дуже схожі, але ви повинні використовувати найкращу функцію для вашої ситуації:
- Використовуйте функцію If для оцінки однієї умови. Найпоширенішим синтаксисом для цієї функції є If(Condition,ThenResult,DefaultResult ), який забезпечує спільне "якщо ... then … інакше..." патерн, який можна побачити в інших інструментах програмування.
- Використовуйте функцію If для оцінки декількох непов’язаних умов. У Power Apps (на відміну від Microsoft Excel) можна вказати кілька умов без необхідності вкладання формул If.
- Використовуйте функцію Switch для оцінки однієї умови щодо декількох можливих збігів. У цій ситуації також можливе використання функції If, однак це вимагало б повторення формули для кожного можливого збігу.
Обидві ці функції можна використовувати у формулах поведінки для відгалуження двох або більшої кількості дій. Лише одне відгалуження ініціюватиме дію. Оцінка умов і збігів виконується за порядком і припиняється, якщо буде знайдено умову зі значенням true або збіг.
Порожнє повертається, якщо жодні умови не виконуються , не знайдено збігів, і ви не вказуєте результат за замовчуванням.
Синтаксис
If(Умова,ТодіРезультат [, РезультатЗа замовчуванням] )
Якщо(Умова1,ТоРезультат1 [, Умова2,ТодіРезультат2 , ... [, РезультатЗа замовчуванням] ] )
- Умови - обов’язкові. Формула або формули для перевірки на значення true. Такі формули зазвичай містять оператори порівняння (наприклад, <, > та =) і тестові функції, як-от IsBlank та IsEmpty.
- ПотімРезультати - Обов’язкові. Відповідне значення, що повертається для умови з оціненим значенням true.
- DefaultResult - Необов’язковий. Значення, що повертається, якщо немає жодної умови з оціненим значенням true. Якщо не вказати цей аргумент, повертається пусте значення.
Switch(Формула,Матч1,Результат1 [, Матч2,Результат2 , ... [, РезультатЗа замовчуванням] ] )
- Формула - Обов’язкова. Формула для оцінки на збіги. Ця формула оцінюється тільки один раз.
- Сірники - обов’язкові . Значення для порівняння з результатом формули. Якщо знайдено точний збіг, повертається відповідний результат.
- Результати- Обов’язкові. Відповідне значення для повернення в разі виявлення точного збігу.
- DefaultResult - Необов’язковий. Це значення повернеться, якщо не буде знайдено точного збігу. Якщо не вказати цей аргумент, повертається пусте значення.
Приклади
Значення у формулах
У зазначених нижче прикладах елемент керування Повзунок (з ім’ям Slider1 (Повзунок1)) має значення 25.
Формула | Опис | Результат |
---|---|---|
if( Повзунок1.Значення = 25, "Результат1" ) | Умова має значення true та повертається відповідний результат. | "Result1" |
if( Slider1.Value = 25, "Результат1", "Результат2" ) | Умова має значення true та повертається відповідний результат. | "Result1" |
if( Повзунок1.Значення > 1000, "Результат1" ) | Умова має значення false та не вказано аргументу DefaultResult. | Порожній |
if( Повзунок1.Значення > 1000, "Результат1", "Результат2" ) | Умова має значення false, було вказано аргумент DefaultResult і він повертається. | "Result2" |
if( Slider1.Value = 25, "Результат1", Slider1.Value > 0, "Result2" ) | Перша умова має значення true та повертається відповідний результат. Друга умова також має значення true, проте вона не оцінюється, оскільки в списку аргументів вона стоїть після умови, що повертає значення true. | "Result1" |
if( isBlank( Slider1.Value ), "Результат1", IsNumeric( Slider1.Value ), "Результат2" ) | Перша умова має значення false, оскільки повзунок не є пустим. Друга умова має значення true, тому що значенням повзунка є число; повертається відповідний результат. | "Result2" |
if( Повзунок1.Значення > 1000, "Результат1", Повзунок1.Значення > 50, "Результат2", "Результат3") | Перша та друга умови мають значення false, було вказано аргумент DefaultResult і він повертається. | "Result3" |
Перемикач( Повзунок1.Значення, 25, "Результат1" ) | Значення повзунка відповідає першому значенню, яке має бути перевірено; повертається відповідний результат. | "Result1" |
Switch( Повзунок1.Значення, 20, "Результат1", 25, "Результат2", 30, "Результат3" ) | Значення повзунка відповідає другому значенню, яке має бути перевірено; повертається відповідний результат. | "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, ця формула не мала б жодного впливу. | Справжній Екран змінюється на Screen1. |
if( isBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ), Back() ) | Без оператора ! умова має значення false, тому функція Navigate не виконується. Функцію Back було вказано як аргумент DefaultResult, тому вона виконується. | Справжній Відбувається повернення до екрана, що відображався раніше. |
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. | Справжній Екран змінюється на Screen3. |
Покрокові інструкції
Додайте елемент керування Ввід тексту та назвіть його Text1 (Текст1), якщо це ім’я не було присвоєно йому за замовчуванням.
В елементі керування з іменем Text1 уведіть 30.
Додайте елемент керування Label і для його властивості Текст укажіть цю формулу:
if( value(Text1.Text) < 20, "Замовте ЩЕ БАГАТО!", Value(Text1.Text) < 40, "Замовте більше!", Text1.Text )Елемент керування Надпис відображає фразу Order more!, оскільки значення Текст становить понад 20, однак менше 40.
В елементі керування з іменем Text1 уведіть 15.
Елемент керування Надпис відображає фразу Order MANY more!, оскільки значення Текст становить менше 20.
В елементі керування з іменем Text1 уведіть 50.
Елемент керування Підпис відображає введене значення, бо воно перевищує 40.