Bagikan melalui


fungsi Errors

Berlaku untuk: Aplikasi Kanvas Berbasis model aplikasi

Menyajikan informasi kesalahan untuk perubahan sebelumnya pada sumber data.

Gambaran Umum

Errors dapat terjadi ketika rekaman sumber data diubah. Banyak penyebab yang mungkin terjadi, termasuk pemadaman jaringan, izin tidak memadai, dan konflik pengeditan.

Fungsi yang memodifikasi data dalam sumber data, seperti Patch, Collect, Remove, RemoveIf, Update, UpdateIf, and SubmitForm melaporkan kesalahan dalam dua cara:

  • Masing-masing fungsi ini mengembalikan nilai kesalahan sebagai hasil operasi. Errors dapat dideteksi dengan IsError dan diganti atau ditekan dengan IfError dan App.OnError seperti biasa. Untuk informasi lebih lanjut, lihat Penanganan Kesalahan.
  • Setelah operasi, Errors fungsi juga akan mengembalikan kesalahan untuk operasi sebelumnya. Ini dapat berguna untuk menampilkan pesan kesalahan pada layar formulir tanpa perlu mengambil kesalahan dalam variabel status.

Anda dapat menghindari beberapa kesalahan sebelum terjadi dengan menggunakan fungsi Validate dan DataSourceInfo. Lihat bekerja dengan sumber data untuk saran lainnya tentang cara bekerja dengan sumber data dan menghindari kesalahan.

KETERANGAN

Fungsi mengembalikan Errorstabel kesalahan yang berisi kolom berikut:

  • Rekor. Rekaman dalam sumber data yang menyimpan data. Jika terjadi kesalahan selama pembuatan rekaman, kolom ini kosong.
  • Kolom. Kolom yang menyebabkan kesalahan, jika kesalahan dapat dikaitkan ke satu kolom. Jika tidak, kosong.
  • Pesan. Deskripsi kesalahan. String kesalahan ini dapat ditampilkan untuk pengguna akhir. Pesan ini dapat dihasilkan oleh sumber data dan bisa panjang dan berisi nama kolom mentah yang mungkin tidak memiliki arti apa pun untuk pengguna.
  • Kesalahan. Kode kesalahan yang dapat digunakan dalam rumus untuk membantu mengatasi kesalahan:
ErrorKind KETERANGAN
ErrorKind.Conflict Pengguna lain dibuat ke rekaman yang sama, sehingga mengakibatkan konflik perubahan. Gunakan fungsi Refresh untuk memuat ulang rekaman dan coba ubah lagi.
ErrorKind.ConstraintViolation Satu atau beberapa kendala telah dilanggar.
ErrorKind.CreatePermission Upaya dibuat untuk membuat rekaman, dan pengguna saat ini tidak memiliki izin untuk membuat rekaman.
ErrorKind.DeletePermission Upaya dibuat untuk menghapus rekaman, dan pengguna saat ini tidak memiliki izin untuk menghapus rekaman.
ErrorKind.EditPermission Upaya dibuat untuk mengedit rekaman, dan pengguna saat ini tidak memiliki izin untuk mengedit rekaman.
ErrorKind.GeneratedValue Upaya dibuat untuk mengubah kolom yang dihasilkan sumber data secara otomatis.
ErrorKind.MissingRequired Nilai untuk kolom yang diperlukan tidak ada dalam rekaman.
ErrorKind.None Tidak ada kesalahan.
ErrorKind.NotFound Upaya dibuat untuk mengedit atau menghapus rekaman, namun rekaman tidak dapat ditemukan. Pengguna lain mungkin telah mengubah rekaman.
ErrorKind.ReadOnlyValue Upaya dibuat untuk mengubah kolom yang bersifat hanya baca.
ErrorKind.Sync Kesalahan dilaporkan oleh sumber data. Periksa kolom Pesan untuk informasi lebih lanjut.
ErrorKind.Unknown Ada kesalahan, namun dari jenis yang tidak diketahui.
ErrorKind.Validation Ada masalah validasi umum yang terdeteksi, yang tidak sesuai dengan salah satu jenis lainnya.

