Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
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:
| 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. |
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. |
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. |
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. |
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(Inventory, ProductName = ProductGallery.Selected.ProductName, {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.