Update- og UpdateIf-funksjoner
Gjelder: Lerretsapper Modelldrevne apper
Oppdaterer poster i en datakilde.
Description
Update-funksjonen
Bruk Update-funksjonen til å erstatte en hel post i en datakilde. Funksjonene UpdateIf og Patch endrer én eller flere verdier i en post uten å røre de andre verdiene.
Hvis du vil oppdatere en samling, må hele posten gi treff. Samlinger tillater dupliserte poster, slik at flere poster kan gi treff. Du kan bruke RemoveFlags.All-argumentet for å oppdatere alle kopiene av en post. Ellers oppdateres bare en kopi av posten.
Hvis datakilden genererer en kolonnes verdi automatisk, må verdien til denne kolonnen bekreftes.
UpdateIf-funksjonen
Bruk UpdateIf-funksjonen til å endre en eller flere verdier i en eller flere poster som oppfyller en eller flere betingelser. Betingelsen kan være enhver formel som gir sann eller usann som resultat og kan referere til kolonner i datakilden etter navn. Funksjonen evaluerer betingelsene for hver post og endrer alle poster hvor resultatet er sann.
Bruk en endringspost som inneholder nye egenskapsverdier, til å angi en endring. Hvis du angir denne endringsposten innebygd i klammeparenteser, kan egenskapsformlene referere til egenskaper til posten som blir endret. Du kan bruke denne virkemåten til å endre poster basert på en formel.
På samme måte som med UpdateIf kan du også bruke Patch-funksjonen til å endre bestemte kolonner i en post uten å påvirke andre kolonner.
Både Update og UpdateIf returnerer den endrede datakilden som en tabell. Du må bruke en av funksjonene i en formel for virkemåte.
Delegering
Disse funksjonene kan ikke delegeres når de brukes med en datakilde. Bare den første delen av datakilden hentes, og deretter brukes funksjonen. Dette representerer kanskje ikke den fullstendig historikken. Det kan vises en advarsel under redigeringen for å minne deg på denne begrensningen.
Delegeringsstøtte
Bare enkelte datakilder støtter UpdateIf. Hvis en datakilde ikke støtter denne funksjonen, sender Power Apps nå en spørring til serveren og henter alle data som samsvarer med filteruttrykket, opptil maksimalt 500 eller 2000 eller størrelsen på datasiden. Deretter oppdateres disse oppføringene, og hver av dem sendes tilbake til serveren for oppdatering.
Syntaks
Update( DataSource, OldRecord, NewRecord [, RemoveFlags.All ] )
- DataSource – obligatorisk. Datakilden som inneholder posten du vil erstatte.
- OldRecord – obligatorisk. Posten som du vil erstatte.
- NewRecord – obligatorisk. Posten som du vil erstatte den med. Dette er ikke en endringspost. Hele posten erstattes, og manglende egenskaper vil inneholde tom.
- RemoveFlags.All – valgfritt. I en samling kan den samme posten forekomme mer enn én gang. Angi argumentet RemoveFlags.All for å oppdatere alle kopier av posten.
UpdateIf( DataSource, Condition1, ChangeRecord1 [, Condition2, ChangeRecord2, ... ] )
- DataSource – obligatorisk. Datakilden som inneholder posten eller postene som du vil endre.
- Condition(s) – obligatorisk. En formel som gir resultatet sann for posten eller postene som du vil endre. Du kan bruke kolonnenavnene fra DataSource i formelen.
- ChangeRecord(s) – obligatorisk. Angi en endringspost med nye egenskapsverdier som skal anvendes på postene i DataSource som oppfyller hver tilhørende betingelse. Hvis du angir posten innebygd i klammeparenteser, kan du bruke egenskapsverdiene til den eksisterende posten i egenskapsformlene.
Eksempler
I disse eksemplene erstatter eller endrer du poster i en datakilde som heter IceCream og som starter med dataene i denne tabellen:
Formel | Beskrivelse | Resultat |
---|---|---|
Update( IceCream, First( Filter( IceCream, Flavor="Chocolate" ) ), { ID: 1, Flavor: "Mint Chocolate", Quantity:150 } ) |
Erstatter en post fra datakilden. | Datakilden IceCream har blitt endret. |
UpdateIf( IceCream, Quantity > 175, { Quantity: Quantity + 10 } ) | Endrer poster hvor Quantity er større enn 175. Quantity-feltet økes med 10, og ingen andre felter blir endret. | Datakilden IceCream har blitt endret. |
Update( IceCream, First( Filter( IceCream, Flavor="Strawberry" ) ), { ID: 3, Flavor: "Strawberry Swirl"} ) |
Erstatter en post fra datakilden. Egenskapen Quantity er ikke angitt i erstatningsposten. Denne egenskapen vil derfor være tom i resultatet. | Datakilden IceCream har blitt endret. |
UpdateIf( IceCream, true, { Quantity: 0 } ) | Angir verdien 0 for Quantity-egenskapen til alle postene i datakilden. | Datakilden IceCream har blitt endret. |
Trinnvis
Importer eller opprett en samling med navnet Inventory, og vis den i et galleri, som beskrevet i Vis data i et galleri.
Gi galleriet navnet ProductGallery.
Legg til en glidebryter med navnet UnitsSold, og angi glidebryterens Max-egenskap som dette uttrykket:
ProductGallery.Selected.UnitsInStockLegg til en knapp, og sett knappens OnSelect-egenskap til denne formelen:
UpdateIf(Inventory, ProductName = ProductGallery.Selected.ProductName, {UnitsInStock:UnitsInStock-UnitsSold.Value})Trykk på F5, velg et produkt i galleriet, angi en verdi med glidebryteren, og velg deretter knappen.
Antall enheter på lager for produktet du anga, reduseres med beløpet du anga.