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


Update и UpdateIf функции

Применимо к: Приложения на основе модели на основе холста

Обновление записей в источнике данных.

Description

Update функция

Используйте функцию Update для замены всей записи в источнике данных. В отличие от этого, UpdateIf функции Patch изменяют одно или несколько значений записи, оставляя остальные значения только.

При использовании коллекции вся запись должна совпадать. В коллекциях допускаются повторяющиеся записи, так что возможны совпадения нескольких записей. Для обновления всех экземпляров записи можно использовать аргумент RemoveFlags.All, иначе обновляется только один экземпляр записи.

Если в источнике данных значение столбца создается автоматически, такое значение требует повторного подтверждения.

UpdateIf функция

Используйте функцию UpdateIf для изменения одного или нескольких значений в одной или нескольких записях, которые соответствуют одному или нескольким условиям. Условием может быть любая формула, которая возвращает результат true или false и может содержать ссылки на столбцы в источнике данных (по имени). Функция оценивает условие для каждой записи и изменяет все записи, для которых возвращен результат true.

Чтобы указать изменение, используйте запись изменения, содержащую новые значения свойств. Если указать эту запись изменения в фигурных скобках, формулы свойств смогут ссылаться на свойства изменяемой записи. Такое поведение можно использовать для изменения записей на основе формул.

UpdateIfАналогичным образом можно также использовать функцию Patch для изменения определенных столбцов записи, не затрагивая другие столбцы.

Оба Update и UpdateIf возвращают измененный источник данных в виде таблицы. Необходимо использовать любую из этих функций в формуле поведения.

Делегирование

Эти функции не делегировать источнику данных. UpdateIf Однако и RemoveIf работают локально для имитации делегирования до предела 500/2000 записей. Они постепенно сносят записи за пределы не делегирования 500/2000 записей. Записи, соответствующие условию If , собираются. Как правило, не более 500/2000 записей собираются отдельно, а затем изменяются на выполнение. Однако дополнительные записи могут быть обновлены, если существующий локальный кэш данных имеет большой размер, так как функция может иметь доступ к дополнительным записям для оценки. Будет извлечена только начальная часть источника данных, а затем будет применена функция. Это может не представлять полную картину. Предупреждение может появиться во время разработки, чтобы напомнить об этом ограничении.

Синтаксис

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

  • DataSource — обязательный аргумент. Это источник данных, содержащий записи, которые требуется заменить.
  • OldRecord — обязательный аргумент. Это запись для замены.
  • NewRecord — обязательный аргумент. Запись, которой нужно заменить исходную запись. Она не является записью изменения. Вся запись заменена и отсутствующие свойства содержат пустые.
  • RemoveFlags.All — необязательно. В коллекции может существовать несколько копий одной записи. Укажите аргумент RemoveFlags.All, чтобы обновить все копии записи.

UpdateIf(DataSource_, Условие1, ChangeRecord1 [, Condition2, ChangeRecord2, ... ]

  • DataSource — обязательный аргумент. Это источник данных, содержащий запись или записи, которые требуется изменить.
  • Условия — обязательные. Формула, возвращающая значение true для одной или нескольких записей, которые необходимо изменить. В формуле можно использовать названия столбцов из аргумента DataSource. Если передаются несколько условий , применяется только параметр ChangeRecord , связанный с первым условием , который оценивает значение true .
  • ChangeRecord(s) — обязательный аргумент. Для каждого соответствующего условия запись изменений нового значения свойства должна применяться к записям аргумента DataSource, которые удовлетворяют этому условию. Если запись указывается в фигурных скобках, значения свойств существующей записи можно использовать в формулах свойств.

Примеры

В этих примерах выполняется замена или изменение записей в источнике данных под названием IceCream, в начале которого указаны данные из этой таблицы:

Пример мороженого.

Формула Description Результат
Update( IceCream,
LookUp( IceCream, Flavor="Шоколад"), { ID: 1, Вкус: "Мятный шоколад", Количество:150 } )
Выполняется замена записи из источника данных. Заменить запись.

Источник данных IceCream изменен.
UpdateIf( IceCream, Количество > 175, { Количество: Количество + 10 } ) Выполняется изменение записей, в которых значение Quantity больше 175. Значение в поле Quantity увеличивается на 10, а остальные поля остаются без изменений. Изменение записей.

Источник данных IceCream изменен.
Update( IceCream,
LookUp( IceCream, Flavor="Клубника" ),
{ идентификатор: 3, вкус: "Клубника Виверл"} )
Выполняется замена записи из источника данных. Свойство Quantity не указано в записи замены, так что для него будет возвращено значение blank. Замена записи, когда количество не указано.

Источник данных IceCream изменен.
UpdateIf( IceCream, true, { Количество: 0 } ) Эта формула устанавливает значение 0 для свойства Quantity во всех записях в источнике данных. Задание для всех количества 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, выберите продукт в коллекции, укажите значение с помощью ползунка и затем нажмите кнопку.

    Указанное вами число единиц продукта в наличии уменьшится соответствующим образом.