vba - مس-أسيس، فبا ومعالجة الأخطاء





ms-access error-handling access-vba (5)


يمكنك دائما لفة الأداة الخاصة بك مثل رقاقة بيرسون لم. فبا يمكن الوصول في الواقع انها إيد الخاصة من خلال مكتبة ميكروسوفت فيسوال باسيك مكتبة التطبيقات 5.3 . لقد كتبت بضع وحدات الطبقة التي تجعل من السهل على العمل مع نفسي. يمكن العثور عليها على كود مراجعة سي .

يمكنني استخدامه لإدراج On Error GoTo ErrHandler البيانات On Error GoTo ErrHandler المناسبة والثوابت المتعلقة خطأ التعامل مع المخطط. أنا أيضا استخدامه لمزامنة الثوابت مع أسماء الإجراءات الفعلية (إذا كانت أسماء الدالة يجب أن يحدث لتغيير).

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




حل بلدي هو ما يلي:

  1. تثبيت مز-تولس ، إضافة مثيرة جدا للاهتمام ل فبا. لا أنها لم تدفع لي، على أي حال فهو حر.
  2. برنامج رمز معالج خطأ قياسي مثل هذا واحد (انظر مز أدوات القائمة / خيارات / معالج خطأ):
On Error GoTo {PROCEDURE_NAME}_Error
{PROCEDURE_BODY}
On Error GoTo 0
Exit {PROCEDURE_TYPE}

{PROCEDURE_NAME}_Error:
debug.print "#" & Err.Number, Err.description, "l#" & erl, "{PROCEDURE_NAME}", "{MODULE_NAME}"

ويمكن بعد ذلك إضافة رمز الخطأ القياسي هذا تلقائيا إلى كل من الوظائف الخاصة بك عن طريق النقر على الزر المقابل في القائمة مز-تولس. ستلاحظ أننا نشير هنا إلى قيمة / ملكية غير موثقة من فبا (طبعة 2003)، 'إرل'، والتي تقف على "خط الخطأ". لك ذالك! إذا كنت تسأل مز-تولس تلقائيا لرقم الخطوط الخاصة بك من التعليمات البرمجية، 'إرل' ثم تعطيك عدد من الخط حيث حدث الخطأ. سيكون لديك وصف كامل للخطأ في النافذة الفورية، مثل:

#91, Object variable or With block variable not set, l# 30, addNewField, Utilities

وبطبيعة الحال، بمجرد أن تدرك مصلحة النظام، يمكنك التفكير في معالج خطأ أكثر تطورا، التي لن تعرض فقط البيانات في نافذة التصحيح ولكن أيضا:

  1. عرضها كرسالة على الشاشة
  2. إدراج سطر تلقائيا في ملف سجل خطأ مع وصف الخطأ أو
  3. إذا كنت تعمل مع أسيس أو إذا كنت متصلا بقاعدة بيانات، تلقائيا إضافة سجل إلى الجدول Tbl_Error!

وهذا يعني أن كل خطأ ولدت على مستوى المستخدم يمكن تخزينها إما في ملف أو جدول، في مكان ما على الجهاز أو الشبكة. هل نتحدث عن بناء نظام آلي للإبلاغ عن الأخطاء يعمل مع فبا؟




ماذا عن استخدام "إرل"، فإنه سيتم عرض آخر تسمية قبل الخطأ (على سبيل المثال، 10، 20، أو 30)؟

Private Sub mySUB()
On Error GoTo Err_mySUB
10:
    Dim stDocName As String
    Dim stLinkCriteria As String
20:
    stDocName = "MyDoc"
30:
    DoCmd.openform stDocName, acFormDS, , stLinkCriteria    
Exit_mySUB:
    Exit Sub
Err_mySUB:
    MsgBox Err.Number & ": " & Err.Description & " (" & Erl & ")"
    Resume Exit_mySUB
End Sub



حسنا هناك بضعة أدوات من شأنها أن تفعل ما تسأل مز أدوات و فمس شركة تأتي إلى الذهن.

وهي تتضمن أساسا إضافة:

On Error GoTo ErrorHandler

إلى أعلى كل بروك وفي النهاية وضعوا:

ErrorHandler:
  Call MyErrorhandler Err.Number, Err.Description, Err.LineNumber

تسمية مع عادة إلى معالج خطأ عالمي حيث يمكنك عرض وتسجيل رسائل خطأ مخصصة








vba ms-access error-handling access-vba