Fungsi Update dan UpdateIf
Berlaku untuk: Aplikasi kanvas Aplikasi berdasarkan model
Memperbarui rekaman di sumber data.
Description
Fungsi Update
Gunakan fungsi Update untuk mengganti seluruh rekaman dalam sumber data. Sebaliknya, fungsi UpdateIf dan Patch memodifikasi satu nilai atau lebih dalam rekaman, sehingga hanya menyisakan nilai lainnya.
Untuk koleksi, seluruh rekaman harus sesuai. Koleksi memungkinkan rekaman duplikat, sehingga beberapa rekaman mungkin cocok. Anda dapat menggunakan argumen RemoveFlags.All untuk memperbarui semua salinan rekaman; jika tidak, hanya satu salinan rekaman yang diperbarui.
Jika sumber data menghasilkan nilai kolom secara otomatis, nilai kolom tersebut harus ditegaskan kembali.
Fungsi UpdateIf
Gunakan fungsi UpdateIf untuk memodifikasi satu atau beberapa nilai dalam satu atau beberapa rekaman yang sesuai dengan satu atau beberapa kondisi. Kondisi dapat berupa rumus yang dihasilkan dalam true atau false dan dapat merujuk kolom pada sumber data berdasarkan nama. Fungsi ini mengevaluasi kondisi untuk setiap rekaman dan memodifikasi rekaman yang hasilnya true.
Untuk menentukan modifikasi, gunakan rekaman perubahan yang berisi nilai properti baru. Jika Anda memberikan rekaman perubahan sebaris dengan kurung kurawal, rumus properti dapat merujuk properti rekaman yang sedang dimodifikasi. Anda dapat menggunakan perilaku ini untuk memodifikasi rekaman berdasarkan rumus.
Mirip dengan UpdateIf, Anda juga dapat menggunakan fungsi Patch untuk mengubah kolom rekaman tertentu tanpa mempengaruhi kolom lainnya.
Update dan UpdateIf menghasilkan sumber data yang dimodifikasi sebagai tabel. Anda harus menggunakan salah satu fungsi dalam rumus perilaku.
Delegasi
Saat digunakan dengan sumber data, fungsi ini tidak dapat didelegasikan. Hanya bagian pertama sumber data yang akan diambil, lalu fungsi diterapkan. Ini mungkin tidak mewakili cerita lengkap. Peringatan mungkin muncul pada waktu penulisan untuk mengingatkan Anda tentang batasan ini.
Dukungan delegasi (Eksperimental)
Dukungan delegasi untuk UpdateIf dan RemoveIf sekarang dalam Pratinjau Eksperimental (default OFF) untuk sumber data yang mendukungnya. Jika sumber data tidak mendukung fitur ini, Power Apps sekarang akan mengirim kueri ke server dan mengambil semua data yang cocok dengan ekspresi filter hingga maksimum 500, 2000, atau ukuran halaman data. Kemudian, itu akan memperbarui catatan tersebut dan mengirim masing-masing kembali ke server untuk diperbarui.
Sintaks
Pembaruan (Sumber Data,Catatan Lama,Catatan Baru[, HapusFlags.Semua ] )
- Sumber Data– Wajib. Sumber data yang berisi rekaman yang ingin Anda ganti.
- OldRecord – Wajib. Rekaman untuk ditampilkan.
- NewRecord – Wajib. Rekaman penggantian. Ini bukanlah rekaman penggantian. Seluruh rekaman diganti, dan properti yang hilang akan berisi kosong.
- RemoveFlags.All – Opsional. Di koleksi, rekaman yang sama mungkin ditampilkan lebih dari satu kali. Tentukan argumen RemoveFlags.All untuk memperbarui semua salinan rekaman.
UpdateIf(Sumber Data,Kondisi1,ChangeRecord1 [,Kondisi2,ChangeRecord2 , ... ] )
- Sumber Data– Wajib. Sumber data yang berisi rekaman atau rekaman yang ingin anda ubah.
- Ketentuan – Wajib. Rumus yang dievaluasi ke true untuk rekaman atau rekaman yang ingin Anda ubah. Anda dapat menggunakan nama kolom DataSource dalam rumus ini.
- ChangeRecords - Wajib. Untuk setiap kondisi yang sesuai, perubahan rekaman nilai properti baru untuk diterapkan ke rekaman DataSource yang memenuhi kondisi. Jika Anda memberikan rekaman sebaris menggunakan kurung kurawal, nilai properti rekaman yang ada dapat digunakan dalam rumus properti.
Contoh
Di contoh ini, Anda akan mengganti atau mengubah rekaman atau rekaman dalam sumber data yang bernama IceCream dan dimulai dengan data dalam tabel ini:
Rumus | KETERANGAN | Hasil |
---|---|---|
Pembaruan( Es Krim, First( Filter( IceCream, Flavor="Cokelat" ) ), { ID: 1, Flavor: "Cokelat Mint", Quantity:150 } ) |
Mengganti rekaman dari sumber data. | Sumber data IceCream telah dimodifikasi. |
UpdateIf(IceCream, Kuantitas > 175,Kuantitas { : Kuantitas + 10 } ) | Mengubah rekaman yang memiliki Jumlah yang lebih besar dari 175. Bidang Jumlah bertambah hingga 10, dan tidak ada bidang lain yang dimodifikasi. | Sumber data IceCream telah dimodifikasi. |
Pembaruan( Es Krim, First( Filter( IceCream, Flavor="Stroberi" ) ), { ID: 3, Flavor: "Stroberi Lingkar"} ) |
Mengganti rekaman dari sumber data. Properti Jumlah belum diberikan dalam rekaman pengganti, sehingga properti tersebut akan menghasilkan kosong. | Sumber data IceCream telah dimodifikasi. |
UpdateIf( Es Krim, benar, { Kuantitas: 0 } ) | Menetapkan nilai properti Jumlah untuk semua rekaman dalam sumber data ke 0. | Sumber data IceCream telah dimodifikasi. |
Langkah demi langkah
Impor atau buat koleksi bernama Inventaris, dan tampilkan di galeri sebagaimana dijelaskan dalam Tampilkan data di galeri.
Beri nama galeri dengan ProductGallery.
Tambahkan panel geser bernama UnitsSold, dan atur properti Maks ke ekspresi ini:
ProductGallery.Selected.UnitsInStockTambahkan tombol dan atur properti OnSelect ke formula ini:
UpdateIf(Inventaris, Nama Produk = ProductGallery.Selected.ProductName, {UnitsInStock:UnitsInStock-UnitsSold.Value})Tekan F5, pilih produk di galeri, tentukan nilai dengan panel geser, lalu pilih tombol.
Jumlah unit dalam stok untuk produk yang Anda tentukan menurun berdasarkan jumlah yang Anda tentukan.