Update és UpdateIf függvények
A következőkre vonatkozik: Vászonalapú alkalmazások Modellvezérelt alkalmazások
Frissíti egy adatforrás rekordjait.
Description
Az Update függvény
Az Update függvény használatával egy adatforrás egy teljes rekordja cserélhető le. Ezzel szemben az UpdateIf és a Patch függvény csupán egy rekord egy vagy több értékét módosítja, a többi értéket pedig változatlanul hagyja.
Gyűjtemény esetében a teljes rekordnak egyeznie kell. A gyűjteményekben ismétlődő rekordok is lehetnek, ezért több találat is lehetséges. A RemoveFlags.All argumentummal frissítheti a rekord összes példányát, ellenkező esetben a rekordnak csak egy példánya frissül.
Ha az adatforrás automatikusan generálja egy oszlop értékét, akkor annak az oszlopnak az értékét újra meg kell erősíteni.
Az Updatelf függvény
Az Updatelf függvény használatával egy vagy több feltétlenek megfelelő egy vagy több rekord egy vagy több értéke módosítható. A feltételt bármilyen olyan képlet alkothatja, amelynek eredménye true (igaz) vagy false (hamis) lehet, és név szerint hivatkozhat az adatforrás oszlopaira. A függvény rekordonként kiértékeli a feltételt, és minden rekordot módosít, amelyre az eredmény true.
A módosítás az új tulajdonságértékeket tartalmazó módosító rekorddal adható meg. Ha a módosító rekord kapcsos zárójelek között, beágyazva van megadva, akkor a tulajdonságképletek az éppen módosított rekord tulajdonságaira hivatkozhatnak. Ennek a viselkedésnek a kihasználásával a rekordok képlet alapján módosíthatók.
Az Updatelf függvényhez hasonlóan a Patch függvény is használható egy rekord adott oszlopainak módosítására úgy, hogy a többi oszlopot változatlanul hagyja.
Az Update és az Updatelf függvény is táblaként adja vissza a módosított adatforrást. Mindkét függvény csak műveleti képletben használható.
Meghatalmazás
Adatforrás használata esetén ezek a függvények nem delegálhatók. Csak az adatforrás első részét kéri le, és utána alkalmazza a funkciót. Lehet, hogy ez nem tükrözi a teljes történetet. A létrehozáskor figyelmeztetés jelenhet meg, amely emlékezteti erre a korlátozásra.
Delegálási támogatás
Csak néhány adatforrás támogatja az UpdateIf funkciót. Ha egy adatforrás nem támogatja ezt a szolgáltatást, akkor lekérdezést küld a kiszolgálónak, és lekéri az összes olyan adatot, Power Apps amely megfelel a szűrőkifejezésnek legfeljebb 500 vagy 2000, illetve az adatoldal méretéig. Ezután frissíti ezeket a rekordokat, és mindegyiket visszaküldi a kiszolgálónak frissítésre.
Szintaxis
Update( DataSource, OldRecord, NewRecord [, RemoveFlags.All ] )
- DataSource – Kötelező. A cserélni kívánt rekordot tartalmazó adatforrás.
- OldRecord – Kötelező. A cserélni kívánt rekord.
- NewRecord – Kötelező. A behelyettesítendő rekord. Ez nem módosító rekord. Az egész rekord kicserélődik, a hiányzó tulajdonságok tartalma pedig üres lesz.
- RemoveFlags.All – Nem kötelező. Ugyanaz a rekord többször is előfordulhat a gyűjteményben. Adja meg a RemoveFlags.All argumentumot a rekord összes másolatának frissítéséhez.
UpdateIf( DataSource; Condition1; ChangeRecord1 [, Condition2; ChangeRecord2; ... ] )
- DataSource – Kötelező. A módosítandó rekordot vagy rekordokat tartalmazó adatforrás.
- Feltételek – Kötelező. Egy olyan képlet, amely true (igaz) eredményt ad a módosítandó rekordon vagy rekordokon alkalmazva. A képletben az Adatforrás oszlopnevei is használhatók.
- ChangeRecords - Kötelező. Az egyes feltételekhez tartozó, az Adatforrásban az adott feltételnek megfelelő rekordok új tulajdonságértékeiből álló módosító rekord. Ha a rekord kapcsos zárójelek között, beágyazva van megadva, akkor a meglévő rekord tulajdonságértékei felhasználhatók a tulajdonságképletekben.
Példák
Ezekben a példákban egy IceCream nevű adatforrás rekordjai cserélődnek vagy módosulnak. A kiinduló adatokat az alábbi táblázat tartalmazza:
Képlet | Ismertetés | Eredmény |
---|---|---|
frissítés( Fagylalt, Első( Szűrő( Jégkrém, Íz="Csokoládé" ) ), { ID: 1, Íz: "Mentás csokoládé", Mennyiség:150 } ) |
Kicseréli az adatforrás egyik rekordját. | A módosított IceCream adatforrás. |
UpdateIf( Fagylalt, mennyiség > 175,Mennyiség { : Mennyiség + 10 } ) | Azokat a rekordokat módosítja, amelyekben a Quantity értéke nagyobb, mint 175. A Quantity mező értéke 10-zel nő, a többi mező pedig nem módosul. | A módosított IceCream adatforrás. |
frissítés( Fagylalt, Első( Szűrő( Jégkrém, Íz="Eper" ) ), { ID: 3, Íz: "Epres örvény"} ) |
Kicseréli az adatforrás egyik rekordját. A csererekordban nincs megadva a Quantity tulajdonság, ezért ez a tulajdonság üres lesz az eredményben. | A módosított IceCream adatforrás. |
UpdateIf( Fagylalt, igaz,Mennyiség { : 0 } ) | Az adatforrás minden rekordjának Quantity tulajdonságát a 0 értékre állítja be. | A módosított IceCream adatforrás. |
Lépésről lépésre
Importáljon, vagy hozzon létre egy Árukészlet nevű gyűjteményt, és jelenítse meg úgy, ahogy azt az Adatok megjelenítése katalógusban című szakasz bemutatja.
A katalógus neveként adja meg a következőt: Termékkatalógus.
Adjon hozzá egy EladottMennyiség nevű csúszkát, amelynek Max tulajdonságát a következő kifejezésre állítja be:
ProductGallery.Selected.UnitsInStockAdjon hozzá egy gombot, és a Kiválasztáskor tulajdonság értékeként adja meg ezt a képletet:
UpdateIf(Készlet, Terméknév = Termékkatalógus.Kiválasztva.Terméknév, {UnitsInStock:UnitsInStock-UnitsSold.Value})Nyomja meg az F5 billentyűt, jelölje ki a terméket a katalógusban, adjon meg egy értéket a csúszkán, majd kattintson a gombra.
A megadott termékből raktáron lévő mennyiség a megadott értékkel csökken.