Fungsi ralat
Digunakan pada: Aplikasi kanvas Apl berpandukan model
Memberi maklumat ralat untuk perubahan sebelumnya untuk sumber data.
Ikhtisar
Ralat boleh berlaku apabila rekod sumber data berubah. Banyak sebab yang mungkin berlaku termasuk gangguan rangkaian, keizinan yang tidak mencukupi dan konflik pengeditan.
Fungsi yang mengubah suai data dalam sumber data, seperti Patch, Collect, Remove, RemoveIf, Update, UpdateIf dan SubmitForm melaporkan ralat dalam dua cara:
- Setiap fungsi ini akan mengembalikan nilai ralat hasil daripada operasi itu. Ralat boleh dikesan dengan IsError dan digantikan atau disekat dengan IfError dan App.OnError seperti biasa. Lihat Pengendalian Ralat untuk mendapatkan maklumat lanjut.
- Selepas operasi, fungsi Errors juga akan mengembalikan ralat untuk operasi sebelumnya. Ini berguna untuk memaparkan mesej ralat pada skrin borang tanpa perlu merekodkan ralat dalam pemboleh ubah keadaan.
Anda boleh mengelakkan beberapa ralat sebelum ia berlaku dengan menggunakan fungsi Validate dan DataSourceInfo functions. Lihat kerja dengan sumber data untuk lebih banyak cadangan tentang cara bekerja dan mengelakkan ralat.
Penerangan
Fungsi Errors akan mengembalikan jadual ralat yang mengandungi lajur berikut:
- Rekod. Rekod dalam sumber data yang mempunyai ralat. Jika ralat berlaku semasa penciptaan rekod, lajur ini akan menjadi kosong.
- Lajur. Lajur yang menyebabkan ralat, jika ralat boleh dikaitkan dengan lajur tunggal. Jika tidak, ini akan menjadi kosong.
- Mesej. Perihalan ralat. Rentetan ralat ini boleh dipaparkan untuk pengguna akhir. Beri perhatian bahawa mesej ini mungkin dijana oleh sumber data dan boleh menjadi dan mengandungi nama lajur mentah yang mungkin tidak mempunyai sebarang makna kepada pengguna.
- Ralat. Kod ralat yang boleh digunakan dalam formula untuk membantu menyelesaikan ralat:
ErrorKind | Penerangan |
---|---|
ErrorKind.Conflict | Perubahan lain telah dibuat pada rekod yang sama, menyebabkan konflik perubahan. Gunakan fungsi Refresh untuk muat semula rekod dan cuba ubah semula. |
ErrorKind.ConstraintViolation | Satu atau lebih kekangan telah dilanggar. |
ErrorKind.CreatePermission | Percubaan dibuat untuk mencipta rekod dan pengguna semasa tidak mempunyai keizinan untuk mencipta rekod. |
ErrorKind.DeletePermission | Percubaan dibuat untuk memadam rekod dan pengguna semasa tidak mempunyai keizinan untuk memadam rekod. |
ErrorKind.EditPermission | Percubaan dibuat untuk mengedit rekod dan pengguna semasa tidak mempunyai keizinan untuk mengedit rekod. |
ErrorKind.GeneratedValue | Percubaan dilakukan untuk mengubah lajur yang dijana oleh sumber data secara automatik. |
ErrorKind.MissingRequired | Nilai untuk lajur diperlukan hilang dari rekod. |
ErrorKind.None | Tiada ralat. |
ErrorKind.NotFound | Percubaan dilakukan untuk mengedit atau memadam rekod tetapi rekod itu tidak dapat ditemui. Pengguna lain mungkin telah mengubah rekod. |
ErrorKind.ReadOnlyValue | Percubaan dibuat untuk mengubah lajur yang baca sahaja. |
ErrorKind.Sync | Ralat dilaporkan oleh sumber data. Semak lajur Mesej untuk maklumat lanjut. |
ErrorKind.Unknown | Terdapat ralat, tetapi tidak diketahui jenis. |
ErrorKind.Validation | Terdapat masalah pengesahan umum yang dikesan, yang tidak sesuai dengan jenis yang lain. |
Ralat boleh dikembalikan untuk keseluruhan sumber data atau hanya untuk baris yang dipilih dengan memberikan argumen Rekod kepada fungsi.
Patch atau fungsi data lain mungkin mengembalikan nilai blank jika, sebagai contoh, rekod tidak dapat dicipta. Anda boleh meluluskan kosong pada Ralat dan akan mengembalikan maklumat ralat yang sesuai dalam kes ini. Penggunaan fungsi data seterusnya pada sumber data yang sama akan mengosongkan maklumat ralat ini.
Jika tiada ralat, jadual yang akan mengembalikan Ralat akan menjadi kosong dan boleh diuji dengan fungsi IsEmpty.
Sintaks
Ralat( DataSource [, Rekod ] )
- DataSource – Diperlukan. Sumber data yang anda mahu kembalikan ralat.
- Rekod – Pilihan Rekod tertentu yang anda mahu mengembalikan ralat. Jika anda tidak menentukan argumen ini, fungsi akan mengembalikan ralat untuk keseluruhan sumber data.
Contoh
Langkah demi Langkah
Untuk contoh ini, kami akan bekerjasama dengan sumber data Ais Krim:
Melalui aplikasi, pengguna akan memuatkan rekod Coklat ke dalam borang entri data dan kemudian mengubah nilai Kuantiti kepada 90. Rekod yang akan digunakan diletakkan dalam pemboleh ubah konteksEditRecord:
- UpdateContext( { EditRecord: LookUp( Ais Krim, Perisa = "Coklat" ) } )
Untuk membuat perubahan ini dalam sumber data, fungsi Patch digunakan:
- Tampalan( Ais Krim, EditRecord, Gallery.Updates )
yang mana Gallery.Updates dinilai untuk { Kuantiti: 90 } kerana hanya sifat Kuantiti yang telah diubah suai.
Malangnya, sebelum fungsi Patch dipanggil, individu lain mengubah suai Kuantiti untuk Coklat hingga 80. Power Apps akan mengesan ini dan tidak membenarkan perubahan berkonflik untuk berlaku. Anda boleh menyemak keadaan ini dengan formula:
- IsEmpty( Ralat( Ais Krim, EditRecord ) )
yang akan mengembalikan palsu kerana fungsi Errors mengembalikan jadual berikut:
Rekod | Lajur | Mesej | Ralat |
---|---|---|---|
{ Perisa: "Coklat", Kuantiti: 100 } | blank | "Pengguna lain telah mengubah suai rekod yang anda cuba ubah suai. Sila muat semula rekod dan cuba lagi. " | ErrorKind.Conflict |
Anda boleh meletakkan label pada borang untuk menunjukkan ralat ini kepada pengguna.
- Untuk menunjukkan ralat, tetapkan sifat Teks label untuk formula ini:
Label.Text = Pertama(Ralat( Ais Krim, EditRecord )).Message
Anda juga boleh menambah butang Muat Semula pada borang, supaya pengguna boleh menyelesaikan konflik dengan berkesan.
- Untuk menunjukkan butang hanya apabila konflik berlaku, tetapkan sifat Kelihatan butang untuk formula ini:
!IsEmpty( Carian( Ralat( Ais Krim, EditRecord ), Ralat = ErrorKind.Conflict ) ) - Untuk mengembalikan perubahan yang pengguna pilih butang, tetapkan sifat OnSelect untuk formula ini:
ReloadButton.OnSelect = Kembali( Ais Krim, EditRecord )