我对 Access 数据库的经验很少,但是我在 excel 中编写了一个类似的 VBA 宏。我正在尝试将一个 .mdb 文件中的行复制到另一个 .mdb 文件上的完全相同的表中。但是,我希望它仅在它不存在时才导入。有人可以告诉我解决这个问题的最佳方法,也许还有一些我可以使用和修改的代码?我已经查看了堆栈溢出,似乎找不到任何有效的示例。
有 8 个不同的表,在这几百行中。可能有 5-20 列。
如果脚本可以在 VBS 中创建,这将是理想的,因为它允许我在不加载访问的情况下运行更新。
感谢您的任何帮助或建议,西蒙
编辑 -
Zev 的回答似乎可以完成这项工作,但是我遇到了这个错误,site2 中的 MDB 也是我从中复制并将其放入 site1 的那个
Error: Expected end of statement
Code: 800A0401
Line: 17
Char: 13
代码(另存为“update.vbs”):
Dim eng
Set eng = CreateObject("DAO.DBEngine.120")
Set dest = eng.OpenDatabase("C:\Users\simon\Documents\garden games redesign\import script\Site1\ActinicCatalog.mdb")
Sub CopyTable()
Dim rs
Set rs = dest.OpenRecordset("Person")
Dim sWhere
For Each fld In rs.Fields
sWhere = sWhere & " AND " & fld.Name & " <> t1." & fld.Name
Next
sWhere = Mid(sWhere, 6)
Dim sql: sql= _
"INSERT INTO Person " & _
"SELECT * " & _
"FROM Person AS t1 IN ""C:\Users\simon\Documents\garden games redesign\import script\Site2\ActinicCatalog.mdb"" " & _
"WHERE " & sWhere
dest.Execute(sql)
End Sub
编辑以获取更多信息:
\Site1\ActinicCatalog.mdb - 是目标数据库 \Site2\ActinicCatalog.mdb - 是原始数据库
这些数据库有大约 20 列