ms access - مشكلة - الوصول فبا: هل من الممكن إعادة تعيين معالجة الخطأ



حل مشكلة تنسيق قاعدة البيانات لا يمكن التعرف عليه (3)

أنا أستخدم في الجزء الأول من برنامجي

على خطأ الذهاب للبدء

لنفترض في الجزء الثاني أنا مرة أخرى باستخدام

خطأ في الصفحة، إذهب للتالي

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

Set objexcel = CreateObject("excel.Application")
                     objexcel.Visible = True
                     On Error GoTo Openwb
                     wbExists = False
                     Set wbexcel = objexcel.Workbooks.Open("C:\REPORT3.xls")
                     Set objSht = wbexcel.Worksheets("Sheet1")
                     objSht.Activate
                     wbExists = True
Openwb:

                     On Error GoTo 0
                     If Not wbExists Then
                     objexcel.Workbooks.Add
                     Set wbexcel = objexcel.ActiveWorkbook
                     Set objSht = wbexcel.Worksheets("Sheet1")

                     End If

                     On Error GoTo 0

Set db = DBEngine.opendatabase("C:\book.mdb")
Set rs = db.OpenRecordset("records")

Set rs2 = CreateObject("ADODB.Recordset")
rs2.ActiveConnection = CurrentProject.Connection


For Each tdf In CurrentDb.TableDefs

   If Left(tdf.Name, 4) <> "MSys" Then
        rs.MoveFirst
        strsql = "SELECT * From [" & tdf.Name & "] WHERE s=15 "

        Do While Not rs.EOF
            On Error Resume Next

            rs2.Open strsql 

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

https://src-bin.com


Answer #1

تحتاج إلى مسح الخطأ. جرب وضع هذه الشفرة في:

If Err.Number > 0 Then
    Err.Clear
End If

يمكنك أيضا استخدام Err.Number لمعالجة حالات خطأ معينة.


Answer #2

فمن الأفضل دائما تقريبا تجنب الأخطاء، بدلا من التعامل معها. فمثلا:

Set objexcel = CreateObject("excel.Application")
objexcel.Visible = True

'On Error GoTo Openwb '
'wbExists = False '

If Dir("C:\REPORT3.xls") = "" Then
    objexcel.Workbooks.Add
    Set wbexcel = objexcel.ActiveWorkbook
    Set objSht = wbexcel.Worksheets("Sheet1")
Else
    Set wbexcel = objexcel.Workbooks.Open("C:\REPORT3.xls")
    Set objSht = wbexcel.Worksheets("Sheet1")
End If

objSht.Activate
'wbExists = True '