Funkcije Update i UpdateIf
Primjenjuje se na sljedeće: Aplikacije radnog područja 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. Možete koristiti argument RemoveFlags.All da biste ažurirali sve kopije zapisa, a 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 izvorom 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 delegiranja
Samo neki izvori podataka podržavaju UpdateIf. Ako izvor podataka ne podržava tu značajku, Power Apps sada će poslati upit poslužitelju i dohvatiti sve podatke koji odgovaraju izrazu filtra do maksimalno 500 ili 2000 ili veličine stranice s podacima. Zatim će ažurirati te zapise i poslati ih natrag na poslužitelj na ažuriranje.
Sintaksa
Ažuriranje(Izvor podataka,StariZapis,NoviZapis [ ,RemoveFlags.All ] )
- Izvor podataka– 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 – Nije obavezno. 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;... ] )
- Izvor podataka– obavezno. Izvor podataka koji sadrži zapis ili zapise koje želite izmijeniti.
- Uvjeti – Obavezno. Formula koja daje rezultat true za zapis ili zapise koje želite izmijeniti. Možete koristiti nazive stupaca iz DataSource u toj formuli.
- ChangeRecords - 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:
Formula | Opis | Rezultat |
---|---|---|
Ažuriranje( Sladoled, First( Filter( IceCream, Flavor="Chocolate" ) ), { ID: 1, Flavor: "Mint Chocolate", Quantity:150 } ) |
Zamjenjuje zapis iz tog izvora podataka. | Izvor podataka IceCream također je izmijenjen. |
UpdateIf( Sladoled, količina > 175, { Količina: Količina + 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. | Izvor podataka IceCream također je izmijenjen. |
Ažuriranje( Sladoled, 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. | Izvor podataka IceCream također je izmijenjen. |
UpdateIf( Sladoled, true,Količina { : 0 } ) | Postavlja vrijednost svojstva Quantity za sve zapise u tom izvoru podataka na 0. | Izvor podataka IceCream također je izmijenjen. |
Korak po korak
Uvezite ili stvorite zbirku po imenu Inventory i prikažite je u nekoj galeriji kako je opisano u odjeljku Prikazivanje podataka u galeriji.
Nazovite tu galeriju ProductGallery.
Dodajte klizač s nazivom UnitsSold i postavite svojstvo Max na ovaj izraz:
ProductGallery.Selected.UnitsInStockDodajte gumb i postavite njegovo svojstvo OnSelect na ovu formulu:
UpdateIf(Inventar, ProductName = ProductGallery.Selected.ProductName, {UnitsInStock:UnitsInStock-UnitsSold.Value})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.