Сбросить автонумерацию семян - PullRequest
7 голосов
/ 18 февраля 2010

У меня есть приложение 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 для выполнения сжатия / восстановления внутри приложения, но это не решает проблему с начальным числом, и необходимы некоторые дополнительные уловки.

Надеюсь, у кого-то есть идея для решения, я действительно близок к отчаянию

Спасибо всем

Ответы [ 3 ]

4 голосов
/ 18 февраля 2010

Пожалуйста, обратитесь к следующей статье, она содержит метод, который вы можете добавить в свой проект доступа для выполнения сброса заполнения. В прошлом это несколько раз помогало мне:

http://allenbrowne.com/ser-40.html

В дополнение к этому он дает объяснение и понимание причин и возможных решений таких проблем.

0 голосов
/ 28 февраля 2013

Возможно, вам удастся решить проблему с помощью компакта / ремонта:

In Access 2010:  Compact and Repair Database on the Database Tools ribbon.
In Access 2007:  Office Button | Manage.
In earlier versions:  Tools | Database Utilities.
0 голосов
/ 19 февраля 2010

Вам также может потребоваться убедиться, что ваша база данных настроена на использование ANSI 92, чтобы COUNTER распознавался как допустимый тип данных.

В Access 2007 перейдите к Параметры доступа, Дизайнеры объектов, Синтаксис совместимости SQL Server (ANSI 92) для установки этого.

...