Access 2007에서 연결된 SharePoint 테이블을 열려고 할 때 오류 메시지가 나타납니다.


증상


Microsoft Office Access 2007에서 연결된 Microsoft Windows SharePoint 서비스 테이블을 열려고 하면 다음과 같은 오류 메시지와 유사한 오류 메시지가 나타날 수 있습니다.
Microsoft Office Access 데이터베이스 엔진에서 개체'개체 이름'을 찾을 수 없습니다. 개체가 있는지, 해당 이름과 경로 이름을 올바르게 입력해야 합니다.
그러나 연결된 SharePoint 테이블이 성공적으로 열립니다. 이 오류 메시지는 DAO(데이터 액세스 개체) RefreshLink 메서드를 사용하여 연결된 SharePoint 테이블을 프로그래밍 방식으로 행에서 두 번 이상 업데이트한 후에 발생합니다.

원인


RefreshLink 메서드메서드에 대 한 이전 호출 하는 동안 만든 테이블 관계를 무시 하기 때문에이 문제가 발생 합니다.

해결 방법


이 문제를 해결하려면 RefreshLink 메서드를 사용하여 연결된 테이블을 업데이트하기 전에 테이블 관계를 프로그래밍 방식으로 삭제합니다.

서브루틴을 샘플링하여 관계를 삭제합니다.

서브루틴을 사용하여 새로 고쳐진 링크의 관계를 삭제하려면 다음 단계를 따르십시오.
  1. 응용 프로그램 용 Microsoft 시각적 기본(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. RefreshLink 메서드가 호출되는 소스 코드에서 RefreshLink 소스 코드 줄 바로 앞에 다음 코드를 삽입합니다.
    RemoveInvalidRelationships "WSSLink"
    참고 사항 "WSSLink"는 RefreshLink 메서드에 의해 새로 고쳐지는 연결된 테이블의 이름입니다.

상태


Microsoft는 "적용 대상" 절에 나열한 제품에서 이 문제를 확인했습니다.