我有一个数据库目录(* .mdb),它链接到其他位置的其他几个* .mdb。
我们将原始数据库从一个文件拆分为两个分区。目录中的数据库指向原始数据库文件(以及其他一些数据库)。现在我需要将目录中每个数据库的表重新链接到原始(现在拆分)数据库的正确分区。
我一直在手动重新链接每个数据库的链表管理器中的表,但这非常低效,如果我能以某种方式查询链接表管理器,我可以很容易地发现我是否已经更改正确的表格数量。
有没有办法查询链接表管理器?通过VB甚至使用系统表和SQL使用表名和文件位置?
注意我在MS Access 2003中打开文件,但MS Access 2003正在打开它们并报告Access 2000格式。
Per 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
答案 0 :(得分: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链接。我一般认为保留一个我想链接的表格并使用它是有用的。