Порядковый номер записей в таблице (или форме) Access?

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

chery
Сообщения: 1
Зарегистрирован: 22 май 2004, 10:48

Как мне отображать порядковый номер записей в таблице (или форме) ? ТОесть внизу на форме автоматом выводится номер п/п, а мне надо на табличной форме (или в самой таблице - поле) напротив каждой записи ставило ее п/номер.
Microsoft Access.
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Такое возможно в отчете.
chur
Сообщения: 195
Зарегистрирован: 17 фев 2004, 10:44
Откуда: Riga, Latvia

В модуле формы пишешь функцию:

Код: Выделить всё

Public Function GetSerialNo(id As Long) As String
Dim rs As Recordset
Set rs = Me.RecordsetClone
rs.FindFirst ("ID0=" & id)
GetSerialNo = (rs.AbsolutePosition + 1) & "."
rs.Close
End Function
И в свойстве 'Control Source' техтбокса указываешь '=GetSerialNo([ID0])'
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Да, действительно...
Только надо отсечь случай, когда отображается новая запись.

Код: Выделить всё

Public Function GetSerialNo(id As Variant) As String
If IsNull(id) Then
  GetSerialNo = ""
Else
  Dim rs As Recordset
  Set rs = Me.RecordsetClone
  Call rs.FindFirst("ID0=" & id)
  GetSerialNo = (rs.AbsolutePosition + 1) & "."
  rs.Close
End If
End Function
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

А еще при таком подходе записи не перенумеровываются после удаления и добавления.
После удаления/добавления поле с такой формулой показывает неверные значения.

Т.е. на AfterUpdate формы надо написать Me.Update

Между тем, надо заметить, что это очень ресурсоемкое решение.
chur
Сообщения: 195
Зарегистрирован: 17 фев 2004, 10:44
Откуда: Riga, Latvia

Да, решение не самое элегантное. Но, зачастую, MS Access другого не предлагает, а делать надо.
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

А можно привести пример практической задачи, когда это действительно необходимо?
(Кромем прихоти заказчика, разумеется. Это и так понятно.)
chur
Сообщения: 195
Зарегистрирован: 17 фев 2004, 10:44
Откуда: Riga, Latvia

Мне кажется, что с пронумерованными записями просто удобней работать. У меня, конктретно, форма для оперативного диспетчера, который отмечает текущее положение нескольких сот вагонов. Код взят оттуда практически без купюр.
SHTIRLITZ
Сообщения: 2
Зарегистрирован: 03 сен 2004, 23:19
Контактная информация:

Возможно в тему...
Создаю базу домашней электронной библиотеки (для себя :) ).
В таблице создаю ключевое поле с названием № и типом счетчик. Предположим... добавил несколько записей... 1,2,3,4,5... а затем удаляю 3-ю запись... а так как при в свойствах поля стоит "совпадения не допускаются", то получается 1,2,4,5... и 3-м номером добавить какую-либо книжку не получится т.к. уникальность е-мое.. а хотелось бы по порядку..
Добавляю второе поле с типом "числовое"... и какой бы написать скриптик.. чтобы при запуске таблицы (после удаления/добавления записи).. шло построение, обновление записей по порядку...
сорри если непонятно описал.. новичок
:roll:
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Вы уверены, что вам это надо в таблице?

Зачем хранить в таблице ненужную информацию!
Если надо, чтобы номера отображались на форме, то решение выше, если в отчете, то у поля отчета есть свойство "С накоплением". Полю присвойте значение 1 и выберите алгоритм накопления "Для всего" или "Для группы". В таблице никто такие вещи не хранит!
Ответить