Funkce Update a UpdateIf

Platí pro: aplikace plátna modelem řízené aplikace

Aktualizují záznamy ve zdroji dat.

Description

Funkce Update

Pomocí funkce Update můžete nahradit celý záznam ve zdroji dat. Naproti tomu funkce UpdateIf a Patch mění jednu nebo více hodnot v záznamu a ostatní hodnoty nechávají být.

U kolekce se musí být shodovat celý záznam. Kolekce umožňují duplicitní záznamy, shodovat se proto může více záznamů. Pomocí argumentu RemoveFlags.All můžete aktualizovat všechny kopie záznamu; v opačném případě se aktualizuje jenom jedna kopie záznamu.

Pokud zdroj dat generuje hodnotu sloupce automaticky, musí být hodnota tohoto sloupce znovu potvrzena.

Funkce UpdateIf

Pomocí funkce UpdateIf můžete změnit jednu nebo více hodnot v jednom nebo více záznamech, které splňují jednu nebo více podmínek. Podmínka může být libovolný vzorec, jehož výsledkem je true nebo false, a může pomocí názvu odkazovat na sloupce zdroje dat. Funkce vyhodnocuje podmínku pro každý záznam a změní každý záznam, pro který má výsledek hodnotu true.

Ke specifikaci změny použijte záznam změny, který obsahuje novou hodnotu vlastnosti. Pokud tento záznam změny zadáte jako vložený se složenými závorkami, můžou na vlastnosti záznamu, který se má změnit, odkazovat vzorce s vlastnostmi. Toto chování se dá využít ke změně záznamů na základě vzorce.

Ke změně konkrétních sloupců záznamu bez vlivu na ostatní sloupce můžete kromě funkce UpdateIf použít také funkci Patch.

Funkce Update i UpdateIf vracejí změněný zdroj dat jako tabulku. Tyto funkce se musí použít ve vzorci chování.

Delegování

Tyto funkce nelze delegovat, pokud se používají se zdrojem dat. Bude načtena pouze první část zdroje dat a pak se tato funkce použije. Výsledek nemusí být zcela reprezentativní. V době vytváření se může objevit varování, které vám toto omezení připomene.

Podpora delegování (experimentální)

Podpora delegování pro UpdateIf a RemoveIf je nyní v experimentální fázi Preview (ve výchozím nastavení VYPNUTO) pro zdroje dat, které jej podporují. Pokud zdroj dat tuto funkci nepodporuje, Power Apps nyní odešle dotaz na server a načte všechna data, která odpovídají výrazu filtru až do maxima 500, 2000 nebo velikosti datové stránky. Poté tyto záznamy aktualizuje a každý odešle zpět na server k aktualizaci.

Syntaxe

Update( ZdrojDat; StarýZáznam; NovýZáznam [; RemoveFlags.All ] )

  • ZdrojDat – povinné. Zdroj dat obsahující záznam, který chcete nahradit.
  • StarýZáznam – povinné. Záznam, který se má nahradit.
  • NovýZáznam – povinné. Náhradní záznam. Není to záznam změny. Nahradí se celý záznam, chybějící vlastnosti budou obsahovat prázdnou hodnotu.
  • RemoveFlags.All – volitelné. V kolekci se stejný záznam může vyskytovat vícekrát. Uvedením argumentu RemoveFlags.All aktualizujete všechny kopie záznamu.

UpdateIf( ZdrojDat; Podmínka1; ZáznamZměny1 [; Podmínka2; ZáznamZměny2; ... ] )

  • ZdrojDat – povinné. Zdroj dat obsahující záznam nebo záznamy, které chcete změnit.
  • Podmínky – povinné. Vzorec s hodnotou true pro záznam nebo záznamy, které chcete změnit. Ve vzorci můžete použít názvy sloupců ze ZdrojeDat.
  • ZáznamZměny – povinné. Pro každou odpovídající podmínku – záznam změny s novou hodnotou vlastnosti, která se má použít u záznamů ZdrojeDat splňujících tuto podmínku. Pokud tento záznam změny zadáte jako vložený pomocí složených závorek, můžou být hodnoty vlastností existujícího záznamu použité ve vzorcích s vlastnostmi.

Příklady

V těchto příkladech budete nahrazovat nebo měnit záznamy ve zdroji dat, který má název IceCream a na začátku má data uvedená v této tabulce:

Příklad zmrzliny.

Vzorec Popis Výsledek
Update( IceCream,
First( Filter( IceCream, Flavor="Chocolate" ) ), { ID: 1, Flavor: "Mint Chocolate", Quantity:150 } )
Nahradí záznam ve zdroji dat. Nahraďte záznam.

Zdroj dat IceCream byl změněn.
UpdateIf( IceCream, Quantity > 175, { Quantity: Quantity + 10 } ) Změní záznamy, jejichž hodnota v poli Quantity je větší než 175. Pole Quantity se zvětší o 10, ale žádná další pole se nezmění. Upravte záznamy.

Zdroj dat IceCream byl změněn.
Update( IceCream,
First( Filter( IceCream, Flavor="Strawberry" ) ),
{ ID: 3, Flavor: "Strawberry Swirl"} )
Nahradí záznam ve zdroji dat. Vlastnost Quantity nebyla v náhradním záznamu zadána, takže tato vlastnost bude ve výsledku obsahovat prázdnou hodnotu. Nahraďte záznam, pokud není zadáno množství.

Zdroj dat IceCream byl změněn.
UpdateIf( IceCream, true, { Quantity: 0 } ) Nastaví hodnotu vlastnosti Quantity ve všech záznamech ve zdroji dat na 0. Nastavte množství všech na 0.

Zdroj dat IceCream byl změněn.

Podrobný postup

  1. Naimportujte nebo vytvořte kolekci s názvem Inventory a podle popisu v tématu Zobrazení dat v galerii ji zobrazte v galerii.

  2. Dejte galerii název ProductGallery.

  3. Přidejte posuvník s názvem UnitsSold a nastavte jeho vlastnost Max na tento výraz:
    ProductGallery.Selected.UnitsInStock

  4. Přidejte tlačítko a nastavte jeho vlastnost OnSelect na tento vzorec:
    UpdateIf(Inventory, ProductName = ProductGallery.Selected.ProductName, {UnitsInStock:UnitsInStock-UnitsSold.Value})

  5. Stiskněte F5, vyberte některý produkt v galerii, určete hodnotu pomocí posuvníku a pak vyberte tlačítko.

    Počet jednotek na skladě (UnitsInStock) pro zadaný produkt se zmenší o množství, které jste určili.