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:

Aiskrim.

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 )