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

121178
KronoS

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

1001

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

1001

1002

1003

...

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

8
Не ответ, а предупреждение: Autonumber не предназначен для такого управления. Я видел, как бесчисленные люди пробуют это. Это * никогда * не работает, потому что БД будет иногда делать странные вещи, увеличиваясь (например, неудачные записи по-прежнему увеличивают число). Autonumber * не * гарантирует, что номера записей будут последовательными. Действительно, в [редких случаях] (http://allenbrowne.com/ser-40.html) он даже не гарантирует, что число будет уникальным. Это очень полезно для создания первичного ключа для небольшой таблицы. Это немного рискованно для больших столов. Это абсолютно ужасно для использования в качестве фактического поля данных. Он Bacon Bits 12 лет назад 5
@BaconBits ... для чего же нужно использовать AutoNumber? KronoS 12 лет назад 0
Остальная часть комментария @ BaconBits: как только вы видите подобные статьи, когда что-то становится грушевидным, потому что люди ожидают, что Autonumber будет чем-то не таким. Если вам нужно сгенерировать числа таким способом, напишите запросы и тому подобное в БД, чтобы сделать это самостоятельно. BloodPhilia 12 лет назад 0

7 ответов на вопрос

12
BloodPhilia

Хотя 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. Перейдите на вкладку «Создать» и нажмите «Дизайн запроса»
    enter image description here

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

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

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

  5. Нажмите «Выполнить».
    enter image description here

хороший ответ, но это создает новую таблицу ... или я не прав? Можно ли это сделать в уже созданной таблице? KronoS 12 лет назад 0
@KronoS Обновлено мой ответ BloodPhilia 12 лет назад 0
1
music2myear

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

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

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

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

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

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

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

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

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

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

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

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

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

0
Brent

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

0
ssurjie

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

0
George

На этом веб-сайте есть очень простой способ начать свой автоматический номер с любого числа, которое вы пожелаете: 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
muhammad

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

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

Это похоже на принятый ответ, за исключением использования другого ключевого слова (а другое * намного * лучше отформатировано). Ваш ответ действительно другой? Можете ли вы объяснить, как? Ваш ответ лучше? Зачем? Пожалуйста, не отвечайте в комментариях; [отредактируйте] ваш ответ, чтобы сделать его более понятным и полным. Scott 5 лет назад 0

Похожие вопросы