2014-04-24 83 views
0

因此,我從Excel導入數據並使用DoCmd.TransferSpreadsheet從他們獲得的數據創建新表。我想要做的是讓這些新表替換數據庫中的舊錶,當我導入它們的同時保持關係良好,這樣我就可以用一個按鈕完全自動化該過程。我不認爲UPDATE查詢方法會因爲不斷添加和刪除數據而工作(儘管我可能是錯誤的,因爲我對SQL比較陌生)。我希望有一種方法可以從表中刪除所有數據,然後用VBA從新表中將其重新填滿。這可能嗎?從Excel數據更新Access表中的數據和關係

+0

是的,這是可能的。不確定現有表格是如何相關的,但您可以隨時刪除現有數據,然後追加新的數據。 1.是否要刪除三個現有表中的所有行? 2.從Excel中導入的列是Access所需的嗎? –

+0

這些表有一個單一對多的關係鏈接它們,沒有什麼複雜的。是的,我想刪除現有表格中的所有內容。是的,從Excel導入的是Access中需要的所有數據。我很感激你能給我的任何幫助。 – 110SidedHexagon

回答

1

假設您的表格命名爲'T1','T2','T3'並且按照關係順序排列,請嘗試以下方法作爲一種可能的解決方案。只需在導入代碼後添加以下代碼(更改表名稱):

Dim strSQL As String 
strSQL = "delete * from T3;"  ' Delete all existing rows 
CurrentDb.Execute strSQL 
strSQL = "delete * from T2;" 
CurrentDb.Execute strSQL 
strSQL = "delete * from T1;" 
CurrentDb.Execute strSQL 

' Insert new rows from imported tables. 
strSQL = "INSERT INTO T1 SELECT Import1.* FROM Import1; 
CurrentDb.Execute strSQL 
strSQL = "INSERT INTO T2 SELECT Import2.* FROM Import2; 
CurrentDb.Execute strSQL 
strSQL = "INSERT INTO T3 SELECT Import3.* FROM Import3; 
CurrentDb.Execute strSQL 
+0

感謝您的代碼!它的工作方式正如我想要的那樣,爲3張桌子中的2張...不幸的是,第三個現在讓我感到悲傷。出於某種原因,當我嘗試在最後一個表上使用插入函數時,它執行得很好,但是當我打開表時,它完全是空白的。我已經確認這兩個表的數據類型是相同的,並且新表正確填充了新表,但現有表只是無法獲得新數據。有什麼建議? – 110SidedHexagon

+0

嘗試手動運行SQL,看看是否有任何錯誤。其他想法:(a)是否存在必須評估的關係(即是否存在另一個表中所需的所有者記錄?)(b)是否需要任何現場確認,但是失敗? –