Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk: Aplikasi Kanvas Berbasis model
aplikasi
Memperbarui rekaman di sumber data.
Description
fungsi Update
Update Gunakan fungsi untuk mengganti seluruh rekaman di sumber data. Sebaliknya, UpdateIf fungsi Patch dan memodifikasi satu atau beberapa nilai dalam rekaman, meninggalkan nilai lain saja.
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
UpdateIf Gunakan fungsi untuk mengubah satu atau beberapa nilai dalam satu atau beberapa rekaman yang cocok 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 UpdateIfdengan , Anda juga dapat menggunakan fungsi Patch untuk mengubah kolom rekaman tertentu tanpa memengaruhi kolom lain.
Baik Update dan UpdateIf kembalikan sumber data yang dimodifikasi sebagai tabel. Anda harus menggunakan salah satu fungsi dalam rumus perilaku.
Delegasi
Fungsi-fungsi ini tidak mendelegasikan ke sumber data. Namun, UpdateIf dan RemoveIf berfungsi secara lokal untuk mensimulasikan delegasi hingga batas 500/2000 rekaman. Mereka secara progresif menurunkan catatan di luar batas non-delegasi 500/2000 rekaman. Rekaman yang memenuhi kondisi If dikumpulkan. Umumnya, maksimum 500/2000 rekaman dikumpulkan secara terpisah dan kemudian dimodifikasi per eksekusi. Namun, lebih banyak rekaman dapat diperbarui jika cache data lokal yang ada besar, karena fungsi mungkin memiliki akses ke lebih banyak rekaman untuk evaluasi. Hanya bagian awal sumber data yang akan diambil, dan kemudian fungsi akan diterapkan. Ini mungkin tidak mewakili gambar lengkap. Peringatan mungkin muncul selama penulisan untuk mengingatkan Anda tentang batasan ini.
Sintaks
Update(DataSource_, OldRecord, NewRecord [, RemoveFlags.All ] )
- 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 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(DataSource_, Condition1, ChangeRecord1 [, Condition2, ChangeRecord2, ... ] )
- Sumber Data– Wajib. Sumber data yang berisi rekaman atau rekaman yang ingin anda ubah.
- Kondisi – Diperlukan. Rumus yang dievaluasi ke true untuk rekaman atau rekaman yang ingin Anda ubah. Anda dapat menggunakan nama kolom DataSource dalam rumus ini. Jika beberapa Kondisi diteruskan, hanya ChangeRecord yang terkait dengan Kondisi pertama yang mengevaluasi ke true yang diterapkan.
- 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 | Description | Hasil |
|---|---|---|
|
Update(IceCream, LookUp( IceCream, Flavor="Chocolate" ), { ID: 1, Rasa: "Cokelat Mint", Kuantitas: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. |
|
Update(IceCream, LookUp( IceCream, Flavor="Strawberry" ), { 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( IceCream, 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(Inventory, ProductName = 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.