(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Как "заставить" счетчик начинать нумеровать с произвольного номера и с произвольным инкрементом

Андрей Митин

Иногда необходимо изменить начальный номер счетчика с которого начинается автоматический отсчет. Просто так в 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")

rs.AddNew

rs![ID] = lNum

rs.Update

Ex_:

Exit Function

Err_:

Resume Ex_

End Function

Учтите только, что если Вы введете число меньше, чем значение счетчика в данный момент, запись добавится, но нумерация все равно будет идти по принципу: максимальное число + 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) участвует в одной или нескольких связях. С другой стороны, что стоит удалить связь, выполнить запрос на изменение счетчика и заново создать связь....

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 04.10.2007 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Microsoft Office 365 Профессиональный Плюс. Подписка на 1 рабочее место на 1 год
Microsoft Office 365 для Дома 32-bit/x64. 5 ПК/Mac + 5 Планшетов + 5 Телефонов. Подписка на 1 год.
Microsoft Windows Professional 10, Электронный ключ
Microsoft 365 Business Basic (corporate)
Microsoft 365 Business Standard (corporate)
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Безопасность компьютерных сетей и защита информации
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
OS Linux для начинающих. Новости + статьи + обзоры + ссылки
Новые программы для Windows
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100