Felmeddelande när du försöker öppna en länkad SharePoint-tabell i Access 2007: "Det gick inte att hitta objektet i Microsoft Office Access-databasmotorn"

Symptom

När du försöker öppna en länkad Microsoft Windows SharePoint Services-tabell i Microsoft Office Access 2007, kan du få ett felmeddelande av följande slag:

Microsoft Office Access-databasmotorn kunde inte hitta objektetsobjektnamn. Kontrollera att objektet finns och att du stavar dess namn och sökvägsnamnet korrekt.

Den länkade SharePoint-tabellen öppnas dock utan problem. Det här felmeddelandet visas när du uppdaterar den länkade SharePoint-tabellen programmässigt mer än en gång i en rad med hjälp av metoden Data Access Objects (DAO) Refreshlink .

Orsak

Det här problemet uppstår eftersom metoden Refreshlink ignorerar tabellrelationer som skapas under föregående anrop till metoden.

Lösning

Undvik det här problemet genom att programmässigt ta bort tabellrelationerna innan du använder metoden Refreshlink för att uppdatera den länkade tabellen.

Exempel på subrutin för att ta bort relationerna

Så här använder du en subrutin för att ta bort relationerna för den uppdaterade länken:

  1. Infoga följande kod i en modul i 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. I källkoden där metoden refreshlink anropas infogar du följande kod omedelbart före refreshlink-källkodens rad:

    RemoveInvalidRelationships "WSSLink"

    Notera "WSSLink" är namnet på den länkade tabell som uppdateras av metoden Refreshlink .

Status

Microsoft har bekräftat att detta är ett problem i Microsoft-produkterna som nämns i avsnittet "gäller".

Behöver du mer hjälp?

Utöka dina kunskaper
Utforska utbildning
Få nya funktioner först
Anslut till Microsoft Insiders

Hade du nytta av den här informationen?

Hur nöjd är du med översättningskvaliteten?

Vad påverkade din upplevelse?

Har du ytterligare feedback? (Valfritt)

Tack för din feedback!

×