ظهور رسالة خطا عند محاولة فتح جدول SharePoint مرتبط في Access 2007: "مشغل قاعده بيانات Microsoft Office Access تعذر العثور علي الكائن"


الأعراض


عند محاولة فتح جدول Microsoft Windows SharePoint services مرتبطة في Microsoft Office Access 2007 قد تتلقي رسالة خطا مشابهه لرسالة الخطا التالية:
تعذر علي مشغل قاعده بيانات Microsoft Office Access العثور علي الكائن 'اسم الكائن'. تاكد من وجود الكائن ومن تهجئه اسمه واسم المسار بشكل صحيح.
ومع ذلك ، يتم فتح جدول SharePoint المرتبطة بنجاح. تحدث رسالة الخطا هذه بعد تحديث جدول SharePoint المرتبطة برمجيا أكثر من مره واحده في صف باستخدام أسلوب تحديث كائنات الوصول إلى البيانات (DAO).

السبب


تحدث هذه المشكلة نظرا لان الأسلوب ريريلينك يتجاهل علاقات الجدول التي تم إنشاؤها اثناء استدعاء السابقة إلى الأسلوب.

الحل البديل


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

عينه روتين فرعي لحذف العلاقات

لاستخدام روتين فرعي لحذف علاقات الارتباط تحديث اتبع الخطوات التالية:
  1. ادراج التعليمه البرمجية التالية في وحده نمطيه في Microsoft Visual Basic للتطبيقات (VBA):
    Public Sub RemoveInvalidRelationships(strTableName As String)    On Error Resume Next    Dim cnt As Integer    Dim i As Integer    Dim bForeignTable As Boolean    Dim bTable As Boolean    Dim td As TableDef        cnt = CurrentDb.Relations.Count - 1    ' Go through the relationships collection backwards, to ensure that if we delete one, we will have a valid index    For i = cnt To 0 Step -1        bTable = False        bForeignTable = False        If (StrComp(CurrentDb.Relations(i).Table, strTableName, vbTextCompare) = 0) Then bTable = True        If (StrComp(CurrentDb.Relations(i).ForeignTable, strTableName, vbTextCompare) = 0) Then bForeignTable = True                If bTable Xor bForeignTable Then            ' Determine if either the table or foreign table is the table that we are interested in            ' We will then look at the other table to determine if it exists            ' If it doesn't exist, delete the relationship            If bTable Then                Set td = CurrentDb.TableDefs(CurrentDb.Relations(i).ForeignTable)            Else                Set td = CurrentDb.TableDefs(CurrentDb.Relations(i).Table)            End If                        If Err.Number = 3265 Then                CurrentDb.Relations.Delete CurrentDb.Relations(i).Name            End If            Err.Clear        End If            Next iEnd Sub
  2. في التعليمات البرمجية المصدر حيث يتم استدعاء أسلوب ريريلينك ، قم بادراج التعليمه البرمجية التالية مباشره قبل سطر التعليمات البرمجية المصدر ريريلينك:
    RemoveInvalidRelationships "WSSLink"
    ملاحظه "وسلينك" هو اسم الجدول المرتبط الذي يتم تحديثه بواسطة الأسلوب ريفريلينك .

الحالة


أقرت Microsoft أن هذه المشكلة تحدث في منتجات Microsoft المسردة في المقطع "تنطبق على".