Как мне установить первое значение AutoNumber в Access?

9

Мне не нужно сбрасывать значение AutoNumber, как в этом вопросе , но я бы хотел сначала установить число в:

1001

Который затем увеличивается как обычно:

1001

1002

1003

...

Как мне сделать это в Access 2010?

Джеймс Мерц
источник
5
Не ответ, а предупреждение: Autonumber не предназначен для такого управления. Я видел, как бесчисленные люди пробуют это. Это никогда не работает, потому что БД будет делать странные вещи, увеличиваясь иногда (неудачные записи все еще увеличивают число, например). Автономер не гарантирует, что номера записей будут последовательными. Действительно, в редких случаях это даже не гарантирует, что число будет уникальным. Это очень полезно для создания первичного ключа для небольшой таблицы. Это немного рискованно для больших столов. Это абсолютно ужасно для использования в качестве фактического поля данных. Он
беконные биты
@BaconBits ... для чего же нужно использовать AutoNumber?
Джеймс Мерц
Остальная часть комментария @ BaconBits: раз вы видите статьи, подобные этой, когда что-то становится грушевидным, потому что люди ожидают, что Autonumber будет чем-то, что не так. Если вам нужно сгенерировать числа таким способом, напишите запросы и тому подобное в БД, чтобы сделать это самостоятельно.
Переполнение стека умерло

Ответы:

16

Хотя Access не предлагает эту функцию изначально, это может быть достигнуто с помощью запроса, например:

CREATE TABLE TableThatIncrements
(
Id AUTOINCREMENT(1001,1)
)

Это создаст одну таблицу с именем «TableThatIncrements» с одним столбцом с именем «Id». Теперь вы можете использовать редактор таблиц для добавления свойств и / или других столбцов.

+ Изменить

AUTOINCREMENT(x,y)

в соответствии с вашими потребностями, где xномер начального приращения и yномер для увеличения. Так AUTOINCREMENT(100,5)что даст: 100, 105, 110, 115 и т. Д.

Если вы хотите изменить существующую таблицу, используйте следующий запрос. Убедитесь, что вкладка определенной таблицы закрыта, чтобы Access мог заблокировать ее и изменить.

ALTER TABLE TableThatIncrements
   ALTER COLUMN Id AUTOINCREMENT(1001,1)

Вы можете запустить запрос в Access, выполнив следующие действия:

  1. Перейдите на вкладку «Создать» и нажмите «Дизайн запроса»
    введите описание изображения здесь

  2. Просто закройте окно, которое предлагает выбрать таблицы, нам это не нужно.

  3. Перейдите на вкладку «Дизайн» и нажимайте кнопку со стрелкой, пока не появится экран ввода текста. (По умолчанию написано SELECT;).
    введите описание изображения здесь

  4. Удалите текст по умолчанию и вставьте вышеуказанный запрос.

  5. Нажмите «Выполнить».
    введите описание изображения здесь

Переполнение стека мертв
источник
хороший ответ, но это создает новую таблицу ... или я ошибаюсь? Можно ли это сделать в уже созданной таблице?
Джеймс Мерц
@KronoS Обновлено мой ответ
переполнение стека мертв
2

1- Создать таблицу1 2- Перейти к созданию -------> дизайн запроса. 3- Закройте таблицу 4- Перейдите к SQl сверху. 5- мимо этого кода.

ALTER TABLE [TABLE1] ALTER COLUMN [Id] СЧЕТЧИК (8982,1)

Магомет
источник
Это похоже на принятый ответ, за исключением использования другого ключевого слова (а другое гораздо лучше отформатировано). Ваш ответ действительно другой? Можете ли вы объяснить, как? Ваш ответ лучше? Почему? Пожалуйста, не отвечайте в комментариях; отредактируйте свой ответ, чтобы сделать его более понятным и полным.
Скотт
@Scott На самом деле они немного отличаются: ALTER COLUMN Id AUTOINCREMENT (1001,1) и ALTER COLUMN [Id] COUNTER (8982,1) видят слова AUTOINCREMENT и COUNTER, но они оба работают как положено
Вилли Вонка
1
@willyw: верно; Я сказал «то же самое ... за исключением использования другого ключевого слова ».
Скотт
@ Скотт опс, да, вы правы ... Я слишком быстро читал, извините ;-)
Вилли Вонка
1

На этом веб-сайте есть очень простой способ начать свой автоматический номер с любого числа, которое вы хотите: http://www.fmsinc.com/microsoftaccess/AutoNumber%20Field/Creating.asp

Вы создаете запрос с выражением, которое указывает поле autonumber изменить

«Сначала запустите этот запрос:

INSERT INTO tblName (ID) SELECT 999 AS Expr1

Где tblName - имя таблицы, а ID - имя поля AutoNumber.

Затем выполните второй запрос, чтобы удалить вставленную строку:

УДАЛИТЬ ИЗ tblName WHERE ID = 999;

