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

Описание

Функция Update

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

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

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

Функция UpdateIf

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

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

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

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

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

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

Синтаксис

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

  • *DataSource* — обязательный аргумент. Это источник данных, содержащий записи, которые требуется заменить.

  • *OldRecord* — обязательный аргумент. Это запись для замены.

  • NewRecord* — обязательный аргумент. Запись, которой нужно заменить исходную запись. Она не является записью изменения. Выполняется замена всей записи, а для отсутствующих свойств будет указано значение *blank.

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

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

  • *DataSource* — обязательный аргумент. Это источник данных, содержащий запись или записи, которые требуется изменить.

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

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

Примеры

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

Формула Описание Возвращаемый результат
Update( IceCream,
First( Filter( IceCream, Flavor="Chocolate" ) ), { ID: 1, Flavor: "Mint Chocolate", Quantity:150 } )
Выполняется замена записи из источника данных.

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

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

Источник данных IceCream изменен.
UpdateIf( IceCream, true, { Quantity: 0 } ) Эта формула устанавливает значение 0 для свойства Quantity во всех записях в источнике данных.

Источник данных 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, выберите продукт в коллекции, укажите значение с помощью ползунка и затем нажмите кнопку.

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