Problembeschreibung
Wenn Sie versuchen, eine verknüpfte Microsoft Windows SharePoint Services-Tabelle in Microsoft Office Access 2007 zu öffnen, wird möglicherweise eine Fehlermeldung angezeigt, die der folgenden Fehlermeldung ähnelt:
Das Microsoft Office Access-Datenbankmodul konnte das Objekt'Objektname'nicht finden. Stellen Sie sicher, dass das Objekt vorhanden ist und dass Sie seinen Namen und den Pfadnamen richtig buchstabieren.
Die verknüpfte SharePoint-Tabelle wird jedoch erfolgreich geöffnet. Diese Fehlermeldung tritt auf, nachdem Sie die verknüpfte SharePoint-Tabelle mithilfe der Data Access Objects (DAO) RefreshLink-Methode programmgesteuert mehr als einmal hintereinander aktualisiert haben.
Ursache
Dieses Problem tritt auf, weil die RefreshLink-Methode die Tabellenbeziehungen ignoriert, die während des vorherigen Aufrufs der Methode erstellt wurden.
Problemumgehung
Um dieses Problem zu umgehen, löschen Sie programmgesteuert die Tabellenbeziehungen, bevor Sie die RefreshLink-Methode verwenden, um die verknüpfte Tabelle zu aktualisieren.
Beispielunterroutine zum Löschen der Beziehungen
Führen Sie die folgenden Schritte aus, um eine Unterroutine zum Löschen der Beziehungen für den aktualisierten Link zu verwenden:
-
Fügen Sie den folgenden Code in ein Modul in Microsoft Visual Basic for Applications (VBA) ein:
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
-
Fügen Sie im Quellcode, in dem die RefreshLink-Methode aufgerufen wird, den folgenden Code unmittelbar vor der RefreshLink-Quellcodezeile ein:
RemoveInvalidRelationships "WSSLink"
Hinweis "WSSLink" ist der Name der verknüpften Tabelle, die von der RefreshLink-Methode aktualisiert wird.
Status
Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den in diesem Artikel genannten Microsoft-Produkten handelt.