2011-09-29 132 views
0

我有一個追加查詢,它試圖將一些記錄追加到我的一個表中。但是,我收到一條錯誤消息,指出「由於關鍵違規,未添加1200條記錄」。1200是我嘗試追加的記錄總數。我不明白爲什麼我得到這個錯誤,因爲目標表中的所有列都允許重複(即使這個附加查詢不重複任何信息),並且如果我複製表的結構並將記錄追加到那一切正常。MS Access 2007附加查詢問題

這個問題似乎是我將數據追加到已有數據的表中。有人可以提供一些關於如何解決這個問題的建議嗎?

謝謝

+0

你的表沒有主鍵? – MusiGenesis

+2

它似乎是你的表有一個自動編號ID字段,你試圖追加到。否則,你如何處理數據很大程度上取決於你想要結束的事情。 – Fionnuala

+0

您的表是否有與另一個表定義的任何外鍵關係? – JohnFx

回答

1

確認您沒有忽略您桌子上的任何唯一索引。將此過程保存在標準模塊中,並使用目標表的名稱從立即窗口調用它。

Public Sub InspectIndexes(ByVal pTable As String) 
    Dim db As DAO.Database 
    Dim i As Long 
    Dim j As Long 
    Dim strFields As String 

    Set db = CurrentDb 
    With db.TableDefs(pTable) 
     Debug.Print "Indexes.Count = "; .Indexes.Count 
     For i = 0 To (.Indexes.Count - 1) 
     With .Indexes(i) 
      Debug.Print i + 1 & ": Index Name = "; .name 
      If .Primary Then 
       Debug.Print vbTab & "Primary Key (Unique)" 
      Else 
       Debug.Print vbTab & "Unique: "; .Unique 
      End If 
      Debug.Print vbTab & "Fields.Count = "; .Fields.Count 
      strFields = vbNullString 
      For j = 0 To (.Fields.Count - 1) 
       strFields = strFields & "; " & .Fields(j).name 
      Next j 
      strFields = Mid(strFields, 3) 
      Debug.Print vbTab & "Fields: "; strFields 
     End With 
     Next i 
    End With 

    Set db = Nothing 
End Sub 

這裏是示例輸出,其中tblFoo有3個索引:主鍵(由定義唯一)在ID; num_field1和num_field2上的唯一索引;和parent_id上的非唯一索引。

InspectIndexes "tblfoo" 
Indexes.Count = 3 
1: Index Name = both_num_fields 
    Unique: True 
    Fields.Count = 2 
    Fields: num_field1; num_field2 
2: Index Name = parent_id 
    Unique: False 
    Fields.Count = 1 
    Fields: parent_id 
3: Index Name = pkey 
    Primary Key (Unique) 
    Fields.Count = 1 
    Fields: id