를 연결된 모든 테이블 참조를 업데이트 :가 프로그래밍 방식으로 나는 MS Accecss 데이터베이스 파일/60 개 테이블의 연결된 테이블 참조를 업데이트 능가하려는 MS에 액세스
그러나 나는 싶지 않아 "F를"... "에서"E : ... "
이 대량 재 할당 프로그래밍 할 수있는 방법를 연결된 모든 테이블 참조를 업데이트 :가 프로그래밍 방식으로 나는 MS Accecss 데이터베이스 파일/60 개 테이블의 연결된 테이블 참조를 업데이트 능가하려는 MS에 액세스
그러나 나는 싶지 않아 "F를"... "에서"E : ... "
이 대량 재 할당 프로그래밍 할 수있는 방법다음 코드는 3 가지를 수행합니다 :
Function relink_tables() If Left(CurrentDb().Name, 2) = "C:" Or Left(CurrentDb().Name, 2) = "B:" Then Source = "local" Else: Source = "network" End If Set rs = CurrentDb.OpenRecordset("select * from [linked table source] where source='" & Source & "'") Source = rs.Fields("path") For Each R In References If InStr(R.Name, "Common Tables") > 0 Then Application.References.Remove R Next R Application.References.AddFromFile Source x = 0 Set TDefs = CurrentDb().TableDefs For Each table In TDefs If InStr(table.Connect, "Common Tables") = 0 Then GoTo NT table.Connect = ";DATABASE=" & Source table.RefreshLink x = x + 1 NT: Next table Finish: MsgBox "remapped " & x & " tables" End Function
이것이 하나의 샷 이름? 그렇다면,이 과잉 될 수 있으며 poerfection하는 데 시간이 걸릴 것입니다,하지만 위쪽에, 당신은 늘 당신의 참조를 유지하기 위해 별도의 테이블이 필요 당신은 VBA 잘 알고있는 경우는 다음과 같이 사용할 수 있습니다
Dim td As DAO.TableDef
Dim strPath as string
For Each td In CurrentDb.TableDefs
If (td.Attributes And dbAttachedTable) = dbAttachedTable Then
strPath = Mid(td.Connect, 11)
If Left(strPath, 1) = "E" Then
strPath = "F" & Mid(strPath, 2)
td.Connect = ";DATABASE=" & strPath
td.RefreshLink
End If
End If
Next
을
암호가없는 ODBC- 데이터베이스 용입니다. 연결 문자열이 더 복잡하면 조정해야합니다. 가능한 모든 연결 문자열 목록은 다음과 같습니다. Microsoft DAO Connection Strings
내가 알고있는 유일한 프로그래밍 방식은 연결된 모든 테이블을 삭제하고 다시 링크하는 것입니다. 아마도 시스템 테이블에서 연결된 테이블과 해당 속성을 읽을 수있는 방법이 있기 때문에이를 사용할 수는 있지만 결코 해 본 적이 없습니다. 체크 아웃 : http://stackoverflow.com/questions/25579591/get-the-name-of-local-table-and-linked-table-in-vba – SunKnight0