![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 15.06.2009
Сообщений: 4
|
![]()
Есть процедура добавления свойств объектов в базу данных.
Когда вызываю при создании объектов, все работает. Стоит в одном месте кода вызвать два раза подряд, и MSAccess начинает ругаться на совпадающие значения индекса. Хотя ключ, он же индекс, инкрементируется при создании программно ![]() Что не так? Код:
Код:
![]() Стоит снять требование на несовпадающие индексы через Access, проблема исчезает. Но в чем она состоит-то? в первый раз мы получаем значение ID, допустим, 27, и пишем его в качестве индекса объекта в БД. Во второй раз мы читаем значение 27 и пишем значение 28. Должно катить, но не катит. Последний раз редактировалось White_Dove; 15.06.2009 в 13:52. |
![]() |
![]() |
![]() |
#2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Хм... А чего б не поставить тип поля СЧЕТЧИК и пусть сам Акцесс заботится об инкременте ключа?
I'm learning to live...
|
![]() |
![]() |
![]() |
#3 |
Регистрация: 15.06.2009
Сообщений: 4
|
![]()
Перефразируя классическое, код не мой, я просто с ним работаю.
Но т.к. автор кода недоступен, приходится разбираться ![]() Желательно все-таки понять, как исправить ситуацию средствами ADO Какого фига один вызов такой функции прокатывает, а второй - валится на ПОСТе? Последний раз редактировалось White_Dove; 15.06.2009 в 14:20. |
![]() |
![]() |
![]() |
#4 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Тут только отладчик даст тебе четкие ответы. Я бы пошагам прошелся, и посмотрел чего там в ID пишется...
А вообще это не очень удачная тактика. Советую ее не использовать.
I'm learning to live...
|
![]() |
![]() |
![]() |
#5 | |
Регистрация: 15.06.2009
Сообщений: 4
|
![]() Цитата:
в первый раз мы получаем значение ID из последней записи БД(ID=26), и для новой формируемой записи используем значение 27. Именно это и показывает отладчик. Во второй раз мы читаем значение 27 из последней записи (только что созданной) и используем значение 28. Перед самым вызовом поста значение ds.Fields[0].AsInteger во вновь формируемой записи=28! Жму F8, и БД выдает ошибку совпадающих индексов! ![]() Переформулирую вопрос применительно к ADO: Достаточно ли тех операторов, которые есть, чтобы применять эту функцию несколько раз подряд? |
|
![]() |
![]() |
![]() |
#6 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Можно глянуть на твою БД?
I'm learning to live...
|
![]() |
![]() |
![]() |
#7 |
Холост/Не замужем
Форумчанин
Регистрация: 13.11.2007
Сообщений: 283
|
![]() Код:
или попробуй в своем коде заменить ds.Insert; на ds.Append; Последний раз редактировалось Gulik; 15.06.2009 в 20:36. |
![]() |
![]() |
![]() |
#8 |
Регистрация: 15.06.2009
Сообщений: 4
|
![]()
Мне необходимо заменить один объект на два и, соответственно, заменить одну запись в БД на две.
Но тогда вопрос: Гулик, если для тебя вопрос ругани очевиден, можно поподробнее, в каком месте ругань? И как, и почему ты модернизировал мой код? Меня ногами не пинать, я с ADO месяц как знаком. Но проблему решать надо. На всякий случай: код удаления записи в программе следующий: Код:
Последний раз редактировалось White_Dove; 16.06.2009 в 14:03. |
![]() |
![]() |
![]() |
#9 |
Холост/Не замужем
Форумчанин
Регистрация: 13.11.2007
Сообщений: 283
|
![]()
мое мнение:
Каждую новую запись тебе нужно добавлять в конец таблицы, делать это лучше с помощью Append а не переходить в конец таблицы, проверять её полноту записей а затем добавлять новую. И тебе уже говорили что пусть сам Акцесс заботится об инкременте ключа |
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Удаление записи. ADO | Rekky | БД в Delphi | 13 | 02.11.2011 12:46 |
Как удалять записи по условию, через ADO | Dimok82 | БД в Delphi | 4 | 13.03.2009 19:28 |
Удалить 2 записи. ADO... | Roof | БД в Delphi | 9 | 18.08.2008 20:32 |
Отображение записи (работа с ADO) | А. Долматов | БД в Delphi | 3 | 21.08.2007 16:58 |
MS SQL server 2000, ADO. Добавленые записи не отображаются при последующих запросах. | _victor | БД в Delphi | 1 | 17.06.2007 13:33 |