The_Life Ответов: 4

Как сбросить поле AutoNumber в MS-Access


Друзья
Я создал таблицу в ms-access table.
в этом случае я создал поле invoiceno как autonumber.
теперь я закончил проект.
я удалил все данные тестирования в таблице.
в то время как я удалял автономер был 1027
после полного удаления данных из таблицы.
я попытался вставить новую пластинку.
автономер идет 1028 я не хочу 1028 я хочу начать с 1(т. е. с начала).

так как же я могу это сбросить?


спасибо

4 Ответов

Рейтинг:
30

OriginalGriff

AFAIK вы не можете, не удалив поле и не создав его заново.

Для этого есть веские причины.
1) автономер часто используется (к сожалению) в качестве индекса к таблице. Это означает, что могут существовать и другие строки, которые ссылаются на Теперь удаленную строку по предыдущему автономер-ному номеру. Если бы вы могли сбросить номер, то эти строки в конечном итоге были бы связаны с новой строкой вместо этого.

В вашем случае представьте себе, какие проблемы возникнут, если вы используете автономер в качестве номера счета-фактуры и имеете отдельную таблицу товаров в счете-фактуре. затем они будут ссылаться обратно на счет-фактуру по автономер-ному номеру. Если вы сбросите номер, внезапно клиенту выставят счет за тридцать товаров, которые он не заказывал и не имел. Начинаются неприятности.

Лично я ненавижу autonumber и использую его только тогда, когда никогда не буду ссылаться на него: например, в качестве индекса для таблицы журнала. Если вам нужна конкретная последовательность номеров счетов-фактур (а юридически вы это делаете в большинстве областей), подумайте о написании хранимой процедуры для выделения нового номера счета-фактуры и вместо этого используйте Guid для фактической ссылки на строку базы данных.


Рейтинг:
25

Jαved

После удаления всех строк в таблице сжатие базы данных должно сбросить значение Autonumber обратно на 1.

для уплотнения базы данных перейдите по этой ссылке-

Как сжать базу данных Microsoft Access с помощью Visual Basic .NET[^]


Рейтинг:
1

hemendrapadia

You can execute an Access DDL statement from ADO to reset the autonumber seed value. Here is an example Immediate window session:

strDdl = "ALTER TABLE Dummy ALTER COLUMN ID COUNTER(1, 1);"
CurrentProject.Connection.Execute strDdl

The statement must be executed from ADO. It will fail if you try it with DAO (such as CurrentDb.Execute strDdl), or from the Access query designer. The example succeeded because CurrentProject.Connection is an ADO object.

The two values following COUNTER are seed and increment. So if I wanted the autonumber to start from 1000 and increment by 2, I could use COUNTER(1000, 2)

If the table contains data, the seed value must be greater than the maximum stored value. If the table is empty when you execute the statement, that will not be an issue.


------------
http://stackoverflow.com/questions/20738596/how-to-reset-an-access-tables-autonumber-field-it-didnt-start-from-1[^]

Кредит идет к -> HansUp


Рейтинг:
1

Member 14823053

Простой способ, чтобы..

удалите все пустые записи в таблице

переименовать в table0 - если вас предупредили о связях, запишите их и удалите

скопируйте структуру таблицы, щелкнув правой кнопкой мыши на таблице и выбрав только структуру-сохраните ее как таблицу

щелкните правой кнопкой мыши table0, выберите переместить данные в другую таблицу - выберите таблицу для отправки

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