Порядковый номер записей в таблице (или форме) Access?
Модератор: Naeel Maqsudov
Как мне отображать порядковый номер записей в таблице (или форме) ? ТОесть внизу на форме автоматом выводится номер п/п, а мне надо на табличной форме (или в самой таблице - поле) напротив каждой записи ставило ее п/номер.
Microsoft Access.
Microsoft Access.
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Такое возможно в отчете.
В модуле формы пишешь функцию:
И в свойстве 'Control Source' техтбокса указываешь '=GetSerialNo([ID0])'
Код: Выделить всё
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
- 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
Между тем, надо заметить, что это очень ресурсоемкое решение.
После удаления/добавления поле с такой формулой показывает неверные значения.
Т.е. на AfterUpdate формы надо написать Me.Update
Между тем, надо заметить, что это очень ресурсоемкое решение.
Да, решение не самое элегантное. Но, зачастую, MS Access другого не предлагает, а делать надо.
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
А можно привести пример практической задачи, когда это действительно необходимо?
(Кромем прихоти заказчика, разумеется. Это и так понятно.)
(Кромем прихоти заказчика, разумеется. Это и так понятно.)
Мне кажется, что с пронумерованными записями просто удобней работать. У меня, конктретно, форма для оперативного диспетчера, который отмечает текущее положение нескольких сот вагонов. Код взят оттуда практически без купюр.
Возможно в тему...
Создаю базу домашней электронной библиотеки (для себя
).
В таблице создаю ключевое поле с названием № и типом счетчик. Предположим... добавил несколько записей... 1,2,3,4,5... а затем удаляю 3-ю запись... а так как при в свойствах поля стоит "совпадения не допускаются", то получается 1,2,4,5... и 3-м номером добавить какую-либо книжку не получится т.к. уникальность е-мое.. а хотелось бы по порядку..
Добавляю второе поле с типом "числовое"... и какой бы написать скриптик.. чтобы при запуске таблицы (после удаления/добавления записи).. шло построение, обновление записей по порядку...
сорри если непонятно описал.. новичок
:roll:
Создаю базу домашней электронной библиотеки (для себя

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