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:
-
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
-
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".