通过vba链接两个Microsoft Access表

时间:2016-02-15 16:28:51

标签: vba ms-access access-vba

我正在尝试链接不同数据库中的两个表。我所做的是创建一个新表,然后尝试将DESCRIPTION属性更改为另一个数据库中特定表的路径。

Set dbs = CurrentDb
thepath = "DATABASE=P:\Cadworx P&ID Implementation\3 Piping\P&IDs Jesus Test\Testproject\myTest.mdb;TABLE=Service"

Set tdf = dbs.TableDefs("ThisTable")

On Error Resume Next

tdf.Properties("Description") = "DATABASE=P:\Cadworx P&ID Implementation\3 Piping\P&IDs Jesus Test\Testproject\myTest.mdb;TABLE=Service"

If Err.Number = 3270 Then
Set prp = tdf.CreateProperty("Description", _
    dbText, thepath)
tdf.Properties.Append prp
End If

这没有给我预期的结果,因为链接永远不会建立。有人可以告诉我,如果这是正确的方法,或者有更好的方法吗?谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

您可以使用Access的内置功能轻松链接到其他Access数据库中的表。

根据您使用的Access版本,应该有一个导入/链接到其他数据源的选项,包括另一个Access数据库:

enter image description here

这将启动导入/链接向导。浏览到要链接到的数据库文件:

enter image description here

指定是否要导入或链接到您浏览的数据库文件中的数据对象(在本例中为链接):

enter image description here

选择要链接到的对象:

enter image description here

链接对象将显示在导航窗格中,蓝色箭头表示它们是链接对象,而不是本地存储到当前数据库的内容:

enter image description here

然后,您应该能够使用链接表,就好像它们是数据库中的任何其他类型的表一样。

答案 1 :(得分:0)

这是解决问题的方法。

Dim dbs As DAO.Database
Dim tdf As DAO.TableDef
Dim strDbFile As String
Dim strConnect As String
Dim strSourceTableName As String
Dim strLinkName As String
Dim f As Object
Dim varfile As Variant

Set f = Application.FileDialog(3)   'Windows Explorer, 3 means file picker.  4 Is for folder, 1 to open dialog box, 2 to save as
f.show                              'Show Windows explorer

With f
f.allowmultiselect = False
For Each varfile In .selecteditems
    strDbFile = varfile                     'File selected assigned to   source database file
Next
End With

strSourceTableName = "Service"                                                                      'Source Table
strLinkName = "Service"                                                                          'Final table name once link has been established

strConnect = "MS Access;PWD=" & strPassword & ";DATABASE=" & strDbFile

Set dbs = CurrentDb
Set tdf = dbs.CreateTableDef

tdf.Connect = strConnect                                                                           'Establish link between databases
tdf.SourceTableName = strSourceTableName
tdf.Name = strLinkName
dbs.TableDefs.Append tdf

正如古斯塔夫所说,解决方案与他发布的一致。新访问,所以我真的不知道DAO库是什么。无论如何,谢谢你的帮助!