ГлавнаяMS ACCESS Как сделать нумерацию в таблице по возрастанию (не счетчиком)?
Как сделать нумерацию в таблице по возрастанию (не счетчиком)?
Автор silich
05.08.2001 г.
Пример будет хорош для новичков. С подробным объяснением...
Андрей 12.06.2001
От: Андрей 12.06.2001 16:14:41 Как сделать нумерацию в таблице по возрастанию (не счетчиком)? Подскажите чайнику, пожалуйста, как сделать в таблице или в форме нумерацию по возрастанию? Счетчик не годится, т.к. нужна возможность изменить число вручную.
silich 12.06.2001
От: silich 12.06.2001 17:00:36 у меня есть такой вариант пишет следующий ID (тип - счетчик) по порядку, если есть пропуск (было удаление в середине) возьмёт его... :))
Option Compare Database Option Explicit
Function NextRIdx() As Long Dim bd As Database, rs As Recordset, i As Long NextRIdx = 0 'Эта указявка на текущую базу данных и 'доступ к своей таблице (открываем рекордсет) Set rs = CurrentDb.OpenRecordset("Marina", dbOpenDynaset):
'Появляется счетчик i = 0
'Встать на первую запись в таблице rs.MoveFirst
'Выполнять цикл до тех пор, пока не кончатся записи в таблице (действия в 'цикле ограничены условием EOF) Do Until rs.EOF
'При выполнени цикла счетчик увеличивает значение на единицу i = i + 1 'Мы последовательно переходим по записям и номерам счетчика 'то есть пытаемся их синхронизировать по порядку If i <> rs![aID] Then 'Ах разлад! Получай фашист гранату! найдена брешь в нумерации! 'присваиваем функции найденное значение NextRIdx = i
'Выходим из цикла, искомое найдено Exit Do End If
'переход на следующую запись rs.MoveNext 'область действия цикла Loop
'Если таблица пустая или пропусков не было 'тогда добавляем следующее значение If NextRIdx = 0 Then NextRIdx = i + 1
'а теперь его можно записать в таблицу With rs .AddNew ![aID] = NextRIdx .Update End With 'Закрываем рекордсет rs.Close MsgBox NextRIdx End Function