Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Базы данных > Обнулить счетчик в Access


Автор: yours-tester 2.7.2007, 12:53
Перед вставкой в базу данных новых значений 
удаляю из неё все записи:
Код

 sSQLString=_T("DELETE * FROM Executors");
 dstConn->Execute(sSQLString, 0 , ADODB::adCmdText);


в базе есть поле ID - длинное целое, тип данных счетчик,
последовательные значения, совпадения не допускаются, индексированное

и несмотря на то что все записи были удалены в дальнейшем при добавлении
записей нумерация в это поле продолжается со старого значения...

Возможно ли обнулить этот счетчик?

Автор: jonie 2.7.2007, 18:27
только изменив значение текущее счетчика в файле (что незаконно - формат закрытый). Иначе имхо никак ( я задавался подобной проблемой давно и иного решения законного ненашел). Да  и зачем это надо... на то оно и уникальное значение...

Автор: yours-tester 3.7.2007, 08:04
Цитата(jonie @  2.7.2007,  18:27 Найти цитируемый пост)
только изменив значение текущее счетчика в файле (что незаконно - формат закрытый). Иначе имхо никак 


Да вот и изменение текущего значения счетчика в файле не помогает.
Я несколько раз скопировал базу DBF-> в файл Access, там чуть менее 200 записей, пока я несколько раз копировал не удаляя старые записи счетчик догнался до ~1000, затем я стал удалять старые записи, но счетчик всё равно шел вверх. Тогда я стал принудительно переписывать и сам счетчик через ADO, теперь в базе последняя запись 198, а когда добавляешь новую у неё становится номер 1458. Вот и решил выяснить, а нет ли способа в это вмешаться и принудить Access считать как мне надо. Должен же быть способ какой то не могли же они это не предусмотреть...

Автор: Rodman 3.7.2007, 08:35
я не уверен, но http://forum.vingrad.ru/index.php?show_type=forum&showtopic=160829&hl=increment+alter попробуй

Автор: yours-tester 3.7.2007, 12:50
Да там по ссылке похожая проблема, но решение для MySQL,
JET такую команду не принимает

_com_error.descripton():
Invalid SQL statement; expected 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT', or 'UPDATE'.

Тут похоже нужен специалист по MS Access.

Автор: Rodman 3.7.2007, 12:53
Код

Подскажите чайнику - в таблице поле - "Счетчик". Набрано 8 записей. после их удаления при наборе новых записей счет идет с 9 и дальше. Как обнулить счетчик?
Ответ.
   Вопрос сложный. Access не даст Вам изменить поле счетчика ручным или программным способом. Выход заключается в том, что необходимо уничтожить старое поле "Счетчик", а потом создать новое. Недостаток такого способа - рост размера базы данных. Пример создания и удаления счетчика приведен в программе la_table.mdb.
   P.S. Теоретически и практически возможно изменение счетчика, минуя ядро Access, но для этого необходимо знать структуру mdb файла. Я никогда в разработках не использую поле счетчик, а стараюсь генерировать уникальный номер с помощью собственной функции.


http://www.leadersoft.ru/russian/help/subscribe/sub17.htm

Автор: yours-tester 3.7.2007, 12:59
Видимо ты прав, прекращаю стучаться лбом о стену.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)