(В качестве альтернативы вы можете просто открыть таблицу и вручную удалить введенную строку.)

Теперь следующей записи, добавленной в таблицу, присваивается значение 1000.

Этот метод работает с новой таблицей или с таблицей, у которой AutoNumber еще не достиг значения Seed. (Конечно, поле идентификатора для существующих строк не будет изменено, но последующие строки будут начинаться с 1000.) "

Джордж
источник
0

Вы должны обмануть Access, потому что он предполагает, что вас не интересует автономное число, отличное от того, которое он предоставляет.

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

Google "Access Change Autonumber Start", и вы найдете несколько вариантов для этого. Большинство полагается на создание запроса на добавление для изменения поля.

Создайте первую таблицу, которая содержит поле типа счетчика, которое вы хотите начать с другого номера. Не вводите никаких записей. Создайте вторую таблицу с одним полем типа длинного целого числа, имя которого совпадает с именем поля счетчика в первой таблице. Создайте запись во второй таблице, введя число на единицу меньше номера, с которого вы хотите запустить счетчик в первой таблице. Создайте запрос на добавление, чтобы добавить одну запись во второй таблице в первую таблицу и запустить ее. Удалить вторую таблицу, удалить запись, добавленную в первую таблицу, и начать ввод данных.

От MVPS.org: http://access.mvps.org/access/tables/tbl0005.htm

Если вам не хочется создавать запрос на добавление, вы всегда можете настроить таблицу, скопировать и вставить 1000 строк фиктивных данных из Excel, удалять записи до тех пор, пока не доберетесь до номера 1001, и продолжить с этого момента.

ОБНОВЛЕНИЕ: добавление объяснения причины

Причина, по которой для autonumber задано только начало от 1, состоит в том, что поле autonumber предназначено для использования в качестве внутреннего справочного поля, и в хорошей практике работы с базами данных обычно не следует использовать в какой-либо общедоступной форме. Он используется в тех случаях, когда в данной таблице еще нет уникального элемента для создания уникальной записи, по которой можно искать и индексировать таблицу.

music2myear
источник
Должен быть более простой способ сделать это ...
Джеймс Мерц
Я предполагаю, что хорошей новостью является то, что если вам нужно создать несколько таблиц с таким автонумерацией, вы можете просто создать одну, сохранить ее в файле базы данных «шаблона» и просто скопировать ее в новые файлы базы данных, как вам нужно.
music2myear
0

Это довольно старая тема, но она по-прежнему отображается в тройке лучших результатов поиска Google.

Одной из причин, по которой пользователь может захотеть изменить значение поля автонумерации, является исправление ошибки, вызванной редактированием базы данных. Когда администратор может захотеть внести некоторые значительные изменения во внешний интерфейс базы данных, этот администратор может сделать копии всех связанных таблиц и перенаправить копию разработки внешнего интерфейса на эти внутренние серверы. Если изменений достаточно, он может просто заменить рабочую копию внешнего интерфейса своей копией, перенаправив все связанные таблицы после тестирования.

Нет проблем, верно? Что ж, инкремент автонумерации остается за внешним интерфейсом. Таким образом, если рабочая сторона просто увеличила число автонумера на 50, 500 или 5000 номеров, пока администратор работал с копией, то новая рабочая копия будет повторять те же номера и не сможет вводить элементы в эти поля, один в то время, пока это не становится "в чистоте". Скопируйте 50, 500 или 5000 строк данных Excel и попытайтесь вставить их. В каждой строке будет ошибка (не забудьте подавить дальнейшие сообщения, когда она появится), но число автонумеров увеличится на эту величину, и вы в порядке. идти снова. Если вы используете автономные номера таким образом, рекомендуется увеличить число до того, на котором находится производственная база данных, перед тем, как перезаписать ее своей рабочей версией.

Это также способ начать ваш автономный номер со значения, превышающего 1. Как и в прежние времена, когда счетчик посещений страницы устанавливался на 17 479 на вашей домашней странице Geocities, когда на самом деле его посещали только 16 раз. Тобой.

RunsWithScissors
источник
0

Простой способ добиться чего-то подобного состоит в том, чтобы иметь поле Autonumber (например, «ID») и второе вычисляемое поле (например, «ItemID») и ввести формулу «1000+ [ID]» для вычисляемого поля. Это новое поле теперь будет автоматически отслеживать поле Autonumber, но будет начинаться с 1001 вместо 1.

казарка
источник
0

Я полагаю, что это может быть достигнуто для вашего пользовательского диапазона приращений, сначала создав скрытую таблицу, которая будет сохранять начальный разрыв автоинкрементов, начиная с нуля по вашему выбору, например. эта таблица будет содержать от 0 до 1050. Затем вы начнете с шагом 1055, 1060, 1065 и т. д. Затем вы спрячете эту часть данных из таблицы. Надеюсь это поможет. Похоже, что Access был спроектирован так, чтобы изначально выглядеть с нуля, так как возникнут конфликты.

ssurjie
источник