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


Функції Update та UpdateIf

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

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

Опис

Функція Update

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

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

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

Функція UpdateIf

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

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

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

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

Делегування

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

Підтримка делегацій

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

Синтаксис

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

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

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

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

Приклади

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

Приклад Iceсream.

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

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

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

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

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

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

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

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

  3. Додайте повзунок під назвою UnitsSold і задайте для його властивості Max такий вираз:
    Галерея товарів.Вибрані.ОдиниціInStock

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

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

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