Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Как купить рекламу на форуме


Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме 40000 рублей в месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.05.2010, 13:50   #1
Kveldulv
Пользователь
 
Регистрация: 09.02.2010
Сообщений: 25
По умолчанию Вставка данных в таблицу.

Здравствуйте!

Помогите, пожалуйста, разобраться. Есть форма, которая не привязана на прямую к таблице, а запонляется по резлуьтатам запроса (тексбоксам присваиваются значения). И есть кнопка вставки отредактированных данных новой строкой в ту же таблицу. И вот проблема, постоянно выскакивает ошибка "Violation of unique key. Cannot insert duplicate key in object". Понимаю, что ошибка связанна с ключом, но не могу понять её причину. После заполнения текстбоксов рекордсет закрывается, и при добовлении записи открывается заново. В таблице проставлен ключ и автоматическое увеличение. Вот код на добавление записи

Код:

Private Sub BottomSave_Click()
On Error GoTo Err_BottomSave_Click
    Dim Connect As New ADODB.Connection
    Connect.ConnectionString = "Provider=SQLOLEDB.1;Integrated  Security=SSPI;"Persist Security Info=False;Initial Catalog=_AFNPlanning;Data Source=RNOVDB0001"
    Connect.Open
    
    Dim result As New ADODB.Recordset
    result.LockType = adLockOptimistic
    result.CursorType = adOpenStatic
    
    result.Open "Common_Products", Connect
    result.AddNew
    
    result.Fields(1).Value = Me.BAANCode.Value
  ...........
   тут присвоение значений дальше
  ...........
    result.Fields(34).Value = Me.PackingSpec

    result.update
    result.Close
    
        
Exit_BottomSave_Click:
    Exit Sub

Err_BottomSave_Click:
    MsgBox Err.Description
    Resume Exit_BottomSave_Click
End Sub
Kveldulv вне форума Ответить с цитированием
Старый 24.05.2010, 19:43   #2
AdrenalinE
Пользователь
 
Аватар для AdrenalinE
 
Регистрация: 29.09.2007
Сообщений: 95
По умолчанию

Я так понимаю, что в таблице первое поле - это код чего-то, тип поля - AutoNumber (Increment). Правильно? Зачем тогда ему присваивать значение здесь:
Код:
result.Fields(1).Value = Me.BAANCode.Value
Access сам присвоит ему значение.
AdrenalinE вне форума Ответить с цитированием
Старый 25.05.2010, 09:27   #3
Kveldulv
Пользователь
 
Регистрация: 09.02.2010
Сообщений: 25
По умолчанию

Нет. Поле "ID" будет нулевым, т.е. оно в присваивании вообще не участвует.
Кажеться разобрался, похоже все дело в связях данной таблицы с другими. Некоторые поля в таблицы являются id записей с других таблиц, и похоже поэтому Access не позволяет проводить программный апдейт. В таблицу без связи данные вставляются прекрасно. Хотя, вставка строки в данную таболицу не ведет к изменению связных таблиц...
Kveldulv вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вставка записи в таблицу БД через запрос Mrudda БД в Delphi 7 07.05.2010 21:09
сортировка данных (пересчет возможных вариантов комбинаций, перенос данных в таблицу) Vitalik85 Microsoft Office Excel 4 11.08.2009 23:30
Вставка значения в таблицу с автоинкриментным полем artemavd БД в Delphi 5 16.05.2009 11:14
расширение и вставка данных в таблицу Dennikid Общие вопросы Delphi 12 06.10.2008 08:34
Вставка картинки в таблицу sabina_smile Помощь студентам 7 18.10.2007 15:29