我知道這已被多次詢問,但出於某種原因,解決方案對我而言並不適用。在Access中追加記錄時避免重複
數據庫佈局:
我有表1(Scanner_Location)誰獲得的數據從另一個表/子窗體拉到形式(掃描儀IBOB)*上舉行列:FP#,計數,地點,MODEL_ID,PK表3(Scanner_Model)保存顯示在子窗體中的最後一個數據列。(掃描程序詳細信息)保存三個數據列中的兩個:(FP#,Location PK-SN) 表3 (PK-Model_ID)
用戶將在窗體的一個部分輸入FP#和位置,然後導航到子窗體,並選擇多個模型,然後輸入計數(文本框)。一旦選定,他們點擊執行我的查詢的「更新」按鈕。 (其中我有一個更新,並附加查詢)
問題是,只是使用更新查詢不會添加記錄。使用追加查詢會創建現有數據的重複項。
這裏的流量如何進行:
用戶選擇模型1和模型2爲4的計數和100點擊次數更新的FP#。 查詢更新,並且信息正確輸入。
用戶再次選擇相同型號(Model_Select),具有相同的FP#和計數,Table1具有與另一個主鍵一樣再次輸入的相同信息。
目標:
追加查詢創建現有數據的副本。我只希望我的更新和/或追加查詢:
更新現有數據 - 尋找任何與同FP# 添加不存在任何記錄(在MODEL_ID和FP#看)
INSERT INTO Scanner_Location (Model_ID, FootPrints_Num, Location_ID, Scanner_Loc_Cnt)
SELECT Scanner_Model.Model_ID, [Forms]![Scanner_IBOB]![fpNum_txt] AS [FP#],
[Forms]![Scanner_IBOB]![Location_Cbo_main] AS Location,
[Forms]![Scanner_IBOB]![Scanner_Loc_CntTxt] AS [Count]
FROM Scanner_Detail
RIGHT JOIN Scanner_Model ON Scanner_Detail.Model_ID = Scanner_Model.Model_ID
WHERE (((Scanner_Model.SM_Acc_Select)=True)
AND ((NOT Exists (SELECT * FROM Scanner_location
WHERE (((Forms!Scanner_IBOB!fpNum_txt)=Forms!Scanner_IBOB!fpNum_txt)
And ((Scanner_Model.SM_Acc_Select)=True));))=False));
以上是我的追加查詢。 http://stackoverflow.com/questions/19837911/appending-into-another-table-and-avoiding-duplicates 讓我接近,但AND NOT EXISTS似乎沒有工作,或者我沒有正確理解它。 – Zdoghype