Mesaj de eroare când încercați să deschideți un tabel SharePoint legat în Access 2007: "motorul de baze de date Microsoft Office Access nu a găsit obiectul"

Simptome

Când încercați să deschideți un tabel legat Microsoft Windows SharePoint Services în Microsoft Office Access 2007, este posibil să primiți un mesaj de eroare asemănător cu următorul mesaj de eroare:

Motorul de baze de date Microsoft Office Access nu a găsit obiectul "Nume obiect". Asigurați-vă că obiectul există și că se scrie numele și numele căii corect.

Cu toate acestea, tabelul legat SharePoint se deschide cu succes. Acest mesaj de eroare se produce după ce actualizați tabelul legat SharePoint programatic mai mult de o dată într-un rând utilizând metoda Refreshlink date Access Objects (DAO).

Cauză

Această problemă apare deoarece metoda Refreshlink ignoră relații de tabel care sunt create în timpul apelul anterior la metoda.

Soluție de evitare

Pentru a rezolva această problemă, programatic ștergeți relațiile de tabel înainte de a utiliza metoda Refreshlink pentru a actualiza tabelul legat.

Eșantion subrutină pentru a șterge relațiile

Pentru a utiliza o subrutină pentru a șterge relațiile pentru linkul reîmprospătat, urmați acești pași:

  1. Introduceți următorul cod într-un modul în 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. În codul sursă în cazul în care metoda refreshlink este numit, inserați următorul cod imediat înainte de linia de cod sursă refreshlink:

    RemoveInvalidRelationships "WSSLink"

    Notă "WSSLink" este numele tabelului legat care este reîmprospătat prin metoda Refreshlink .

Stare

Microsoft a confirmat că aceasta este o problemă în produsele Microsoft enumerate în secțiunea „Se aplică la”.

Aveți nevoie de ajutor suplimentar?

Extindeți-vă competențele
Explorați instruirea
Fiți primul care obține noile caracteristici
Alăturați-vă la Microsoft Insider

V-a fost de ajutor această informație?

Vă mulțumim pentru feedback!

Vă mulțumim pentru feedback! Se pare că ar fi util să luați legătura cu unul dintre agenții noștri de asistență Office.

×