Функции за актуализиране и актуализиранеIf

Отнася се за: Приложения за платно Приложения , задвижвани от модели

Актуализира записи в източник на данни.

Описание

Функция за актуализиране

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

За колекция, целият запис трябва да съвпада. Колекциите позволяват дублиращи се записи, така че може да съвпадат множество записи. Можете да използвате аргумента RemoveFlags.All , за да актуализирате всички копия на запис; в противен случай се актуализира само едно копие на записа.

Ако източник на данни генерира автоматично стойността на колоната, стойността на тази колона трябва да се потвърди отново.

Функция UpdateIf

Използвайте UpdateIf функция за промяна на една или повече стойности в един или повече записи, които съответстват на едно или повече условия. Условието може да бъде всяка формула, която води до вярно или невярно и може да се позовава колони от източник на данни по име. Функцията оценява състоянието на всеки запис и променя всеки запис, за който е резултатът вярно.

За да зададете модификация, използвайте запис за промяна, който съдържа нови стойности на свойствата. Ако предоставите този запис за промяна в линия с къдрави скоби, формулите на свойствата могат да реферират свойствата на записа, който се променя. Можете да използвате това поведение, за да променяте записи въз основа на формула.

Подобен на UpdateIf, можете също да използвате Patch функция за промяна на конкретни колони на запис, без да засяга други колони.

И Update, и UpdateIf връщат модифицирания източник на данни като таблица. Трябва да използвате всяка от двете функции във формула за поведение.

Делегиране

Когато се използват с източник на данни, тези функции не могат да бъдат делегирани. Ще се извлече само първата част на източника на данни, след което ще се приложи функцията. Това може да не представлява цялата история. По време на авторството може да се появи предупреждение, което да ви напомни за това ограничение.

Подкрепа за делегиране (експериментална)

Поддръжката на делегиране за UpdateIf и RemoveIf сега е в експериментална визуализация (OFF по подразбиране) за източници на данни, които го поддържат. Ако даден източник на данни не поддържа тази функция, сега ще изпрати заявка до сървъра и ще извлече всички данни, които съответстват на израза на филтъра до максимума от 500, Power Apps 2000 или размера на страницата с данни. След това ще актуализира тези записи и ще изпрати всеки обратно на сървъра, за да бъде актуализиран.

Синтаксис

Актуализация( DataSource,OldRecord,NewRecord[, RemoveFlags.All ] )

  • DataSource – Задължително. Източникът на данни, който съдържа записа, който искате да замените.
  • OldRecord – Задължително. Записът за замяна.
  • NewRecord – Задължително. Записът за замяна. Това не е запис на промяна. Целият запис е заменен и липсващи свойства ще съдържат празно.
  • RemoveFlags.All – По избор. В колекция един и същ запис може да се появи повече от веднъж. Задайте аргумента RemoveFlags.All , за да актуализирате всички копия на записа.

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

  • DataSource – Задължително. Източникът на данни, който съдържа записа или записите, които искате да промените.
  • Condition(s) – Задължително. Формула, която оценява до вярно за запис или записи, които искате да промените. Можете да използвате имена на DataSource във формулата.
  • ChangeRecord(s) - Задължително. За всяко съответно условие, запис на промяна на нови стойности на свойствата, които да се прилагат към записи на Източник на данни, които отговарят на условието. Ако предоставите записа вграден с помощта на къдрави скоби, стойностите на свойствата на съществуващия запис могат да бъдат използвани във формулите на свойствата.

Примери

В тези примери ще замените или промените записи в име с име източник на данни Сладолед и това започва с данните в тази таблица:

Пример за сладолед.

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

Източникът на данни Сладолед също е модифицирана.
UpdateIf( IceCream, Quantity > 175, { Quantity: Quantity + 10 } ) Променя записи, които имат количество по-голямо от 175. Полето количество се увеличава с 10, а други полета не се променят. Промяна на записи.

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

Източникът на данни Сладолед също е модифицирана.
UpdateIf( IceCream, true, { Quantity: 0 } ) Задава стойността на свойството Quantity за всички записи в източник на данни до 0. Задайте количество за всички на 0.

Източникът на данни Сладолед също е модифицирана.

Стъпка по стъпка

  1. Импортирайте или създайте колекция с име Инвентар, и го покажете в галерия, както Показвайте данни в галерия описва.

  2. Назовете галерията ProductGallery.

  3. Добавете плъзгач с име UnitsSold, и задайте своето Max свойство на този израз:
    ProductGallery.Selected.UnitsInStock

  4. Добавете бутон и задайте свойството OnSelect на тази формула:
    UpdateIf(Inventory, ProductName = ProductGallery.Selected.ProductName, {UnitsInStock:UnitsInStock-UnitsSold.Value})

  5. Натиснете F5, изберете продукт в галерията, посочете стойност с плъзгача и след това изберете бутона.

    Броят единици в наличност за посочения от вас продукт намалява с посочената от вас сума.