Как сделать нумерацию в таблице по возрастанию (не счетчиком)?
Автор 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



Просмотров: 8337

  Ваш коментарий будет первым

Добавить коментарий
Имя:
E-mail
Коментарий:



Код:* Code