Tõrketeade, kui püüate avada lingitud SharePointi tabeli Access 2007: "Microsoft Office Accessi andmebaasimootor ei leia objekti"


Sümptomid


Kui proovite avada lingitud Microsoft Windows SharePoint Services tabeli Microsoft Office Access 2007, võidakse kuvada tõrketeade, mis sarnaneb järgmise tõrketeate:
Microsoft Office Accessi andmebaasimootor ei leidnud objekti 'objekti nime'. Veenduge, et objekt on olemas ja et hääldate selle nime ja tee nime õigesti.
Lingitud SharePointi tabel avaneb siiski edukalt. See tõrketeade kuvatakse pärast seda, kui värskendate lingitud SharePointi tabeli programmiliselt rohkem kui üks kord järjest Andmepääsuobjektid (DAO) Refreshlink meetodi abil.

Põhjus


See probleem ilmneb seetõttu, et Refreshlink meetod ignoreerib tabeli seosed, mis on loodud eelmise kõne meetod.

Lahendus


Selle probleemi lahendamiseks kustutage programmiliselt tabeli seosed, enne kui kasutate Refreshlink meetod lingitud tabeli värskendamiseks.

Proovi alamrutiin seoste kustutamiseks

Alamrutiin abil saate kustutada värskendatud lingi seosed, toimige järgmiselt.
  1. Sisestage järgmine kood mooduli Microsoft Visual Basic for Applications (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. Lähtekoodi, kus nimetatakse refreshlink meetod, sisestage järgmine kood vahetult enne refreshlink lähtekoodi rida:
    RemoveInvalidRelationships "WSSLink"
    Märkus "WSSLink" on lingitud tabeli nimi, mida värskendatakse Refreshlink meetod.

Olek


Microsoft on kinnitanud, et see probleem on Microsofti toodetes, mis on loetletud jaotises "kehtib järgmiste toodete kohta".