MS Access 2007 Добавить запрос проблемы - PullRequest
0 голосов
/ 29 сентября 2011

У меня есть запрос на добавление, который пытается добавить некоторые записи в одну из моих таблиц.Однако я получаю сообщение об ошибке «Не добавлено 1200 записей из-за ключевых нарушений». 1200 - это общее количество записей, которые я пытаюсь добавить.Я не понимаю, почему я получаю эту ошибку, потому что все мои столбцы в таблице назначения допускают дублирование (даже если этот запрос добавления не дублирует какую-либо информацию), и если я копирую структуру таблицы и добавляю записи ввсе работает.

Проблема в том, что я добавляю данные в таблицу, в которой уже есть данные.Может кто-нибудь предложить несколько советов, как я могу обойти это?

Спасибо

1 Ответ

1 голос
/ 29 сентября 2011

Убедитесь, что вы не пропустили ни одного уникального индекса в вашей таблице. Сохраните эту процедуру в стандартном модуле и вызовите ее из окна «Немедленно» с именем таблицы назначения.

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 индекса: первичный ключ (уникальный по определению) для идентификатора; уникальный индекс для 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
...