Funkcije Update i UpdateIf

Odnosi se na: Aplikacije od gotovih gradivnih elemenata Aplikacije stvorene prema modelu

Ažurira zapise u nekom izvoru podataka.

Opis

Funkcija Update

Upotrijebite funkciju Update kako biste zamijenili cijeli zapis u nekom izvoru podataka. Suprotno tome, funkcije UpdateIf i Patch mijenjaju jednu ili više vrijednosti u nekom zapisu, ostavljajući ostale vrijednosti same.

U slučaju zbirke, mora se podudarati cijeli zapis. Zbirke dopuštaju duplicirane zapise pa se može podudarati više zapisa. Argument RemoveFlags.All možete koristiti za ažuriranje svih kopija zapisa; u suprotnom se ažurira samo jedna kopija zapisa.

Ako izvor podataka automatski generira vrijednost nekog stupca, vrijednost toga stupca mora se ponovno potvrditi.

Funkcija UpdateIf

Upotrijebite funkciju UpdateIf kako biste izmjenili jednu ili više vrijednosti u jednom ili više zapisa koji odgovaraju jednom ili više uvjeta. Uvjet može biti bilo koja formula koja rezultira vrijednošću true ili false i može referencirati stupce izvora podataka po imenu. Ova funkcija procjenjuje taj uvjet za svaki zapis i mijenja svaki zapis za koji je rezultat true.

Da biste odredili izmjenu, upotrijebite zapis promjene koji sadrži nove vrijednosti svojstava. Ako ovaj zapis promjene stavite u vitičaste zagrade, formule svojstava mogu upućivati na svojstva zapisa koji se mijenja. To ponašanje možete koristiti za izmjenu zapisa na temelju neke formule.

Slično funkciji UpdateIf, možete koristiti i funkciju Patch kako biste promijenili određene stupce zapisa bez utjecaja na druge stupce.

I Update i UpdateIf vraćaju izmijenjeni izvor podataka kao tablicu. Morate koristiti bilo koju od tih funkcija u formuli ponašanja.

Delegacija

Kada se koriste s izvor podataka, te se funkcije ne mogu delegirati. Dohvatit će se samo prvi dio izvora podataka, a zatim će se primijeniti funkcija. Ovo možda ne predstavlja cijelu priču. U vrijeme stvaranja može se pojaviti upozorenje koje će vas podsjetiti na ovo ograničenje.

Podrška za delegiranje (eksperimentalna)

Podrška za delegiranje za UpdateIf i RemoveIf sada je u eksperimentalnom pretpregledu (zadano ISKLJUČENO) za izvore podataka koji ga podržavaju. Ako izvor podataka ne podržava ovu značajku, sada će poslati upit poslužitelju i dohvatiti sve podatke koji odgovaraju izrazu filtra do maksimalnog iznosa od 500, Power Apps 2000 ili veličine stranice podataka. Zatim će ažurirati te zapise i poslati svaki natrag na poslužitelj koji će se ažurirati.

Sintaksa

Update( DataSource,OldRecord,NewRecord[, RemoveFlags.All ] )

  • DataSource – obavezno. Izvor podataka koji sadrži zapis koji želite zamijeniti.
  • OldRecord – obavezno. Zapis koji treba zamijeniti.
  • NewRecord – obavezno. Zamjenski zapis. Ovo nije zapis promjene. Cijeli se zapis zamjenjuje, a nedostajuća svojstva sadržat će prazno.
  • RemoveFlags.All – neobavezno. U nekoj zbirci se isti zapis može pojaviti više puta. Navedite argument RemoveFlags.All da biste ažurirali sve kopije zapisa.

UpdateIf( DataSource, Condition1, ChangeRecord1 [, Condition2, ChangeRecord2, ... ] )

  • DataSource – obavezno. Izvor podataka koji sadrži zapis ili zapise koje želite izmijeniti.
  • Condition(s) – obavezno. Formula koja daje rezultat true za zapis ili zapise koje želite izmijeniti. Možete koristiti nazive stupaca iz DataSource u toj formuli.
  • ChangeRecord(s) – obavezno. Za svaki odgovarajući uvjet, zapis promjene nove vrijednosti svojstva koje se primjenjuju na zapise iz izvora podataka koji ispunjavaju taj uvjet. Ako zapis navedete koristeći vitičaste zagrade, vrijednosti svojstava postojećeg zapisa mogu se koristiti u formulama svojstava.

Primjeri

U tim ćete primjerima zamijeniti ili izmijeniti zapise u izvoru podataka koji ima naziv IceCream, a započinje podatcima iz ove tablice:

Primjer za sladoled.

Formula Opis Rezultat
Update( IceCream,
First( Filter( IceCream, Flavor="Chocolate" ) ), { ID: 1, Flavor: "Mint Chocolate", Quantity:150 } )
Zamjenjuje zapis iz tog izvora podataka. Zamjena zapisa.

Izvor podataka IceCream također je izmijenjen.
UpdateIf( IceCream, Quantity > 175, { Quantity: Quantity + 10 } ) Mijenja zapise koji imaju polje Quantity koje je veće od 175. Polje Quantity povećava se za 10 i ne mijenja se nijedno drugo polje. Izmijenite zapise.

Izvor podataka IceCream također je izmijenjen.
Update( IceCream,
First( Filter( IceCream, Flavor="Strawberry" ) ),
{ ID: 3, Flavor: "Strawberry Swirl"} )
Zamjenjuje zapis iz tog izvora podataka. Svojstvo Quantity nije dostavljen u zapis promjene, pa će to svojstvo biti prazno u rezultatu. Zamijenite zapis kada količina nije isporučena.

Izvor podataka IceCream također je izmijenjen.
UpdateIf( IceCream, true, { Quantity: 0 } ) Postavlja vrijednost svojstva Quantity za sve zapise u tom izvoru podataka na 0. Postavite količinu za sve na 0.

Izvor podataka IceCream također je izmijenjen.

Korak po korak

  1. Uvezite ili stvorite zbirku po imenu Inventory i prikažite je u nekoj galeriji kako je opisano u odjeljku Prikazivanje podataka u galeriji.

  2. Nazovite tu galeriju ProductGallery.

  3. Dodajte klizač s nazivom UnitsSold i postavite svojstvo Max na ovaj izraz:
    ProductGallery.Selected.UnitsInStock

  4. Dodajte gumb i postavite njegovo svojstvo OnSelect na ovu formulu:
    UpdateIf(Inventory, ProductName = ProductGallery.Selected.ProductName, {UnitsInStock:UnitsInStock-UnitsSold.Value})

  5. Pritisnite F5, odaberite neki proizvod u galeriji, navedite vrijednost klizačem i zatim odaberite gumb.

    Broj komada navedenog proizvoda na skladištu smanjuje se za iznos koji ste naveli.