Функції «Якщо» і «Перемикання»

Застосовується до: стовпців 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.

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

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

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

  3. Додайте елемент керування Label і для його властивості Текст укажіть цю формулу:
    If( Value(Text1.Text) < 20, "Order MANY more!", Value(Text1.Text) < 40, "Order more!", Text1.Text )

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

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

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

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

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