مشاركة عبر


Errors دالة

ينطبق على: تطبيقات اللوحة التي تستند إلى نموذج التطبيقات

توفير معلومات عن الخطأ للتغييرات السابقة إلى مصدر البيانات.

النظرة العامة

Errors يمكن أن يحدث عند تغيير سجل مصدر بيانات. هناك العديد من الأسباب المحتملة، بما في ذلك انقطاع الشبكة والأذونات غير الكافية وتعديل التعارضات.

الدوال التي تعمل على تعديل البيانات في مصادر البيانات، مثل Patch وCollect وRemove وRemoveIf وUpdate وUpdateIf وSubmitForm تبلغ عن الأخطاء بطريقتين:

  • تقوم كل دالة من هذه الدالات بإرجاع قيمة خطأ كنتيجة للعملية. Errors يمكن اكتشافها باستخدام IsError واستبدالها أو منعها باستخدام IfErrorوApp.OnError كالمعتاد. راجع التعامل مع الأخطاء لمزيد من المعلومات.
  • بعد العملية، سترجع الدالة Errors أيضا أخطاء العمليات السابقة. قد يكون من المفيد عرض رسالة الخطأ على شاشة نموذج دون الحاجة إلى التقاط الخطأ في متغير حالة.

يمكنك تجنب بعض الأخطاء قبل حدوثها باستخدام الدالتين Validate وDataSourceInfo. راجع التعامل مع مصادر البيانات للحصول على مزيد من الاقتراحات حول كيفية التعامل مع الأخطاء وتجنبها.

‏‏الوصف

ترجع Errors الدالة جدول أخطاء يحتوي على الأعمدة التالية:

  • سجل. السجل في مصدر البيانات الذي به الخطأ. إذا حدث الخطأ أثناء إنشاء سجل، يكون هذا العمود فارغا.
  • عمود. العمود الذي تسبب في الخطأ، إذا كان يمكن إرجاع الخطأ إلى عمود واحد. إذا لم يكن الأمر كذلك، فهي فارغة.
  • رسالة. وصف الخطأ. يمكن عرض سلسلة الخطأ هذه للمستخدم النهائي. قد يتم إنشاء هذه الرسالة بواسطة مصدر البيانات وقد تكون طويلة وتحتوي على أسماء أعمدة أولية قد لا يكون لها أي معنى للمستخدم.
  • خطأ. رمز خطأ يمكن استخدامه في الصيغ للمساعدة في حل الخطأ:
ErrorKind ‏‏الوصف
ErrorKind.Conflict تم إجراء تغيير آخر على نفس السجل، مما أدى إلى تعارض في التغيير. استخدم وظيفة Refresh لإعادة تحميل السجل، وحاول إجراء التغيير مرة أخرى.
ErrorKind.ConstraintViolation تم انتهاك قيد واحد أو أكثر.
ErrorKind.CreatePermission جرت محاولة لإنشاء سجل، وليس لدى المستخدم الحالي إذن لإنشاء السجلات.
ErrorKind.DeletePermission جرت محاولة لحذف سجل، وليس لدى المستخدم الحالي إذن لحذف السجلات.
ErrorKind.EditPermission جرت محاولة لتحرير سجل، وليس لدى المستخدم الحالي إذن لتحرير السجلات.
ErrorKind.GeneratedValue جرت محاولة لتغيير عمود ينشئه مصدر البيانات تلقائيًا.
ErrorKind.MissingRequired قيمة العمود المطلوب مفقودة من السجل.
ErrorKind.None لا يوجد خطأ.
ErrorKind.NotFound جرت محاولة لتحرير سجل أو حذفه، ولكن تعذر العثور على السجل. ربما قام مستخدم آخر بتغيير السجل.
ErrorKind.ReadOnlyValue جرت محاولة لتغيير عمود للقراءة فقط.
ErrorKind.Sync تم الإبلاغ عن خطأ من قِبل مصدر البيانات. تحقق من عمود الرسالة لمزيد من المعلومات.
ErrorKind.Unknown حدث خطأ، ولكن من نوع غير معروف.
ErrorKind.Validation تم الكشف عن مشكلة عامة في التحقق من الصحة، لم تناسب أحد الأنواع الأخرى.

