MS Access Link Table 使用 VBA

MS Access Link Table With VBA

如何link一个table从一个MS Access数据库(*.mdb或*.accdb)到VBA中的另一个Access数据库?

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

我用谷歌搜索了这个,我看到了很多关于如何更新或重新link tables 的例子,还有很多关于 linking 到 SQL 数据库的例子,但在 Access 数据库之间很少有简单的 linking tables。

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

您可以使用 DoCmd.TransferDatabase Method 在另一个 Access 数据库中创建 link 到 table。

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"

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

TableDef 的连接 属性 的形式为:

;DATABASE=[Db 的完整路径]\[Db 名称]