2012-08-23 2 views
2

나는 (* .MDB) 데이터베이스의 디렉토리가 다른 위치에서 여러 가지 다른 * .MDB 연결되어의.Access 2003에서 연결된 테이블 관리자를 쿼리 할 수 ​​있습니까?

우리는 두 개의 파티션으로 하나 개의 파일에서 원본 데이터베이스를 분리했습니다. 디렉토리의 데이터베이스는 원래 데이터베이스 파일 (및 몇 개의 다른 데이터베이스)을 가리 킵니다. 이제 디렉터리의 각 데이터베이스에있는 테이블을 원본 (현재 분할 된) 데이터베이스의 올바른 파티션으로 다시 연결해야합니다.

각 데이터베이스의 연결된 테이블 관리자에서 테이블을 수동으로 다시 연결했지만이 방법은 매우 비효율적이며 연결된 테이블 관리자를 어떻게 든 쿼리 할 수 ​​있다면 쉽게 찾을 수 있습니다. 올바른 테이블 수를 변경했습니다.

연결 테이블 관리자를 조회 할 수있는 방법이 있습니까? VB 또는 심지어 시스템 테이블과 SQL을 사용하여 테이블 이름과 파일 위치를 사용합니까?

주 나는 MS 액세스 2003 파일을 열하고 있지만, MS 액세스 2003을 열고 액세스 2000 형식으로보고하고있다.

당 Remou의 제안은 여기에 내가 테이블을 다시 연결 쓴 일부 코드입니다 :

Sub RelinkLinks() 
    Dim db As Database 
    Dim tdf As TableDef 

    Dim OldLoc As String 
    OldLoc = ";DATABASE=\\lois\_DB\DB\BE.mdb" 

    Dim partition1Loc As String 
    Dim partition2Loc As String 
    partition1Loc = ";DATABASE=\\lois\_DB\DB\Partition 1\BE.mdb" 
    partition2Loc = ";DATABASE=\\lois\_DB\DB\Partition 2\BE.mdb" 

    Set db = CurrentDb 

    For Each tdf In db.TableDefs 

     ' Only cycle through the locations 
     ' that are equal to the old one... 
     If tdf.Connect = OldLoc Then 
      ' Debug.Print tdf.Name & ":" & tdf.Connect 

      Dim whichLoc As String 

      If tdf.Name = "T_PAR_2_TBL_1" Or tdf.Name = "T_PAR_2_TBL_2" Then 
      ' Only set the tables to partition 2 that were listed as in Partition 2 by the database splitter 
       Debug.Print "Setting linked table " & tdf.Name & " FROM " & tdf.Connect & " TO " & partition2Loc 
       whichLoc = partition2Loc 
      Else 
      ' If the name was not listed as in partition 2, set it to partition 1 
       Debug.Print "Setting linked table " & tdf.Name & " FROM " & tdf.Connect & " TO " & partition1Loc 
       whichLoc = partition1Loc 
      End If 

      'We will uncomment this when we take the safety off... 
      'tdf.Connect = whichLoc 
      'tdf.RefreshLink 
     End If 
    Next tdf 
End Sub 

답변

1

당신은 변경하고 VBA를 통해의 TableDefs를 참조하여 업데이트 링크 할 수 있습니다.

Set db = CurrentDB 
For Each tdf In db.Tabledefs 
If tdf.Connect <> Myconnect Then ''the connect property is a string 
    tdf.Connect = MyConnect 
    tdf.RefreshLink 
End If 

당신은 CreateTableDef를 사용하여 VBA와 외부 데이터베이스의 모든 테이블도 연결할 수 있습니다. 나는 일반적으로 테이블의 테이블을 유지하고 연결하는 것이 유용하다는 것을 알게된다.

+0

당신은 테이블을 다시 연결하는이 코드에 대해 어떻게 생각하십니까? – leeand00

+0

괜찮아 보이는 군, 나는 시험하지 않았다. MS Access이므로 사본을 쉽게 실행할 수 있습니다. – Fionnuala

+0

오른쪽. 그게 내가하고있는 일이고, 나는 원래의 DB를 백업했다. – leeand00