Errors يمكن إرجاعها لمصدر البيانات بأكمله، أو لصف محدد فقط عن طريق توفير وسيطة السجل للدالة.

قد ترجع وظيفة التصحيح أو دالة بيانات أخرى قيمة فارغة إذا تعذر إنشاء سجل، على سبيل المثال. يمكنك تمرير فارغ إلى Errors، وإرجاع معلومات الخطأ المناسبة في هذه الحالات. يؤدي الاستخدام اللاحق لوظائف البيانات على نفس مصدر البيانات إلى مسح معلومات الخطأ هذه.

إذا لم تكن هناك أخطاء، سيكون الجدول الذي Errors يرجع فارغا ويمكن اختباره باستخدام الدالة IsEmpty .

بناء الجملة

Errors( DataSource [, Record ] )

  • DataSource – مطلوب. مصدر البيانات الذي تريد إرجاع الأخطاء له.
  • سجل - اختياري. سجل محدد تريد إرجاع أخطاء له. إذا لم تحدد هذه الوسيطة، فستُرجع الوظيفة أخطاء لمصدر البيانات بالكامل.

الأمثلة

خطوة بخطوة

على سبيل المثال، سنعمل مع مصدر بيانات IceCream ، وهو مصدر بيانات سيحاول Power Apps اكتشاف التعارضات له:

آيس كريم.

إشعار

لا يحاول Power Apps الكشف عن تعارضات التغييرات في جداول Dataverse.

من خلال التطبيق، يقوم المستخدم بتحميل سجل الشوكولاتة في نموذج إدخال البيانات ثم يغير قيمة الكمية إلى 90. يتم وضع السجل المراد التعامل معه في متغير السياقEditRecord:

  • UpdateContext ( { EditRecord: LookUp (آيس كريم ، نكهة = "شوكولاتة") } )

ولإجراء هذا التغيير في مصدر البيانات، يتم استخدام الدالة Patch:

  • التصحيح (آيس كريم ، إديت ريكورد ، معرض.تحديثات)

حيث يتم تقييم Gallery.Updates إلى { Quantity: 90 }، حيث تم تعديل خاصية Quantity فقط.

لسوء الحظ، قبل إلغاء وظيفة Patch، يقوم شخص آخر بتعديل الكمية لشوكولاتة 80. نظرا لأن هذا مصدر بيانات معتمد للكشف عن التعارضات، ستكتشف Power Apps هذا ولن تسمح بحدوث التغيير المتعارض. يمكنك البحث عن هذا الموقف باستخدام الصيغة:

  • IsEmpty( Errors( IceCream, EditRecord ) )

الذي يرجع خطأ، لأن الدالة Errors أرجعت الجدول التالي:

السجل العمود رسالة خطأ
{ نكهة: "الشوكولاتة"، الكمية: 100 } خلبي "قام مستخدم آخر بتعديل السجل الذي تحاول تعديله. أعد تحميل السجل وحاول مرة أخرى." ErrorKind.Conflict

يمكنك وضع تسمية على النموذج لإظهار هذا الخطأ للمستخدم.

  • لإظهار الخطأ، قم بتعيين خاصية Text الخاصة بالتسمية إلى هذه الصيغة:
    Label.Text = First(Errors( IceCream, EditRecord )). رسالة

يمكنك أيضًا إضافة الزر إعادة تحميل في النموذج، بحيث يستطيع المستخدم حل التعارض بكفاءة.

  • لإظهار الزر فقط عند حدوث تعارض، قم بتعيين خاصية Visible الخاصة بالزر إلى هذه الصيغة:
    ! IsEmpty( Lookup( Errors( IceCream, EditRecord ), Error = ErrorKind.Conflict ) )
  • لإعادة التغيير، الذي يحدده المستخدم الزر، قم بتعيين الخاصية OnSelect إلى هذه الصيغة:
    ReloadButton.OnSelect = عودة (آيس كريم ، إديت ريكورد)