اذهب الي المحتوي
أوفيسنا

هل يوجد كود واحد لمنع رسائل الخطأ اكسس


f16

الردود الموصى بها

السلام عليكم اخواني الأعزاء 

سؤال : هل يمكن وضع كود واحد في النموذج لمنع ظهور رسائل الخطاء ؟ حتى لا يقوم المستخدم بالدخول على الاكواد والتعديل او مسحها بالخطاء . حيث ما اعرفه هو انه بالأمكان وضع كود ولاكن لا بد من وضعها مع كل كود تقوم بعملة . وما اريد عمله هو كود واحد لجميع الاكواد التي بالنموذج .

ولكم جزيل الشكر 

  • Like 1
رابط هذا التعليق
شارك

اولا ، استخدام معالج الاخطاء Error Handler يعطي رسائل موجهة و منسقة للمستخدم تشعره بحدوث خطأ و تعطيه التفاصيل المتاحة

و في حال عدم استخدام معالج الاخطاء يقوم VBA بتوجيه رسائل الخطأ ، بالمتاح من المعلومات و يوجهك نحو محرر الأكواد للتعرف على موقع الخطأ لتصويبه

ثانيا ، يمكن في بداية كل كود أو في أي مكان مختار ولتعطيل معالج الاخطاء و رسائل النظام ان تستخدم العبارة ( الكود )

On Error Resume Next

و حين ترغب باعادة تفعيل معالج الاخطاء تستخدم مثلا

On Error GoTo PROC_ERR

ويكون في ذيل الكود

PROC_ERR:
  MsgBox "Error " & Err.Number & " " & Err.Description
  Resume PROC_EXIT

ثالثا ، لمعالجة كامل النماذج او التطبيق ، فالامر قيد البحث في مكتبتي ... و اوافيك بالرد

  • Like 3
رابط هذا التعليق
شارك

1 ساعه مضت, أبو آدم said:

يقول معظم أهل هذا العلم

أن الاصح ان يحمل كل اجراء معالج الاخطاء الخاص به

شكرا

اشكرك استاذنا الكريم

كنت راح افتح موضوع جديد بخصوص استفسار

ورأيت هذا الموضوع يحمل نفس الصلة ولكن بختلاف التفصيل

حيث اني اريد أن استفيد من الخطأ في توجيه البرنامج لاجراء حدث معين

الحدث هو عند فتح النموذج

يتم الاتصال بالوحدة النمطية وهي قد تم حذفها او تغييراسم الاجراء 

اريد أن احصل على رقم هذا الخطأ لكن لاتظهر لدي سوى ههذه الرسالة

call.png.2b91d21922fe58e20a20a3ca8dde911f.png

رابط هذا التعليق
شارك

رمز الخطأ 35 

Sub or Function not defined

وهذا رابط البحث عن الحلول عل الانترنت

https://www.google.co.uk/search?q=VBA+Error+35+OR+"Sub+or+Function+not+defined"&gws_rd=ssl

أخي الحبيب لا تظهر لك الرسالة التوضيحية المفصلة برمز الخطأ لان مرسل الرسالة هو VBA وليس معالج الاخطاء الخاص بالاجراء او الكود

و بالتالي يتم تزويدك بالحد الادنى من المعلومات 

  • Like 2
رابط هذا التعليق
شارك

نعم استاذنا الكريم حاولت استخدام  رمز الخطأ 35 للاستفادة منه في إجراء حدث معين ( اغلاق قاعدة البيانات مثلاً ) 

لكن دون فائدة

هل من طريقة للاستافادة من هذا الخطأ في اغلاق  قاعدة البيانات

رابط هذا التعليق
شارك

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

ليست كبقية الأخطاء و لم انجح حتى الآن بصيدها بمعالج الاخطاء او اي حل برمجي آخر لغاية الآن .... فعذرا

لكنني مستمر بالمحاولة باذن الله

  • Like 2
رابط هذا التعليق
شارك

بعد اذن الاستاذ ابو آدم .. لتحديد الرقم الفريد المقترن برسالة الخطأ اضغط على CTRL + SHIFT + I بعد ظهور رسالة الخطأ 

سوف تظهر لك رقم الرسالة في الركن الأيسر السفلي من رسالة الخطأ

رابط هذا التعليق
شارك

6 ساعات مضت, أبو آدم said:

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

ليست كبقية الأخطاء و لم انجح حتى الآن بصيدها بمعالج الاخطاء او اي حل برمجي آخر لغاية الآن .... فعذرا

لكنني مستمر بالمحاولة باذن الله

الله يعطيك العافية استاذنا

2 ساعات مضت, sandanet said:

بعد اذن الاستاذ ابو آدم .. لتحديد الرقم الفريد المقترن برسالة الخطأ اضغط على CTRL + SHIFT + I بعد ظهور رسالة الخطأ 

سوف تظهر لك رقم الرسالة في الركن الأيسر السفلي من رسالة الخطأ

اخي الكريم

تجاوزنا الان رقم الخطأ فقد تم معرفة الرقم 35

الان المطلوب الاستفادة من الخطأ في تنفيذ إجراء محدد ( إغلاق قاعدة البيانات)

رابط هذا التعليق
شارك

5 ساعات مضت, sandanet said:

استخدم الكود التالي مع تغيير رقم رسالة الخطأ


Private Sub Form_Error(DataErr As Integer, Response As Integer)
   If DataErr = 3022 Then
    MsgBox "نص رسالة الخطأ", vbCritical, "..رسالة خطأ.."
    Docmd....
    Response = 0
   End If
End Sub

 

للاسف لم يأتي بنتيجة

رابط هذا التعليق
شارك

إذا كانت أخطاء المحرر لايمكن إختابارها داخل محرر الشفرة؛ فأعتقد أنه من الممكن تصيدها باستخدام الوظيفة ()Eval، إذ أن هذه الوظيفة مهمتها الأساسية هي تقييم التعابير وإعادة النتايج التي تخرج عن تلك التعابير؛فاذا كانت التعبير يحتوي على وظائف وإجراءات مفقودة فإن الوظيفة ()Eval ستعيد رسالة خطأ بالرقم 2425 مفادها "يحتوي التعبير على وظيفة مفقودة".. وبهذا نكون سحبنا الخطأ إلى داخل محرر الشفره وبالتالي يمكننا تصيده بالطريقة المعتادة..

Control VBE Error.accdb

  • Like 1
  • Thanks 2
رابط هذا التعليق
شارك

1 ساعه مضت, أبو إبراهيم الغامدي said:

إذا كانت أخطاء المحرر لايمكن إختابارها داخل محرر الشفرة؛ فأعتقد أنه من الممكن تصيدها باستخدام الوظيفة ()Eval، إذ أن هذه الوظيفة مهمتها الأساسية هي تقييم التعابير وإعادة النتايج التي تخرج عن تلك التعابير؛فاذا كانت التعبير يحتوي على وظائف وإجراءات مفقودة فإن الوظيفة ()Eval ستعيد رسالة خطأ بالرقم 2425 مفادها "يحتوي التعبير على وظيفة مفقودة".. وبهذا نكون سحبنا الخطأ إلى داخل محرر الشفره وبالتالي يمكننا تصيده بالطريقة المعتادة..

Control VBE Error.accdb

استاذنا ابو ابراهيم :fff:

النتائج ممتازة

الله يعطيك ألف عافية

تم تعديل بواسطه kaser906
رابط هذا التعليق
شارك

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information