Errors dapat dikembalikan untuk seluruh sumber data, atau hanya untuk baris yang dipilih dengan menyediakan argumen Rekam ke fungsi.

Patch atau fungsi data lain dapat mengembalikan nilai kosong jika, misalnya, rekaman tidak dapat dibuat. Anda dapat meneruskan kosong ke Errors, dan mengembalikan informasi kesalahan yang sesuai dalam kasus ini. Penggunaan fungsi data berikutnya pada sumber data yang sama menghapus informasi kesalahan ini.

Jika tidak ada kesalahan, tabel yang Errors mengembalikan akan kosong dan dapat diuji dengan fungsi IsEmpty .

Sintaks

Errors( Sumber Data [, Rekaman ] )

  • Sumber Data– Wajib. Sumber data yang diinginkan untuk menghasilkan kesalahan.
  • Record – Opsional. Rekaman spesifik yang diinginkan untuk menghasilkan kesalahan. Jika anda tidak menentukan argumen ini, fungsi akan menghasilkan kesalahan untuk seluruh sumber data.

Contoh

Langkah demi Langkah

Untuk contoh ini, kita akan bekerja dengan sumber data IceCream , sumber data tempat Power Apps akan mencoba mendeteksi konflik:

Es krim.

Nota

Power Apps tidak mencoba mendeteksi konflik untuk perubahan pada tabel Dataverse.

Melalui aplikasi, pengguna memuat rekaman Chocolate ke formulir entri data dan kemudian mengubah nilai Kuantitas menjadi 90. Rekaman yang akan dikerjakan dengan ditempatkan dalam variabel konteksEditRecord:

  • UpdateContext( { EditRecord: LookUp( IceCream, Flavor = "Chocolate" ) } )

Untuk membuat perubahan ini dalam sumber data, fungsi Patch digunakan:

  • Tambalan ( IceCream, EditRecord, Galeri.Pembaruan )

Di mana Gallery.Updates mengevaluasi ke { Kuantitas: 90 }, karena hanya properti Kuantitas yang telah dimodifikasi.

Sayangnya, tepat sebelum fungsi Patch dipanggil, orang lain memodifikasi Kuantitas untuk Chocolate ke 80. Karena ini adalah sumber data yang didukung untuk deteksi konflik, Power Apps akan mendeteksi hal ini dan tidak memungkinkan perubahan yang bertentangan terjadi. Anda dapat memeriksa situasi ini dengan rumus:

  • IsEmpty( Errors(IceCream, EditRecord ) )

Yang mengembalikan false, karena Errors fungsi mengembalikan tabel berikut:

Data Kolom Pesan Kesalahan
{ Flavor: "Chocolate", Kuantitas: 100 } Kosong "Pengguna lain telah memodifikasi rekaman yang Anda coba modifikasi. Muat ulang rekaman dan coba lagi." ErrorKind.Conflict

Anda dapat menempatkan label pada formulir untuk menampilkan kesalahan ini kepada pengguna.

  • Untuk menampilkan kesalahan, atur properti Teks label ke rumus ini:
    Label.Text = First(Errors( IceCream, EditRecord )). Pesan

Anda juga dapat menambahkan tombol Muat ulang pada formulir, sehingga pengguna dapat secara efisien menangani konflik.

  • Untuk menampilkan tombol hanya ketika terjadi konflik, atur properti Terlihat tombol ke rumus ini:
    ! IsEmpty( Lookup( Errors( IceCream, EditRecord ), Error = ErrorKind.Conflict )
  • Untuk mengembalikan perubahan, yang dipilih pengguna tombol, atur properti OnSelect-nya ke rumus ini:
    ReloadButton.OnSelect = Kembali( IceCream, EditRecord )