確認您沒有忽略您桌子上的任何唯一索引。將此過程保存在標準模塊中,並使用目標表的名稱從立即窗口調用它。
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
你的表沒有主鍵? – MusiGenesis
它似乎是你的表有一個自動編號ID字段,你試圖追加到。否則,你如何處理數據很大程度上取決於你想要結束的事情。 – Fionnuala
您的表是否有與另一個表定義的任何外鍵關係? – JohnFx