Funktionerne Update og UpdateIf
Gælder for: Lærredapps Modelbaserede apps
Opdaterer poster i en datakilde.
Description
Funktionen Update
Brug funktionen Update til at erstatte en hel post i en datakilde. Omvendt ændrer funktionerne UpdateIf og Patch en eller flere værdier i en post, mens de andre værdier ikke ændres.
For en samling skal hele posten matche. Med samlinger er det muligt at duplikere poster, så flere poster kan matche. Du kan bruge argumentet RemoveFlags.All til at opdatere alle kopier af en post. Ellers er det kun én kopi af posten, der opdateres.
Hvis datakilden genererer en kolonnes værdi automatisk, skal værdien af denne kolonne genbekræftes.
Funktionen UpdateIf
Brug funktionen UpdateIf til at ændre en eller flere værdier i en eller flere poster, der svarer til en eller flere betingelser. Hver betingelse kan være en formel, der resulterer i en værdi af typen sand eller falsk og kan henvise til kolonner i datakilden efter navn. Med denne funktion evalueres betingelsen for hver post, og en hvilken som helst post, hvor resultatet er sand, ændres.
Brug en ændringspost, der indeholder nye egenskabsværdier, til at angive en tilpasning. Hvis du indbygger denne ændringspost vha. krøllede parenteser, kan egenskabsformler henvise til egenskaberne for den post, der ændres. Du kan bruge denne funktionsmåde til at ændre poster baseret på en formel.
Ligesom med UpdateIf kan du også bruge funktionen Patch til at ændre bestemte kolonner i en post uden at påvirke andre kolonner.
Funktionerne Update og UpdateIf returnerer den ændrede datakilde som en tabel. Du skal bruge en af funktionerne i en funktionsformel.
Delegering
Disse funktioner kan ikke delegeres, når de bruges med en datakilde. Kun den første del af datakilden hentes, og derefter vil funktionen blive anvendt. Dette er muligvis ikke hele historien. Der vises muligvis en advarsel under oprettelse for at minde dig om denne begrænsning.
Understøttelse af uddelegering
Kun nogle datakilder understøtter UpdateIf. Hvis en datakilde ikke understøtter denne funktion, sender Power Apps en forespørgsel til serveren og henter alle data, der svarer til filterudtrykket, op til maksimum 500 eller 2000 eller datasidens størrelse. Derefter opdateres disse poster, og hver enkelt post sendes tilbage til serveren for at blive opdateret.
Syntaks
Update( DataSource, OldRecord, NewRecord [, RemoveFlags.All ] )
- DataSource – påkrævet. Den datakilde, der indeholder den post, du vil erstatte.
- OldRecord – påkrævet. Den post, der skal erstattes.
- NewRecord – påkrævet. Erstatningsposten. Dette er ikke en ændringspost. Hele posten erstattes, og manglende egenskaber indeholder tom.
- RemoveFlags.All – Valgfrit. Den samme post kan vises mere end én gang i en samling. Angiv argumentet RemoveFlags.All til at opdatere alle kopier af posten.
UpdateIf( DataSource, Condition1, ChangeRecord1 [, Condition2, ChangeRecord2, ... ] )
- DataSource – påkrævet. Den datakilde, der indeholder den eller de poster, du vil ændre.
- Condition(s) – påkrævet. En formel, der evalueres til sand for den eller de poster, du vil ændre. Du kan bruge kolonnenavne fra DataSource i formlen.
- ChangeRecord(s) – påkrævet. For hver tilsvarende betingelse skal der anvendes en ændringspost for nye egenskabsværdier på poster i DataSource, som opfylder betingelsen. Hvis du indbygger posten vha. krøllede parenteser, kan egenskabsværdier for den eksisterende post bruges i egenskabsformlerne.
Eksempler
I disse eksempler erstatter eller ændrer du poster i en datakilde, der hedder IceCream, og som starter med dataene i denne tabel:
Formel | Beskrivelse | Resultat |
---|---|---|
Update( IceCream, First( Filter( IceCream, Flavor="Chocolate" ) ), { ID: 1, Flavor: "Mint Chocolate", Quantity:150 } ) |
Erstatter en post fra datakilden. | Datakilden IceCream er blevet ændret. |
UpdateIf( IceCream, Quantity > 175, { Quantity: Quantity + 10 } ) | Ændrer poster, hvor Quantity er større end 175. Feltet Quantity forøges med 10, og ingen andre felter ændres. | Datakilden IceCream er blevet ændret. |
Update( IceCream, First( Filter( IceCream, Flavor="Strawberry" ) ), { ID: 3, Flavor: "Strawberry Swirl"} ) |
Erstatter en post fra datakilden. Egenskaben Quantity er ikke angivet i erstatningsposten, så den egenskab er tom i resultatet. | Datakilden IceCream er blevet ændret. |
UpdateIf( IceCream, true, { Quantity: 0 } ) | Indstiller værdien af egenskaben Quantity for alle poster i datakilden til 0. | Datakilden IceCream er blevet ændret. |
Trin for trin
Importér eller opret en samling, der hedder Inventory, og vis den i et galleri, som det beskrives i Vis data i et galleri.
Navngiv galleriet ProductGallery.
Tilføj en skyder, der hedder UnitsSold, og indstil dens Max-egenskab til dette udtryk:
ProductGallery.Selected.UnitsInStockTilføj en knap, og angiv dens egenskab OnSelect til denne formel:
UpdateIf(Inventory, ProductName = ProductGallery.Selected.ProductName, {UnitsInStock:UnitsInStock-UnitsSold.Value})Tryk på F5, vælg et produkt i galleriet, angiv en værdi med skyderen, og vælg derefter knappen.
Antallet af enheder på lager af det angivne produkt, reduceres med det antal, du angav.