Update és UpdateIf függvények

A következőkre vonatkozik: Vászonalapú alkalmazások Modellvezérelt alkalmazások

Frissíti egy adatforrásrekordjait.

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ás támogatása (kísérleti)

Az UpdateIf és a RemoveIf delegálási támogatása mostantól kísérleti előzetes verzióban (alapértelmezett OFF) érhető el az azt támogató adatforrások esetében. 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, 2000 vagy 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 (Adatforrás) – kötelező. A cserélni kívánt rekordot tartalmazó adatforrás.
  • RégiRekord – kötelező. A cserélni kívánt rekord.
  • ÚjRekord – 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( Adatforrás, Feltétel1, MódosítóRekord1 [, Feltétel2, MódosítóRekord2, ... ] )

  • DataSource (Adatforrás) – kötelező. A módosítandó rekordot vagy rekordokat tartalmazó adatforrás.
  • Feltétel(ek) – 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.
  • ChangeRecord(s) – 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:

Icecream példa.

Képlet Ismertetés Eredmény
Frissítés( jégkrém,
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. Rekord cseréje.

A módosított IceCream adatforrás.
UpdateIf( Jégkrém, 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. Rekordok módosítása.

A módosított IceCream adatforrás.
Frissítés( jégkrém,
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. Cserélje ki a rekordot, ha a mennyiség nincs megadva.

A módosított IceCream adatforrás.
UpdateIf( Jégkrém, igaz, { Mennyiség: 0 } ) Az adatforrás minden rekordjának Quantity tulajdonságát a 0 értékre állítja be. Állítsa az összes mennyiség értékét 0-ra.

A módosított IceCream adatforrás.

Lépésről lépésre

  1. 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.

  2. A katalógus neveként adja meg a következőt: Termékkatalógus.

  3. Adjon hozzá egy EladottMennyiség nevű csúszkát, amelynek Max tulajdonságát a következő kifejezésre állítja be:
    ProductGallery.Selected.UnitsInStock

  4. Adjon 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álasztott.TermékNév, {UnitsInStock:UnitsInStock-UnitsSold.Value})

  5. 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.