如何将一个 MS Access 数据库(*.mdb 或 *.accdb)中的表链接到 VBA 中的另一个 Access 数据库?
基本上,我只是使用VBA来复制外部数据向导的功能。
我用谷歌搜索了一下,看到很多关于如何更新或重新链接表的示例,以及许多链接到SQL数据库的示例,但很少有Access数据库之间的简单链接表。
可以使用 DoCmd.TransferDatabase 方法创建指向另一个 Access 数据库中的表的链接。
DoCmd.TransferDatabase TransferType:=acLink, _
DatabaseType:="Microsoft Access", _
DatabaseName:="C:shareAccessExample Database.accdb", _
ObjectType:=acTable, _
Source:="Addresses", _
Destination:="Addresses_link"
我包括了选项名称,希望这样可以更轻松地跟踪哪个选项是哪个选项。 但是,如果这看起来太冗长,您可以省略选项名称并在一行上完成所有操作:
DoCmd.TransferDatabase acLink, "Microsoft Access", "C:shareAccessExample Database.accdb", acTable , "Addresses", "Addresses_link"
这实际上非常简单 - 您只需创建一个新的 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:myFoldermyAccessFile.accdb;Persist Security Info=False;
DataWriter,你不是把DAO和ADO混在一起吗?这就像水和油。连接字符串是OLEDB(即ADO),TableDef来自CurrentDb(即DAO)。
TableDef 的连接属性采用以下形式:
;D ATABASE=[db 的完整路径]\[db 名称]