Při pokusu o otevření propojené tabulky služby SharePoint v aplikaci Access 2007 se zobrazí chybová zpráva, že databázový stroj Microsoft Office Access nenalezl objekt

Příznaky

Při pokusu o otevření propojené tabulky služby Microsoft Windows SharePoint Services v aplikaci Microsoft Office Access 2007 se může zobrazit chybová zpráva podobná následující:

Databázový stroj Microsoft Office Access nenalezl objektnázev objektu. Zkontrolujte, zda objekt existuje a zda správně píšete jeho název a název cesty.

Propojená tabulka služby SharePoint se však úspěšně otevře. Tato chybová zpráva se zobrazí po aktualizaci propojené tabulky služby SharePoint programově více než jednou za sebou pomocí metody RefreshLink objektů DAO (Data Access Objects).

Příčina

K tomuto problému dochází, protože metoda RefreshLink ignoruje vztahy mezi tabulkami, které byly vytvořeny během předchozího volání metody.

Alternativní řešení

Chcete-li tento problém obejít, odstraňte programově relace mezi tabulkami před použitím metody RefreshLink k aktualizaci propojené tabulky.

Ukázková Podrutina pro odstranění relací

Chcete-li k odstranění relací pro obnovený odkaz použít podprogram, postupujte následovně:

  1. Do modulu v jazyce Microsoft Visual Basic for Applications (VBA) vložte následující kód:

    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. Ve zdrojovém kódu, kde je volána metoda RefreshLink , vložte následující kód bezprostředně před řádek zdrojového kódu RefreshLink:

    RemoveInvalidRelationships "WSSLink"

    Poznámka: "WSSLink" je název propojené tabulky, která je aktualizována metodou RefreshLink .

Stav

Společnost Microsoft potvrzuje, že se jedná o problém v produktech této společnosti, které jsou uvedeny v části Informace v tomto článku jsou určeny pro produkt.

Potřebujete další pomoc?

Rozšiřte své znalosti a dovednosti
Projít školení
Získejte nové funkce jako první
Připojit se k programu Microsoft Insider

Byly tyto informace užitečné?

Děkujeme za váš názor!

Děkujeme vám za váš názor! Pravděpodobně bude užitečné, když vás spojíme s některým z našich agentů podpory Office.

×