Ambil perhatian
Akses ke halaman ini memerlukan kebenaran. Anda boleh cuba log masuk atau menukar direktori.
Akses ke halaman ini memerlukan kebenaran. Anda boleh cuba menukar direktori.
Terpakai kepada: Apl
kanvas Apl dipacu model
Memberi maklumat ralat untuk perubahan sebelumnya untuk sumber data.
Ikhtisar
Errors boleh berlaku apabila rekod sumber data diubah. 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 mengembalikan nilai ralat hasil daripada operasi. Errors boleh dikesan dengan IsError dan digantikan atau ditindas dengan IfError dan App.OnError seperti biasa. Lihat Pengendalian Ralat untuk mendapatkan maklumat lanjut.
- Selepas operasi, fungsi ini Errors juga akan mengembalikan ralat untuk operasi sebelumnya. Ia boleh berguna untuk memaparkan mesej ralat pada skrin borang tanpa perlu menangkap ralat dalam pembolehubah 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 mengembalikan Errorsjadual ralat yang mengandungi lajur berikut:
- Rekod. Rekod dalam sumber data yang mempunyai ralat. Jika ralat berlaku semasa penciptaan rekod, lajur ini kosong.
- Lajur. Lajur yang menyebabkan ralat, jika ralat boleh dikaitkan dengan lajur tunggal. Jika tidak, ia kosong.
- Mesej. Perihalan ralat. Rentetan ralat ini boleh dipaparkan untuk pengguna akhir. Mesej ini mungkin dijana oleh sumber data dan boleh panjang 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 isu pengesahan umum dikesan, yang tidak sesuai dengan salah satu jenis lain. |
Errors boleh dikembalikan untuk keseluruhan sumber data atau hanya untuk baris yang dipilih dengan menyediakan argumen Rekod kepada fungsi.
Tampalan atau fungsi data lain mungkin mengembalikan nilai kosong jika, sebagai contoh, rekod tidak dapat dicipta. Anda boleh menghantar kosong kepada Errors, dan ia mengembalikan maklumat ralat yang sesuai dalam kes ini. Penggunaan fungsi data seterusnya pada sumber data yang sama mengosongkan maklumat ralat ini.
Jika tiada ralat, jadual yang Errors mengembalikan akan kosong dan boleh diuji dengan fungsi IsEmpty.
Sintaks
Errors( Sumber Data [, Rekod ] )
- Sumber Data– 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 bekerja dengan sumber data IceCream , sumber data yang Power Apps akan cuba mengesan konflik:
Nota
Power Apps tidak cuba mengesan konflik untuk perubahan pada jadual Dataverse.
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( IceCream, Flavor = "Chocolate" ) } ) )
Untuk membuat perubahan ini dalam sumber data, fungsi Patch digunakan:
- Tampalan ( IceCream, EditRecord, Gallery.Updates )
Di mana Gallery.Updates menilai kepada { Quantity: 90 }, kerana hanya sifat Quantity telah diubah suai.
Malangnya, sebelum fungsi Patch dipanggil, individu lain mengubah suai Kuantiti untuk Coklat hingga 80. Oleh kerana ini adalah sumber data yang disokong untuk pengesanan konflik, Power Apps akan mengesan ini dan tidak membenarkan perubahan yang bercanggah berlaku. Anda boleh menyemak keadaan ini dengan formula:
- IsEmpty( Errors( Aiskrim, EditRecord ) )
Yang mengembalikan palsu, kerana fungsi mengembalikan Errors jadual berikut:
| Rekod | Lajur | Mesej | Ralat |
|---|---|---|---|
| { Perisa: "Coklat", Kuantiti: 100 } | Kosong | "Pengguna lain telah mengubah suai rekod yang anda cuba ubah suai. 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 = First(Errors( IceCream, EditRecord )). Mesej
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( Lookup( Errors( IceCream, EditRecord ), Ralat = ErrorKind.Conflict ) ) - Untuk mengembalikan perubahan, yang pengguna pilih butang, tetapkan sifat OnSelect kepada formula ini:
ReloadButton.OnSelect = Revert( IceCream, EditRecord )