Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用VBA实现MS-Access链接表_Ms Access_Vba_Ms Access 2010_Ms Access 2007_Linked Tables - Fatal编程技术网

用VBA实现MS-Access链接表

用VBA实现MS-Access链接表,ms-access,vba,ms-access-2010,ms-access-2007,linked-tables,Ms Access,Vba,Ms Access 2010,Ms Access 2007,Linked Tables,如何将表从一个MS Access数据库(*.mdb或*.accdb)链接到VBA中的另一个Access数据库 基本上,我只是使用VBA复制外部数据向导的功能 我在谷歌上搜索过这个,我看到了许多如何更新或重新链接表的示例,以及许多链接到SQL数据库的示例,但是Access数据库之间很少有简单的链接表。实际上非常简单——只需创建一个新的tabledef并将其.connect属性设置为链接到其他Access数据库的ODBC连接字符串 Private Function LinkTable(LinkedT

如何将表从一个MS Access数据库(*.mdb或*.accdb)链接到VBA中的另一个Access数据库

基本上,我只是使用VBA复制外部数据向导的功能

我在谷歌上搜索过这个,我看到了许多如何更新或重新链接表的示例,以及许多链接到SQL数据库的示例,但是Access数据库之间很少有简单的链接表。

实际上非常简单——只需创建一个新的tabledef并将其.connect属性设置为链接到其他Access数据库的ODBC连接字符串

Private Function LinkTable(LinkedTableName As String, TableToLink As String, connectString As String) As Boolean

    Dim tdf As New dao.TableDef

    On Error GoTo LinkTable_Error

    With CurrentDb

        .TableDefs.Refresh

        Set tdf = .CreateTableDef(LinkedTableName)
        tdf.Connect = connectString
        tdf.SourceTableName = TableToLink
        .TableDefs.Append tdf
        .TableDefs.Refresh


    End With

    Set tdf = Nothing
End Function
连接字符串的外观如下所示(取自):

可以使用创建指向另一个Access数据库中的表的链接

Private Function LinkTable(LinkedTableName As String, TableToLink As String, connectString As String) As Boolean

    Dim tdf As New dao.TableDef

    On Error GoTo LinkTable_Error

    With CurrentDb

        .TableDefs.Refresh

        Set tdf = .CreateTableDef(LinkedTableName)
        tdf.Connect = connectString
        tdf.SourceTableName = TableToLink
        .TableDefs.Append tdf
        .TableDefs.Refresh


    End With

    Set tdf = Nothing
End Function
DoCmd.TransferDatabase TransferType:=acLink_
数据库类型:=“Microsoft Access”_
DatabaseName:=“C:\share\Access\Example Database.accdb”_
对象类型:=可执行_
来源:=“地址”_
目的地:=“地址\链接”
我加入了选项名称,希望这样可以更容易地跟踪哪个选项是哪个。但如果这看起来太冗长,您可以省略选项名称,并在一行中完成所有操作:

DoCmd.TransferDatabase acLink,“Microsoft Access”,“C:\share\Access\Example Database.accdb”,acTable,“Addresses”,“Addresses\u link”

我不知道答案,我也不想劝阻您,但这是不是让您只需单击按钮并同步数据,而不是运行向导?我会犹豫是否要这样做,因为你(可能?)还必须为访问编写代码,这是很好的内置验证。是的,这正是这样做的原因。除了这个,我已经用VBA自动化了几乎所有的数据库操作。我可以用这个向导,但我似乎已经到了最后一关了!