【问题标题】:MS Access Link Table With VBA带有 VBA 的 MS 访问链接表
【发布时间】:2016-08-22 07:02:44
【问题描述】:

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

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

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

【问题讨论】:

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

标签: ms-access vba ms-access-2010 ms-access-2007 linked-tables


【解决方案1】:

您可以使用DoCmd.TransferDatabase Method 创建指向另一个 Access 数据库中表的链接。

DoCmd.TransferDatabase TransferType:=acLink, _
        DatabaseType:="Microsoft Access", _
        DatabaseName:="C:\share\Access\Example Database.accdb", _
        ObjectType:=acTable, _
        Source:="Addresses", _
        Destination:="Addresses_link"

我包含了选项名称,希望这样可以更容易地跟踪哪个选项是哪个选项。但是,如果这看起来太冗长,您可以省略选项名称并在一行中完成所有操作:

DoCmd.TransferDatabase acLink, "Microsoft Access", "C:\share\Access\Example Database.accdb", acTable , "Addresses", "Addresses_link"

【讨论】:

    【解决方案2】:

    实际上很简单——您只需创建一个新的 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
    

    连接字符串看起来像这样(取自connectionstrings.com):

    Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\myAccessFile.accdb;Persist Security Info=False;
    

    【讨论】:

      【解决方案3】:

      DataWriter,你是不是把 DAO 和 ADO 混在一起了。这就像水和油。 connectionstring 是 OLEDB(即 ADO),TableDef 来自 CurrentDb(即 DAO)。

      TableDef 的 Connect 属性格式为:

      ;DATABASE=[数据库的完整路径]\[数据库名称]

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多