我一直在尋找了好一會兒怎麼做的東西,應該是很容易在MS Access做2007MS Access 2007的更新/插入或合併或聯合
我有一個主表,items_moved,它按類型跟蹤每天收到的文件數量。的基本結構是:
ID(自動編號),驅動器(文本),類型(文字),日期(日期時間),FILE_COUNT(號碼),FILE_SIZE(數字)
典型數據看起來像:
1777, F:\snaps, pics, 6/09/2010, 66, 151616131
1778, F:\snaps, pics, 6/10/2010, 5, 464864
1779, G:\pics, pics, 6/09/2010, 58, 45645646
1780, G:\pics, pics, 6/10/2010, 70, 123456667
我有一個完全相同的數據結構的臨時表。臨時表是通過從items_moved表的最後一天開始(包括)並查找新內容來生成的。
典型的數據是這樣的:
1, F:\snaps, pics, 6/10/2010, 366, 6531616131
2, F:\snaps, pics, 6/11/2010, 5, 464864
3, G:\pics, pics, 6/10/2010, 70, 123456667
4, G:\pics, pics, 6/11/2010, 56, 123645964
所有我想要做的是附加在主表的臨時表,以便:
- 有沒有重複的(基於驅動器和日期)
- 如果臨時表具有匹配的驅動器和日期和更大的值,則會覆蓋主表
- 如果該行存在於臨時表中但不存在於主表中,那麼它會ts附加到主的末尾。
結果將在items_moved表,將記錄1-1776不變,但現在這樣結束:
1777, F:\snaps, pics, 6/09/2010, 66, 151616131 (Unchanged)
1778, F:\snaps, pics, 6/10/2010, 366, 6531616131 (Updated temp was larger)
1779, G:\pics, pics, 6/09/2010, 58, 45645646 (unchanged)
1780, G:\pics, pics, 6/10/2010, 70, 123456667 (unchanged)
1781, F:\snaps, pics, 6/11/2010, 5, 464864 (added)
1782, G:\pics, pics, 6/11/2010, 56, 123645964 (added)
我已經試過加入,我能想到的每一個變化。
我可以得到具有匹配日期的行,所以我可以用它來更新語句。我無法從temp中獲取items_moved表中沒有匹配日期的行,因此我無法運行插入。
最後一點是當用戶從訪問數據庫請求報告時,將其作爲VB操作的一部分執行。
這裏有一個片斷
INSERT INTO items_moved (drive, type, file_date, file_count, file_size)
SELECT 'F:\snaps','pics', temp_table.created, Count(temp_table.created),
Sum(temp_table.size) FROM temp_table where temp_table.drive = 'F:\snaps'
GROUP BY temp_table.created
這個工作,但只是增加了表的末尾。我留下了重複的問題。我敢肯定,有一種方法可以即時重複刪除表格,但這看起來很浪費。我發現在使用聯合時有一些提示,但如何使用聯合更新聯合中的某個表格沒有任何提示。
任何輸入,將不勝感激。謝謝。
雷若,應該做我想做的事情。我正在處理的查詢與您展示的佈局略有不同。我明天會試試這個。我遇到的一個問題是我使用了items_moved.file_date是Null,它沒有返回任何結果。我會嘗試你的方法。感謝您的及時迴應。 – Lindylead
Remou。經過一些修改以適合我的確切設置,此解決方案運行良好。非常感謝,您的幫助非常感謝。 – Lindylead