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

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

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

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

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

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

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

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

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

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


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