Поділитися через


Функції 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.

Покрокові інструкції

  1. Додайте елемент керування Ввід тексту та назвіть його Text1 (Текст1), якщо це ім’я не було присвоєно йому за замовчуванням.

  2. В елементі керування з іменем Text1 уведіть 30.

  3. Додайте елемент керування Label і для його властивості Текст укажіть цю формулу:
    if( value(Text1.Text) < 20, "Замовте ЩЕ БАГАТО!", Value(Text1.Text) < 40, "Замовте більше!", Text1.Text )

    Елемент керування Надпис відображає фразу Order more!, оскільки значення Текст становить понад 20, однак менше 40.

  4. В елементі керування з іменем Text1 уведіть 15.

    Елемент керування Надпис відображає фразу Order MANY more!, оскільки значення Текст становить менше 20.

  5. В елементі керування з іменем Text1 уведіть 50.

    Елемент керування Підпис відображає введене значення, бо воно перевищує 40.