У меня есть приложение VB6/Access, которое иногда сталкивается с проблемой с неправильным полем поля autonumber.Сброс числа автозапуска
Допустим, что существует таблица MYTABLE с идентификатором поля autonumber (это также первичный ключ). Предположим, что в настоящий момент максимальное значение ID равно 1000. Когда приложение вставляет новую запись (значение ID не указывается явно), по какой-то причине она решает, что следующее значение поля для автозапуска равно 950 (а не 1001, как и должно быть) - поэтому возникает ошибка нарушения первичного ключа.
Я нашел статью в KB, которая описывает мои симптомы: http://support.microsoft.com/kb/884185. Короче говоря, они предлагают выполнить запрос:
ALTER TABLE MYTABLE ALTER COLUMN ID COUNTER(1001,1)
Когда я пытаюсь сделать это, он терпит неудачу с «Invalid поле типа данных»
Проблема будет исправлена, если открыть базу данных в Access и сделать компактный/ремонт, но мне нужно уметь исправлять такие проблемы внутри приложения: он установлен на нескольких тысячах компьютеров по всему миру, и попросить людей компактно/восстановить с помощью Access не вариант.
Я использую DAO DBEngine.CompactDatabase
для выполнения компактного/ремонта внутри приложения, но это не устраняет проблему семян, и необходимы некоторые дополнительные трюки.
Я надеюсь, что кто-то есть идея для решения, я очень близко к отчаянному
Спасибо всем
из curosity, вы закрываете таблицу ** Перед запуском '** ALTER TABLE MYTABLE ALTER COLUMN ID COUNTER (1001, 1) '? –
Если код находится внутри MDC/ACCDB доступа, языком является VBA, а не VB6. Просьба уточнить. – Fionnuala
@ Otaku: Да, конечно Этот запрос не работает как при выполнении внутри Access, так и при выполнении через DAO. Странно то, что: если в Access я удаляю поле автонабора, а затем создаю точно такое же поле, запрос работает. Похоже, что существуют разные варианты типа autonumber, но я не могу получить то, что это разница: – Incidently