Megosztás:


Update és UpdateIf függvények

A következőkre vonatkozik: Vászonalapú alkalmazások Modellalapú alkalmazások

Frissíti egy adatforrásrekordjait.

Description

Update függvény

A függvény használatával Update egy teljes rekordot cserélhet le egy adatforrásban. Ezzel szemben a Patch és a UpdateIfPatch függvények egy vagy több értéket módosítanak egy rekordban, így a többi érték egyedül marad.

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.

UpdateIf függvény

A függvény használatával UpdateIf egy vagy több, egy vagy több feltételnek megfelelő rekord egy vagy több értékét módosíthatja. 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.

UpdateIfEhhez hasonlóan a Patch függvénnyel is módosíthatja egy rekord adott oszlopait anélkül, hogy más oszlopokat érintenének.

Mindkettőt Update , és UpdateIf a módosított adatforrást táblaként adja vissza. Mindkét függvény csak műveleti képletben használható.

Meghatalmazás

Ezek a függvények nem delegálnak adatforrásokat. A UpdateIfRemoveIf azonban helyileg is szimulálja a delegálást legfeljebb 500/2000 rekordig. Fokozatosan csökkentik a rekordokat az 500/2000 rekord delegálási korlátja fölé. A Rendszer összegyűjti az If feltételnek megfelelő rekordokat. Általában legfeljebb 500/2000 rekordot gyűjtünk külön, majd végrehajtásonként módosítjuk. Azonban több rekord is frissíthető, ha a meglévő helyi adatgyorsítótár nagy, mivel a függvény több rekordhoz is hozzáférhet a kiértékeléshez. A rendszer csak az adatforrás kezdeti részét kéri le, majd alkalmazza a függvényt. Ez nem feltétlenül a teljes képet jelöli. A szerzői műveletek során figyelmeztetés jelenhet meg, amely emlékezteti Önt erre a korlátozásra.

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. A rendszer lecseréli a teljes rekordot, és a hiányzó tulajdonságok üresek.
  • 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. Több feltétel teljesülése esetén a rendszer csak az első igaznak kiértékelt feltételhez kapcsolódó ChangeRecord értéket alkalmazza.
  • 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:

Icecream példa.

Képlet Description Eredmény
Update( IceCream,
LookUp( IceCream, Flavor="Chocolate" ), { ID: 1, Flavor: "Mint Chocolate", Quantity:150 } )
Kicseréli az adatforrás egyik rekordját. Rekord cseréje.

A módosított IceCream adatforrás.
UpdateIf( IceCream, Quantity > 175, { Quantity: Quantity + 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.
Update( IceCream,
LookUp( IceCream, Flavor="Strawberry" ),
{ 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( IceCream, true, { Quantity: 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(Inventory, ProductName = ProductGallery.Selected.ProductName, {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.