2013-05-30 113 views
0

我的追加查詢由於違反密鑰而失敗,但只有一條新記錄,舊記錄正常追加只是我添加的新記錄失敗。追加查詢失敗密鑰違規

DoCmd.RunSQL "INSERT INTO [Order_Item] ([Order_ID],[Item_ID],[Quantity]) Values (" & orderNumber & ", [Enter Item ID], [Enter Quantity])" 

在Order_ID和的Item_ID外鍵

+0

密鑰違規將表明您正試圖插入已使用的主密鑰。外鍵不重要。檢查你的主鍵值 – Hazaart

+0

你的表結構是什麼樣的?你有一個獨特的(自動遞增)鍵字段嗎?或者你的主鍵是什麼樣的?該組合是否試圖添加到那裏(所以它真的是一個重要的違規行爲) –

+0

此代碼容易受到SQL注入攻擊。你實際上乞求被黑客入侵。 –

回答

0

訪問都將引發錯誤重。當您通過不在相關表格中的sql將某些內容插入到FK中時發生密鑰違例。主鍵違規可能也會出現類似的錯誤。

下面是一些代碼(您需要適應您的模型)來檢查相關表中存在的鍵,並且在插入之前映射表中「映射」不存在。

Select Case True 

    Case IsNull(DLookup("[ID]", "Table1", "[ID]=" & num1)) 
     MsgBox ("ID does not exist in Table1") 

    Case IsNull(DLookup("[ID]", "Table2", "[ID]=" & num2)) 
     MsgBox ("ID does not exist in Table2") 

    Case Not (IsNull(DLookup("[ID1]", "Map", "[ID1]=" & num1 & "And [ID2]=" & num2))) 
     MsgBox ("Mapping already exists") 

    Case Else 
     DoCmd.RunSQL "INSERT INTO [Map] VALUES (" & num1 & ", " & num2 & ")" 

End Select