Функції Update та UpdateIf

Застосовується до: програм Canvas Програм на основі моделі

Оновлює записи у джерелі даних.

Опис

Функція Update

Використовуйте функцію Update, щоб замінити цілий запис у джерелі даних. І навпаки, функції UpdateIf і Patch змінюють одне або кілька значень у записі, а інші значення не чіпають.

Для колекції має збігатися весь запис. Колекції дають змогу дублювати записи, тому можуть збігатися кілька записів. Аргумент RemoveFlags.All можна використовувати для оновлення всіх копій запису; в іншому випадку оновлюється лише одна копія запису.

Якщо джерело даних автоматично генерує значення стовпця, значення цього стовпця має бути повторно підтверджено.

Функція UpdateIf

За допомогою функції UpdateIf можна змінити одне або кілька значень в одному або кількох записах, які відповідають одній або кільком умовам. Умова може бути будь-якою формулою, результатом якої є true або false, і може посилатися на стовпці джерела даних за іменами. Функція оцінює умову для кожного запису та змінює будь-який запис із результатом true.

Щоб указати зміну, використайте змінний запис, який містить нові значення властивостей. Якщо ввести цей змінний запис у тексті у фігурних дужках, формули властивостей зможуть посилатися на властивості запису, який змінюється. За допомогою цієї поведінки можна змінити записи на основі формули.

Ви можете використати функцію Patch, так само як і UpdateIf, щоб змінити певні стовпці запису, не зачіпаючи інших стовпців.

Обидві функції Update і UpdateIf повертають змінене джерело даних як таблицю. Одну з цих функцій потрібно використати у формулі поведінки.

Делегування

При використанні з джерело даних ці функції не можна делегувати. Буде отримано лише першу частину джерела даних, а потім – застосовано функцію. Це може не відображати повну історію. Під час авторства може з’явитися попередження, яке нагадає вам про це обмеження.

Підтримка делегування (експериментальна)

Підтримка делегування функцій UpdateIf і RemoveIf тепер перебуває в експериментальному режимі попереднього перегляду (за замовчуванням OFF) для джерел даних, які її підтримують. Якщо джерело даних не підтримує цю можливість, тепер надішле запит на сервер і отримає всі дані, які відповідають виразу фільтра з максимальним значенням 500, Power Apps 2000 або розміром сторінки даних. Потім він оновить ці записи та надішле кожен із них назад на сервер для оновлення.

Синтаксис

Update( DataSource,OldRecord,NewRecord[, RemoveFlags.All ] )

  • DataSource — обов’язковий аргумент. Джерело даних, що містить запис, який необхідно замінити.
  • OldRecord — обов’язковий аргумент. Запис, який потрібно замінити.
  • NewRecord — обов’язковий аргумент. Запис на заміну. Це не змінний запис. Весь запис буде замінено, і відсутні властивості будуть пустими.
  • RemoveFlags.All – необов’язковий. У колекції один і той же запис може відображатися не раз. Укажіть аргумент RemoveFlags.All , щоб оновити всі копії запису.

UpdateIf( DataSource, Condition1, ChangeRecord1 [, Condition2, ChangeRecord2, ... ] )

  • DataSource — обов’язковий аргумент. Джерело даних, що містить запис або записи, які необхідно змінити.
  • Condition(s) — обов’язковий аргумент. Формула, яка має значення true для запису чи записів, які ви хочете змінити. У формулі можна використовувати імена стовпців DataSource.
  • ChangeRecord(s) — обов’язковий аргумент. Для кожної відповідної умови це змінний запис нових значень властивостей, який буде застосовано до записів DataSource, що задовольняють умову. Якщо надати запис у тексті у фігурних дужках, значення властивостей наявного запису можна використовувати у формулах властивостей.

Приклади

у цих прикладах можна замінити або змінити записи в джерелі даних під назвою IceCream, яке починається з даних у цій таблиці:

Приклад Iceсream.

Формула Опис Результат
Update( IceCream,
First( Filter( IceCream, Flavor="Chocolate" ) ), { ID: 1, Flavor: "Mint Chocolate", Quantity:150 } )
Замінює запис із джерела даних. Замініть запис.

Джерело даних IceCream було змінено.
UpdateIf( IceCream, Quantity > 175, { Quantity: Quantity + 10 } ) Змінює записи, у яких є Quantity, що перевищує 175. Поле Quantity збільшується на 10, а інші поля не змінюються. Змінення записів.

Джерело даних IceCream було змінено.
Update( IceCream,
First( Filter( IceCream, Flavor="Strawberry" ) ),
{ ID: 3, Flavor: "Strawberry Swirl"} )
Замінює запис із джерела даних. Властивість Quantity у записі на заміну не вказано, тому в результаті властивість буде пустою. Замінюйте запис, якщо кількість не надається.

Джерело даних IceCream було змінено.
UpdateIf( IceCream, true, { Quantity: 0 } ) Задає властивості Quantity для всіх записів у джерелі даних значення 0. Встановіть кількість для всіх на 0.

Джерело даних IceCream було змінено.

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

  1. Імпортуйте або створіть колекцію з іменем Inventory, і покажіть її у галереї, як описано в розділі Відображення даних у галереї.

  2. Назвіть галерею ProductGallery.

  3. Додайте повзунок під назвою UnitsSold і задайте для його властивості Max такий вираз:
    ProductGallery.Selected.UnitsInStock

  4. Додайте кнопку та налаштуйте її властивість OnSelect відповідно до нижченаведеної формули.
    UpdateIf(Inventory, ProductName = ProductGallery.Selected.ProductName, {UnitsInStock:UnitsInStock-UnitsSold.Value})

  5. Натисніть клавішу F5, виберіть продукт у галереї, укажіть значення з повзунком, а потім натисніть кнопку.

    Кількість одиниць у наявності для вказаного продукту зменшиться на вказану суму.