Messaggio di errore quando si tenta di aprire una tabella di SharePoint collegata in Access 2007: "Il modulo di gestione di database di Microsoft Office Access non è riuscito a trovare l'oggetto"

Sintomi

Quando si tenta di aprire una tabella collegata di Microsoft Windows SharePoint Services in Microsoft Office Access 2007, è che venga visualizzato un messaggio di errore analogo al seguente:

Il modulo di gestione di database di Microsoft Office Access non è riuscito a trovare l'oggetto 'Nome oggetto'. Assicurarsi che l'oggetto esista e che il nome e il percorso siano stati digitati correttamente.

Tuttavia, la tabella di SharePoint collegata viene aperta correttamente. Questo messaggio di errore si verifica dopo l'aggiornamento della tabella di SharePoint collegata a livello di codice più di una volta in una riga utilizzando il metodo RefreshLink (Data Access Objects).

Causa

Questo problema si verifica perché il metodo RefreshLink ignora le relazioni di tabella create durante la chiamata precedente al metodo.

Soluzione alternativa

Per risolvere questo problema, eliminare a livello di codice le relazioni di tabella prima di utilizzare il RefreshLink metodo per aggiornare la tabella collegata.

Sottoroutine di esempio per eliminare le relazioni

Per utilizzare una subroutine per eliminare le relazioni per il collegamento aggiornato, attenersi alla seguente procedura:

  1. Inserire il codice seguente in un modulo in Microsoft Visual Basic, Applications Edition (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. Nel codice sorgente in cui viene chiamato il metodo RefreshLink, inserire il codice seguente immediatamente prima della riga del codice sorgente RefreshLink:

    RemoveInvalidRelationships "WSSLink"

    Nota: "WSSLink" è il nome della tabella collegata che viene aggiornata dal metodo RefreshLink.

Stato

Microsoft ha confermato che questo problema si verifica nei prodotti elencati nella sezione "Si applica a".

Serve aiuto?

Amplia le tue competenze
Esplora i corsi di formazione
Ottieni in anticipo le nuove caratteristiche
Partecipa a Microsoft Insider

Queste informazioni sono risultate utili?

Grazie per il feedback!

×