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 (eksperimentel)

Delegeringssupport til UpdateIf og RemoveIf findes nu i eksperimentel forhåndsversion (som standard slået FRA) for datakilder, der understøtter det. Hvis en datakilde ikke understøtter denne funktion, sender Power Apps nu en forespørgsel til serveren og henter alle data, der svarer til filterudtrykket, op til et maksimum på enten 500, 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:

Eksempel på IceCream.

Formel Beskrivelse Resultat
Update( IceCream,
First( Filter( IceCream, Flavor="Chocolate" ) ), { ID: 1, Flavor: "Mint Chocolate", Quantity:150 } )
Erstatter en post fra datakilden. Erstat en post.

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. Rediger poster.

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. Erstat post, når antal ikke er angivet.

Datakilden IceCream er blevet ændret.
UpdateIf( IceCream, true, { Quantity: 0 } ) Indstiller værdien af egenskaben Quantity for alle poster i datakilden til 0. Angiv antal for alle til 0.

Datakilden IceCream er blevet ændret.

Trin for trin

  1. Importér eller opret en samling, der hedder Inventory, og vis den i et galleri, som det beskrives i Vis data i et galleri.

  2. Navngiv galleriet ProductGallery.

  3. Tilføj en skyder, der hedder UnitsSold, og indstil dens Max-egenskab til dette udtryk:
    ProductGallery.Selected.UnitsInStock

  4. Tilføj en knap, og angiv dens egenskab OnSelect til denne formel:
    UpdateIf(Inventory, ProductName = ProductGallery.Selected.ProductName, {UnitsInStock:UnitsInStock-UnitsSold.Value})

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