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 bisa menggunakan argumen RemoveFlags.All untuk memperbarui semua salinan catatan; jika tidak, hanya satu salinan catatan 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

Ketika digunakan dengan sumber data, fungsi-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 kini berada di Pratinjau Eksperimental (NONAKTIF default) untuk sumber data yang mendukungnya. Jika sumber data tidak mendukung fitur ini, sekarang akan mengirim kueri ke server dan mengambil semua data yang cocok dengan ekspresi filter hingga maksium 500, 2000, Power Apps atau ukuran halaman data. Kemudian, itu akan memperbarui catatan tersebut dan mengirim masing-masing kembali ke server untuk diperbarui.

Sintaks

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

  • DataSource – 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( DataSource, Condition1, ChangeRecord1 [, Condition2, ChangeRecord2, ... ] )

  • DataSource – wajib. Sumber data yang berisi rekaman atau rekaman yang ingin anda ubah.
  • Condition – Wajib. Rumus yang dievaluasi ke true untuk rekaman atau rekaman yang ingin Anda ubah. Anda dapat menggunakan nama kolom DataSource dalam rumus ini.
  • ChangeRecord – 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:

Contoh Icecream.

Rumus KETERANGAN Hasil
Update( IceCream,
First( Filter( IceCream, Flavor="Cokelat" ) ), { ID: 1, Flavor: "Cokelat Mint", Quantity:150 } )
Mengganti rekaman dari sumber data. Mengganti catatan.

Sumber data IceCream telah dimodifikasi.
UpdateIf( IceCream, Quantity > 175, { Quantity: Quantity + 10 } ) Mengubah rekaman yang memiliki Jumlah yang lebih besar dari 175. Bidang Jumlah bertambah hingga 10, dan tidak ada bidang lain yang dimodifikasi. Ubah catatan.

Sumber data IceCream telah dimodifikasi.
Update( IceCream,
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. Ganti catatan ketika kuantitas tidak disediakan.

Sumber data IceCream telah dimodifikasi.
UpdateIf( IceCream, true, { Quantity: 0 } ) Menetapkan nilai properti Jumlah untuk semua rekaman dalam sumber data ke 0. Atur kuantitas untuk semua menjadi 0.

Sumber data IceCream telah dimodifikasi.

Langkah demi langkah

  1. Impor atau buat koleksi bernama Inventaris, dan tampilkan di galeri sebagaimana dijelaskan dalam Tampilkan data di galeri.

  2. Beri nama galeri dengan ProductGallery.

  3. Tambahkan panel geser bernama UnitsSold, dan atur properti Maks ke ekspresi ini:
    ProductGallery.Selected.UnitsInStock

  4. Tambahkan tombol dan atur properti OnSelect ke formula ini:
    UpdateIf(Inventory, ProductName = ProductGallery.Selected.ProductName, {UnitsInStock:UnitsInStock-UnitsSold.Value})

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