Access как обнулить счетчик в таблице
Как «заставить» счетчик начинать нумеровать с произвольного номера и с произвольным инкрементом
Иногда необходимо изменить начальный номер счетчика с которого начинается автоматический отсчет. Просто так в Access это сделать не удастся.
Для того, чтобы добиться этой цели, необходимо добавить в таблицу запись с нужным значением счетчика.
Редактировать поле «счетчик» можно разными путями — либо запросом на добавление, либо из кода VBA с помощью объекта Recordset.
Пример с использованием временной таблицы и запроса:
Допустим, у Вас есть таблица Table1, которая содержит поле счетчика ID, которое вы желаете стартовать с другого номера. Не вводите пока никаких записей в таблицу. Создайте, другую временную таблицу с одним полем типа Длинное целое, которое имеете тоже имя (в нашем случае ID), что и поле счетчика в первой таблице. Создайте запись во временной таблице, введя номер на единицу меньше того, с какого вы желаете стартовать счетчик в таблице Table1. Создайте запрос на добавление, чтобы добавить одну запись из второй таблицы в первую таблицу, и запустите его. Удалите вторую временную таблицу, удалите запись, которая появилась в таблице Table1 и начинайте вводить данные.
Пример с использованием запроса:
‘Есть таблица «Table1» с полем «ID» типа «счетчик»
PARAMETERS [Number] Long;
INSERT INTO Table1( [ID] )
Select [Number] As Expr1;
Создаете новый запрос, добавляете таблицу, выбираете режим SQL, вставляете эти строки и сохраняете запрос.
После выполнения запроса введите желаемое число и поле счетчик в таблице будет нумеровать именно с этого номера.
Пример с использованием VBA:
‘Есть таблица «Table1» с полем «ID» типа «счетчик»
Public Function AddNumer(lNum As Long) As Long
On Error GoTo Err_
Dim rs As Recordset
Set rs = CurrentDb.OpenRecordset(«Table1»)
Учтите только, что если Вы введете число меньше, чем значение счетчика в данный момент, запись добавится, но нумерация все равно будет идти по принципу: максимальное число + 1. Например, у Вас значение счетчика было 333, Вы добавляете запись со значением 222 — запись, конечно, добавится, но все равно счетчик будет продолжать нумеровать 334, 335, 336. т.е. максимальное значение в данном поле + 1.
После удаления всех записей из таблицы, поле счетчик не сбрасывается на единицу, а продолжает последовательно нумеровать и дальше. Поэтому необходимо после очистки таблицы сжать (compact) базу данных. Если из таблицы удалить не все записи, то после сжатия значение поля autonumber при добавлении будет равно максимальному — тому, что уже есть в таблице +1 (Если, конечно, свойство поля счетчик «New Values» установлено в «Increment»). Другой путь сбросить на единицу — удалить поле счетчика и создать его снова в таблице.
Можно использовать мощные инструкции SQL:
‘Есть таблица «Table1» с полем «ID» типа «счетчик»
ALTER TABLE Table1 ALTER COLUMN ID Counter(1,1)
Создаете новый запрос, добавляете таблицу, выбираете режим SQL, вставляете эти строки и сохраняете запрос.
Можно сказать, что это малодокументированная команда 😉 с широкими возможностями управления полем типа счетчик.
Команда позволяет задавать для таблицы начальный отсчет (1,1) и инкремент (1,1). Можно задавать, например, начальный отсчет с 1000 с инкрементом в 10 . Counter(1000,10), причем никаких ограничений не накладывается — можно задавать значение меньшее, чем максимально присутствующее в этом поле, в отличие от примера с использованием запроса. Никаких процедур по сжатию базы для сброса счетчика не требуется. Понятно, что если будет пересечение, т.е. добавляемое значение счетчика уже присутствует в таблице, то механизм индексирования не даст ввести дублирующее значение и вывесит предупреждающее сообщение. Также нельзя таким способом изменить значение счетчика, если поле счетчика (в данному случае ID) участвует в одной или нескольких связях. С другой стороны, что стоит удалить связь, выполнить запрос на изменение счетчика и заново создать связь.
Как сбросить значения поля счетчика в базе Access (3 ПРОСТЫХ способа)
Для просмотра онлайн кликните на видео ⤵
Как сделать нумерацию строк в отчете Access Подробнее
Microsoft Access № 56: изменение поля счётчика Access Подробнее
КАК и ЗАЧЕМ использовать мастер подстановок в Microsoft Access Подробнее
Как связать таблицы в базе данных Microsoft Access 2016 Подробнее
Сортировка и группировка данных с итогами в отчетах Access Подробнее
Как создать макросы в Microsoft Access за 7 минут Подробнее
Первое знакомство с базами данных Microsoft Access Подробнее
Как создать главную кнопочную форму в Microsoft Access за 9 минут Подробнее
Как ЛЕГКО и БЫСТРО создать схему данных в Microsoft Access? Подробнее
Как создать запросы в Microsoft Access за 10 минут Подробнее
Автоматическое заполнение полей в базе Access Подробнее
Основные свойства полей таблицы Microsoft Access Подробнее
Microsoft Access № 14: сортировка и фильтрация при загрузке таблицы (формы) Access Подробнее
Как создать формы в Microsoft Access за 10 минут Подробнее
Как сделать формы в базе данных Microsoft Access 2016 (1 часть) Подробнее
Access. Таблицы. 2. Первичный ключ. Подстановки. Подробнее
Флажки и группа переключателей в базе данных Access Подробнее
Microsoft Access № 34: cумма в смешанном поле Access (числа и текст) Подробнее
Как создать таблицы в Microsoft Access за 8 минут Подробнее
Привет
Русскоязычный информационно-болтологический форум
как «обнулить» базу в Access’e?
как «обнулить» базу в Access’e?
Post by dima_ca » Wed Feb 09, 2005 7:16 am
Народ, я тут на досуге всё воюю с одним вебсаитом — перевожу его с XML на Access. В процессе отладки несколько раз обнулял базу «вручную», а потом просто добавил «delete table. » в скрипт, каздый раз перед запуском скрипт стирает все таблицы. И тут вдруг я заметил, что размер файла, пустой базы, 12M ! Другое неудобство — то чо Autonumbers продолжают расти с каждым прогоном.
Вопрос: как можно сделать экспорт структуры базы не экспортируя данных в Access’e (или может быть надо вообще как-то по другому это сделать?)
Re: как «обнулить» базу в Access’e?
Post by cityzen » Wed Feb 09, 2005 8:23 am
MSACCESS.EXE yourbase.mdb /compact
Post by Sergey___K » Wed Feb 09, 2005 8:28 am
Ничего не понял, кроме того, что нужно сделать Repair Compact database, чтобы autoincrenet’ить занова если таблица пустая.
А вообще, если только структуры таблиц:
File->Get External Data -> Import -> (select database, click «Import») -> Options >> -> «Import Tables» group -> Definitions Only
Re: как «обнулить» базу в Access’e?
Post by dima_ca » Wed Feb 09, 2005 8:28 am
MSACCESS.EXE yourbase.mdb /compact
Спасибо! Я сейчас попробовать это не могу, только вечером, поэтому ещё вопрос: индексы это тоже обнулит или нет?
Re: как «обнулить» базу в Access’e?
Post by cityzen » Wed Feb 09, 2005 8:36 am
MSACCESS.EXE yourbase.mdb /compact
Спасибо! Я сейчас попробовать это не могу, только вечером, поэтому ещё вопрос: индексы это тоже обнулит или нет?
Post by dima_ca » Wed Feb 09, 2005 9:00 am
Sergey___K wrote: Ничего не понял, кроме того, что нужно сделать Repair Compact database, чтобы autoincrenet’ить занова если таблица пустая.
А вообще, если только структуры таблиц:
File->Get External Data -> Import -> (select database, click «Import») -> Options >> -> «Import Tables» group -> Definitions Only
Post by Sergey___K » Wed Feb 09, 2005 10:54 am
Post by dima_ca » Wed Feb 09, 2005 4:59 pm
Post by Dimka69 » Wed Feb 09, 2005 5:44 pm
Sergey___K — а Вы IT? — просто интересно. Все IT-шники, которых я встречал люто ненавидят Ассess, в отличие от business people, которые находят его достаточно удобным и полезным и тихо с его помощью делают многие вещи.
Интересно, что в моей предыдущей компании главный IT (CIO) так люто ненавидел Access, что просто не давал нам работать и в буквальном смысле каждый день харассил нас тем, что IT Access просто уберет. Я там уже год не работаю, но по слухам с той стороны гор, IT до сих разрабатывает application, которое придет на смену Access в том процессе. Кажется даже до Беты еще не дошли.
В нынешней компании IT тоже не любит Access, разве что не грозятся убить процессы на корню, а «предлагают замену» (уж как полгода). Однако есть одна операция в процессе, которую мы можем сделать только в Ассеss что наше IT и предложило нам.
По этому от имени бизнес-people скажу, Во-первых, для меня Access удобен, в том числе и тем, что он работает как Client у SQL Server, и тем, что он входит в стандартный Office Professional. А во-вторых, to IT: «Ребята, я не возражаю, только дайте мне то, что мне нужно быстро и без объяснений плохой-хороший.» А то начинаются разговоры «правильно — не правильно». Мне работу делать нужно, а не философию разводить.
Мое предсказание, что Access here to stay и у каждого продукта своя цель и ниша.
Sorry for off-topiс above. По теме уже ответили.
Post by BezKovshaPrishel » Wed Feb 09, 2005 6:44 pm
Sergey___K — а Вы IT? — просто интересно. Все IT-шники, которых я встречал люто ненавидят Ассess, в отличие от business people, которые находят его достаточно удобным и полезным и тихо с его помощью делают многие вещи.
Интересно, что в моей предыдущей компании главный IT (CIO) так люто ненавидел Access, что просто не давал нам работать и в буквальном смысле каждый день харассил нас тем, что IT Access просто уберет. Я там уже год не работаю, но по слухам с той стороны гор, IT до сих разрабатывает application, которое придет на смену Access в том процессе. Кажется даже до Беты еще не дошли.
В нынешней компании IT тоже не любит Access, разве что не грозятся убить процессы на корню, а «предлагают замену» (уж как полгода). Однако есть одна операция в процессе, которую мы можем сделать только в Ассеss что наше IT и предложило нам.
По этому от имени бизнес-people скажу, Во-первых, для меня Access удобен, в том числе и тем, что он работает как Client у SQL Server, и тем, что он входит в стандартный Office Professional. А во-вторых, to IT: «Ребята, я не возражаю, только дайте мне то, что мне нужно быстро и без объяснений плохой-хороший.» А то начинаются разговоры «правильно — не правильно». Мне работу делать нужно, а не философию разводить.
Мое предсказание, что Access here to stay и у каждого продукта своя цель и ниша.
Sorry for off-topiс above. По теме уже ответили.
Как сбросить значения поля счетчика в базе Access (3 ПРОСТЫХ способа)
KOMMENTARE • 12
Спасибо за помощь.
Спасибо! Третьего способа не знал. Очень помогло.
В Access 2007 третий вариант (с восстановлением БД) не работает. 🙁 Может из-за того, что таблица, где необходимо такое действие, имеет связи с другими таблицами?
А как сделать, чтобы счётчик начинал счёт записей таблицы не с 1, а с какого-то конкретного значения?!
Т.е. я хочу, чтобы в одной таблице в ключевом поле счётчик присваивал id 1000001, 1000002, 1000003. а в другой — 2000001, 2000002, 2000003.
Возможно ли это вообще?
@Уроки по Microsoft Access, уже попробовал, всё работает. Спасибо!)
Да запросом sql
@Уроки по Microsoft Access, не совсем понимаю как. Запрос SQL?
С помощью insert вставьте в таблицу первую запись, где будет 10001, далее при заполнении номера пойлут по порядку
А когда может потребоваться сброс первичного ключа?
Если запись не удачно удалили, и вам принципиальна правильная последовательность
можно ли на одном ноуте поставить и Microsoft Access 2003, и Microsoft Access 2016 так, чтобы они работали корректно.
Спасибо, ты ЛУЧШИЙ!
+Пётр Иванов спасибо, что смотрите
А что случается со связями, запросами и отчетами при первых 2х способах?? Я думаю это нужно было упомянуть в видео..
и присвоятся другие значения в связанных таблицах, не удаляйте ключевое поле если с ним есть связь. А если вам надо поле где цифры идут по порядку то создайте новое поле счетчик и задействуйте его в отчетах.
ничего. если есть связи, то поле вы не удалите. сначала надо будет убрать связь, пересоздать поле и потом вернуть связь.
Добрый день! Сделайте ролик, который показывает, как добавить на кнопку действие копировать в буфер обмена часть записи в ячейке.
Добавление и изменение первичного ключа таблицы в Access
Первичный ключ — это поле или набор полей со значениями, уникальными во всей таблице. Значения первичного ключа можно использовать для ссылки на любую запись, поскольку у каждой записи свое значение. В таблице может быть только один первичный ключ. Access может автоматически создавать поле первичного ключа при создании таблицы. Вы также можете самостоятельно указать поля, которые нужно использовать в качестве первичного ключа. В этой статье объясняется, как и зачем использовать первичные ключи.
Чтобы задать первичный ключ таблицы, откройте таблицу в режиме конструктора. Выберите нужное поле (или поля), а затем на ленте щелкните Ключевое поле.
Примечание: Эта статья относится только к классическим базам данных Access. В веб-приложениях Access и веб-базах данных первичный ключ для новых таблиц назначается автоматически. Несмотря на то что автоматические первичные ключи можно менять, делать это не рекомендуется.
В этой статье
Общие сведения о первичных ключах в Access
С помощью полей первичных ключей Access быстро связывает данные из нескольких таблиц и объединяет эти данные по заданному принципу. Поля первичного ключа можно использовать в других таблицах для ссылки на таблицу, являющуюся источником первичного ключа. В этих таблицах такие поля называются внешними ключами. Например, поле «ИД клиента» из таблицы «Клиенты» может также использоваться в таблице «Заказы». В таблице «Клиенты» оно будет первичным ключом, а в таблице «Заказы» — внешним. Проще говоря, внешний ключ — это первичный ключ другой таблицы. Дополнительные сведения см. в статье Основные сведения о создании баз данных.
1. Первичный ключ
При переносе существующих данных в базу данных в них уже может существовать поле, которое можно использовать как первичный ключ. Часто в роли первичного ключа таблицы выступает уникальный идентификационный номер, например порядковый или инвентарный номер или код. Например, в таблице «Клиенты» для каждого клиента может быть указан уникальный код клиента. Поле кода клиента является первичным ключом.
Для первичного ключа автоматически создается индекс, ускоряющий выполнение запросов и операций. Кроме того, приложение Access проверяет наличие и уникальность значений в поле первичного ключа.
При создании таблицы в режиме таблицы Access автоматически создает первичный ключ с именем «Код» и типом данных «Счетчик».
Создание приемлемого первичного ключа
Чтобы правильно выбрать первичный ключ, следует учитывать несколько характеристик.
Ключ должен однозначно определять каждую строку.
В нем не должно быть пустых или отсутствующих значений — он всегда содержит значение.
Ключ крайне редко изменяется (в идеале — никогда).
Если не удается определить приемлемый ключ, создайте для него поле с типом данных «Счетчик». Поле «Счетчик» заполняется автоматически созданными значениями при первом сохранении каждой записи. Таким образом, поле «Счетчик» соответствует всем трем характеристикам приемлемого первичного ключа. Дополнительные сведения о добавлении поля «Счетчик» см. в статье Добавление поля счетчика в качестве первичного ключа.
Поле с типом данных «Счетчик» является хорошим первичным ключом.
Примеры неудачных первичных ключей
Любое поле, не имеющее одной или нескольких характеристик подходящего первичного ключа, не следует выбирать в качестве первичного ключа. Ниже представлено несколько примеров полей, которые не годятся на роль первичного ключа в таблице «Контакты», и пояснения, почему их не следует использовать.