Fungsi kesalahan

Berlaku untuk: Aplikasi kanvas Aplikasi berdasarkan model

Menyajikan informasi kesalahan untuk perubahan sebelumnya pada sumber data.

Gambaran Umum

Kesalahan dapat terjadi bila 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:

  • Setiap fungsi ini akan menghasilkan nilai kesalahan sebagai hasil dari operasi. Kesalahan dapat terdeteksi dengan Is Errors dan mengganti atau diredam dengan IfError dan App.OnError seperti biasa. Untuk informasi lebih lanjut, lihat Penanganan Kesalahan.
  • Setelah operasi, fungsi Errors juga akan mengembalikan kesalahan untuk operasi sebelumnya. Ini dapat berguna untuk menampilkan pesan kesalahan pada layar formulir tanpa harus 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 Errors menghasilkan tabel kesalahan yang berisi kolom berikut:

  • Rekaman. Rekaman dalam sumber data yang menyimpan data. Jika kesalahan terjadi selama pembuatan rekaman, kolom ini akan kosong.
  • Kolom. Kolom yang menyebabkan kesalahan, jika kesalahan dapat dikaitkan ke satu kolom. Jika tidak, ini akan kosong.
  • Pesan. Deskripsi kesalahan. String kesalahan ini dapat ditampilkan untuk pengguna akhir. Perhatikan bahwa pesan ini mungkin dihasilkan oleh sumber data dan isinya dapat panjang dan berisi nama kolom mentah yang mungkin tidak memiliki arti pada 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 cocok dengan salah satu jenis lainnya.

Kesalahan dapat dihasilkan untuk seluruh sumber data, atau untuk hanya baris yang dipilih dengan memberikan argumen Rekaman ke fungsi.

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

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

Sintaks

Errors( DataSource [, Record ] )

  • DataSource – 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, kami akan bekerja dengan sumber data IceCream:

Es krim.

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, Rasa = "Cokelat" ) } )

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

  • Patch( IceCream, EditRecord, Gallery.Updates )

jika Gallery.Updates mengevaluasi ke { Quantity: 90 }, karena hanya properti Kuantitas telah dimodifikasi.

Sayangnya, tepat sebelum fungsi Patch dipanggil, orang lain memodifikasi Kuantitas untuk Chocolate ke 80. Power Apps akan mendeteksi ini dan tidak mengizinkan perubahan yang bertentangan terjadi. Anda dapat memeriksa situasi ini dengan rumus:

  • IsEmpty( Errors( IceCream, EditRecord ) )

yang menghasilkan false, karena fungsi Errors menghasilkan tabel berikut:

Data Kolom Pesan Kesalahan
{ Flavor: "Chocolate", Quantity: 100 } kosong "Pengguna lain telah memodifikasi rekaman yang Anda coba modifikasi. Muat ulang rekaman, lalu 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 )).Message

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 dengan pengguna memilih tombol, atur properti OnSelect ke rumus ini:
    ReloadButton.OnSelect = Revert( IceCream, EditRecord )