powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Access, Recordset.AddNew записывает счетчик
7 сообщений из 7, страница 1 из 1
Access, Recordset.AddNew записывает счетчик
    #39216990
Upgrader
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помогите справиться с такой проблемой.
В окне Access создана ленточная форма с таблицей (в таблице присутствует поле типа "Счетчик"). При открытии окна, вызывается Recordset.AddNew для того чтобы курсор встал на новую запись (чтобы пользователь сразу смог начать вводить данные, не кликая по новой сточке), чисто для удобства пользователя.

Но в этом случае, при каждом открытии окна (при каждом вызове Recordset.AddNew) увеличивается значение поля "Счетчик", несмотря на то, что никакие данные так и небыли введены вообще, и новая строчка в БД не записывается. А каждая реальная новая запись в таблицу имеет номер ("счетчик") на несколько единиц больше, чем должно было бы быть (1, 3, 7, 10, 12, 15 и т.п.).

Нужно чтобы "счетчик" не насчитывал лишнего. Либо отказаться от Recordset.AddNew взамен другого метода установки курсора на новую запись (пока не нашел других способов), либо как-то исключить запоминание счетчика пока не будут введены какие либо данные в таблицу.
...
Рейтинг: 0 / 0
Access, Recordset.AddNew записывает счетчик
    #39217000
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Инкрементное поле в БД не берет перед тобой обязательств быть непрерывным. При откате транзакции по другой причине там тоже могут образовываться промежутки. Если обязательно нужна непрерывная последовательность, используй Max(MyField)+1 или другие способы.

Модератор: Тема перенесена из форума "Microsoft Office".
...
Рейтинг: 0 / 0
Access, Recordset.AddNew записывает счетчик
    #39217276
Upgrader
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Непрерывная последовательность не обязательна, но хотелось бы сократить количество возможных пропусков к минимуму. Сейчас количество номеров получается более чем в три раза больше, а это мягко говоря через чур.

Других вариантов, кроме как не использовать "счетчик", не видно?

Shocker.ProMax(MyField)+1Это еще большой вопрос в реализации... (
...
Рейтинг: 0 / 0
Access, Recordset.AddNew записывает счетчик
    #39217420
Upgrader... отказаться от Recordset.AddNew взамен другого метода установки курсора на новую запись (пока не нашел других способов) ...
См. во встроенной справке метод GoToRecord применительно к форме
...
Рейтинг: 0 / 0
Access, Recordset.AddNew записывает счетчик
    #39217445
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Upgrader...Либо отказаться от Recordset.AddNew взамен другого метода установки курсора на новую запись (пока не нашел других способов)....даже GoToRecord?
...
Рейтинг: 0 / 0
Access, Recordset.AddNew записывает счетчик
    #39217578
Upgrader
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdkuдаже GoToRecord? Да. Дело в том что GoToRecord устанавливает на последнюю строку из числа уже записанных (несмотря на то что прибавляю единицу к общему числу записей, т.е. пытаюсь установить на новую).

Но не на новую строку (еще не существующую). Хотя новая строка отображается в форме (а курсор соответственно стоит на предыдущей). Но вот как на нее установить курсор? Не прибегая к Recordset.AddNew.

P.S. Специально пробовал устанавливать курсор мышью сам вручную на новую строку, и при этом ничего не записывать. Это не вызывает Recordset.AddNew и не плюсует счетчик. Вот! Но как это сделать программно?
...
Рейтинг: 0 / 0
Access, Recordset.AddNew записывает счетчик
    #39217590
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Upgradersdkuдаже GoToRecord? Да. Дело в том что GoToRecord устанавливает на последнюю строку из числа уже записанных (несмотря на то что прибавляю единицу к общему числу записей, т.е. пытаюсь установить на новую).

Но не на новую строку (еще не существующую). Хотя новая строка отображается в форме (а курсор соответственно стоит на предыдущей). Но вот как на нее установить курсор?Именно с помощью GoToRecord
Код: vbnet
1.
DoCmd.GoToRecord acDataForm, Me.Name, acNewRec

.Ведь там все подсказывается само...
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Access, Recordset.AddNew записывает счетчик
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]