我對Access數據庫的使用經驗很少,但是我在Excel中編寫了類似的VBA宏。我試圖將一個.mdb文件中的行復制到另一個.mdb文件中的完全相同的表中。不過,如果它不存在,我希望它只導入它。有人能告訴我最好的方式去做這件事,也許我可以使用和修改一些代碼?我已經看過周圍的堆棧溢出,似乎無法找到任何可用的示例。將行復制到新數據庫中的同一個表中
有8個不同的表格,裏面有幾百行。也許5-20列。
如果腳本可以在VBS內部創建,這將是理想的,因爲它可以讓我在不加載訪問的情況下運行更新。
感謝任何幫助或建議, 西蒙
編輯 -
澤夫的答案似乎做的工作不過我得到這個錯誤,也在裏面站點2的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
編輯更多信息:
\站點1 \ ActinicCatalog.mdb - 是目標數據庫 \站點2 \ ActinicCatalog.mdb - 是原始數據庫
這些數據庫具有大約20列
請定義**不存在**。是否有主鍵字段,在這種情況下,您將如何處理源記錄和目標記錄之間的差異?或者一旦記錄有不同的數據,這是一個新的記錄? –
非常有效的一點,想到這個我可能甚至需要這個更高級的。比方說,我們有1個數據庫的數據行和第二個數據庫的行也不存在,我的意思是行不在它複製到的數據庫中。如果它確實存在(我們可以使用第一列作爲此標識符),請檢查所有列值是否匹配(複製對現有數據進行的編輯。 –
「FROM」&Person&「AS t1 IN」行C: \ Users \ simon \ Documents \ garden games redesign \ import script \ Site2 \ ActinicCatalog.mdb「」&_' should read''FROM「&Person&」AS t1 IN「」C:\ Users \ simon \ Documents \ garden games重新設計\導入腳本\ Site2 \ ActinicCatalog.mdb「」「&_'。注意路徑前後的''''而不是''' –