Pesan galat saat Anda mencoba untuk membuka tabel SharePoint tertaut di Access 2007: "Microsoft Office Access Database Engine tidak dapat menemukan objek"


Gejala


Ketika Anda mencoba untuk membuka tabel Microsoft Windows SharePoint Services tertaut di Microsoft Office Access 2007, Anda mungkin menerima pesan galat yang menyerupai pesan galat berikut:
Microsoft Office Access Database Engine tidak dapat menemukan objek 'nama objek'. Pastikan ada objek dan bahwa Anda mengeja nama dan nama jalur dengan benar.
Namun, tabel SharePoint tertaut membuka berhasil. Pesan galat ini terjadi setelah Anda memutakhirkan tabel SharePoint tertaut secara sistematis lebih dari satu kali berturut-turut menggunakan metode penyegaran objek akses data (DAO) Refreshlink .

Penyebab


Masalah ini terjadi karena metode Refreshlink mengabaikan hubungan tabel yang dibuat selama panggilan sebelumnya ke metode.

Penyelesaian Masalah


Untuk mengatasi masalah ini, secara programatik menghapus hubungan tabel sebelum Anda menggunakan metode Refreshlink untuk memperbarui tabel tertaut.

Contoh subrutin untuk menghapus hubungan

Untuk menggunakan subroutine untuk menghapus hubungan untuk tautan refresh, ikuti langkah berikut:
  1. Masukkan kode berikut ke dalam modul di 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. Dalam kode sumber di mana metode refreshlink disebut, masukkan kode berikut segera sebelum baris kode sumber refreshlink:
    RemoveInvalidRelationships "WSSLink"
    Catatan "WSSLink" adalah nama dari tabel tertaut yang sedang disegarkan dengan metode Refreshlink .

Status


Microsoft telah mengonfirmasi bahwa ini adalah masalah pada produk Microsoft yang tercantum di bagian "Berlaku untuk".