Symptômes

Lorsque vous essayez d'ouvrir une table Microsoft Windows SharePoint Services liée dans Microsoft Office Access 2007, vous pouvez recevoir un message d'erreur qui ressemble au message d'erreur suivant :

Le moteur de base de données Microsoft Office Access n'a pas pu trouver l'objet ' Nom del'objet'. Assurez-vous que l'objet existe et que vous épelez son nom et le nom du chemin correctement.

Toutefois, la table SharePoint liée s'ouvre avec succès. Ce message d'erreur se produit après avoir mis à jour la table SharePoint connectée de manière programmatique plus d'une fois d'affilée en utilisant la méthode RefreshLink d'objets d'accès aux données (DAO).

Cause

Ce problème se produit parce que la méthode RefreshLink ignore les relations de table qui sont créées lors de l'appel précédent à la méthode.

Solution de contournement

Pour contourner ce problème, supprimez programmatiquement les relations de table avant d'utiliser la méthode RefreshLink pour mettre à jour la table liée.

Exemple de sous-routine pour supprimer les relations

Pour utiliser une sous-routine pour supprimer les relations pour le lien actualisé, suivez les étapes suivantes :

  1. Insérer le code suivant dans un module dans 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. Dans le code source où la méthode RefreshLink est appelée, insérez le code suivant immédiatement avant la ligne de code source RefreshLink :

    RemoveInvalidRelationships "WSSLink"

    Remarque "WSSLink" est le nom de la table liée qui est actualisée par la méthode RefreshLink.

Statut

Microsoft a confirmé l'existence de ce problème dans les produits Microsoft figurant dans la liste des produits concernés par cet article.

Besoin d’aide ?

Développez vos compétences
Découvrez des formations
Accédez aux nouvelles fonctionnalités en avant-première
Rejoindre Microsoft Insider

Ces informations vous ont-elles été utiles ?

Dans quelle mesure êtes-vous satisfait(e) de la qualité de la traduction ?

Qu’est-ce qui a affecté votre expérience ?

Avez-vous d’autres commentaires ? (Facultatif)

Nous vous remercions pour vos commentaires.

×