У меня есть приложение VB6 / Access, которое иногда сталкивается с проблемой неправильного заполнения поля автонумерации.
Допустим, есть таблица MYTABLE с идентификатором поля номера автонумера (это также первичный ключ). Допустим, на данный момент максимальное значение идентификатора равно 1000. Когда приложение вставляет новую запись (значение идентификатора не указывается явно), по какой-то причине оно решает, что значение следующего поля автонумерации равно 950 (а не 1001, как должно быть) ) - поэтому возникает ошибка нарушения первичного ключа.
Я нашел статью в КБ, в которой описаны мои симптомы: http://support.microsoft.com/kb/884185. Короче говоря, они предлагают выполнить запрос:
ALTER TABLE MYTABLE ALTER COLUMN ID COUNTER(1001,1)
Когда я пытаюсь это сделать, происходит сбой с «Неверный тип данных поля»
Проблема исправляется, если я открываю базу данных в Access и выполняю сжатие / восстановление, но мне нужно иметь возможность исправить такие проблемы внутри приложения: оно установлено на паре тысяч компьютеров по всему миру и запрашивает люди сжимать / ремонтировать с помощью Access не вариант.
Я использую DAO DBEngine.CompactDatabase
для выполнения сжатия / восстановления внутри приложения, но это не решает проблему с начальным числом, и необходимы некоторые дополнительные уловки.
Надеюсь, у кого-то есть идея для решения, я действительно близок к отчаянию
Спасибо всем