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

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

قام بنشر

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

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

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

  • 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 للاستفادة منه في إجراء حدث معين ( اغلاق قاعدة البيانات مثلاً ) 

لكن دون فائدة

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

قام بنشر
1 دقيقه مضت, أبو آدم said:

شكرا لانتظارك حتى الغد

إن غداً لناظره قريب

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

قام بنشر

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

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

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

  • Like 2
قام بنشر

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

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

قام بنشر
6 ساعات مضت, أبو آدم said:

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

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

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

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

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

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

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

اخي الكريم

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

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

قام بنشر

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

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

 

قام بنشر
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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

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

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

Important Information