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

Delegeringsstøtte for UpdateIf og RemoveIf finnes nå som eksperimentell forhåndsversjon (standard AV) for datakilder som støtter dette. Hvis en datakilde ikke støtter denne funksjonen, sender Power Apps en nå spørring til serveren og henter alle data som samsvarer med filteruttrykket, maksimalt 500, 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:

Eksempel med IceCream.

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

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

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. Erstatt post når antall ikke er angitt.

Datakilden IceCream har blitt endret.
UpdateIf( IceCream, true, { Quantity: 0 } ) Angir verdien 0 for Quantity-egenskapen til alle postene i datakilden. Sett antall for alle til 0.

Datakilden IceCream har blitt endret.

Trinnvis

  1. Importer eller opprett en samling med navnet Inventory, og vis den i et galleri, som beskrevet i Vis data i et galleri.

  2. Gi galleriet navnet ProductGallery.

  3. Legg til en glidebryter med navnet UnitsSold, og angi glidebryterens Max-egenskap som dette uttrykket:
    ProductGallery.Selected.UnitsInStock

  4. Legg til en knapp, og sett knappens OnSelect-egenskap til denne formelen:
    UpdateIf(Inventory, ProductName = ProductGallery.Selected.ProductName, {UnitsInStock:UnitsInStock-UnitsSold.Value})

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