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