powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Определение следующего по порядку номера без использования формата AutoNumber
20 сообщений из 20, страница 1 из 1
Определение следующего по порядку номера без использования формата AutoNumber
    #32058654
Фотография stela
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема в следующем. В форме, в вычисляемом поле определяю следующее по возрастанию значение поля, типа: =Max([Order#])+1. Все прекрасно, когда форма работает в обычном режиме, ну а когда использую фильтр - находит и высчитывает, ессественно, только этот данный определеный номер, а не максимальный по всей таблице. Я, конечно, понимаю, что через какое-нибудь событие (КАКОЕ, кстати!!!) надо обратиться к таблице со всем списком существующих номеров, до этого времени удавалось обходиться без собственных функций и процедур. Как это делается представляю весьма туманно. Времени - в обрез. Кто чем может, буду признательна.
...
Рейтинг: 0 / 0
Определение следующего по порядку номера без использования формата AutoNumber
    #32058690
Фотография MichaelGK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предлагаю (правда сам не проверил) для поля "Очередной номер" использовать непример контрол Список, а в источник данных ему написать запрос с Max к таблице с номерами... ну и + 1
...
Рейтинг: 0 / 0
Определение следующего по порядку номера без использования формата AutoNumber
    #32058703
Фотография RedPank
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотри ф-ию DMAX. Замени ею свой MAX и все будет хорошо.
...
Рейтинг: 0 / 0
Определение следующего по порядку номера без использования формата AutoNumber
    #32058730
Михаил Лебедев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для формы на основании таблицы 'ИнвНомерТехники'
Private Sub Form_Current() ' Текущая запись
If NewRecord Then
ИнвНомер.DefaultValue = DMax("[ИнвНомер]", "ИнвНомерТехники") + 1
Else
ИнвНомер.DefaultValue = ""
End If
End Sub
...
Рейтинг: 0 / 0
Определение следующего по порядку номера без использования формата AutoNumber
    #32058855
ДиД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Лебедеву:
DMax("[ИнвНомер]", "ИнвНомерТехники") + 1 на current для многопользовательской не подходит абсолютно.
...
Рейтинг: 0 / 0
Определение следующего по порядку номера без использования формата AutoNumber
    #32058978
Фотография stela
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо всем! Щас буду пробовать. Если что, вернусь:).
...
Рейтинг: 0 / 0
Определение следующего по порядку номера без использования формата AutoNumber
    #32059000
Фотография stela
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(Михаилу Лебедеву) Огромнейшее спасибо! Решила сразу две головные боли:)
...
Рейтинг: 0 / 0
Определение следующего по порядку номера без использования формата AutoNumber
    #32059277
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в чем проблема в использованиии AutoNumber? Весь мир ошибся что-ли, создавая и используя этот формат?! Причем в Access он более гибкий чем где либо! И по порядку, и по рандому! Так почему вдруг нужно решение без AutoNumber?
...
Рейтинг: 0 / 0
Определение следующего по порядку номера без использования формата AutoNumber
    #32059290
ДиД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>mahoune
предположим 1 пользователь начинает делать новую запись. что дает счетчик? =1. первый пользователь продолжает набирать строку не сохраняя ее. в это время другой пользователь обращается к этой же таблице. у него счетчик покажет при вводе новой строки тоже 1. первый пользователь наконец сохраняет запись. она попадает в таблицу со счетчиком=1. теперь, если второй пользователь попытается сохранить свою запись, то аксесс ругнется, скажет, что нарушена уникальность. поэтому пользоваться autonumber нельзя. приходится генерировать свой ключ. dmax на событие "до обновления" формы.
...
Рейтинг: 0 / 0
Определение следующего по порядку номера без использования формата AutoNumber
    #32059297
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может оно конечно и так! Но! Как я понял из Ваших суждений - у Вас от кудато с неба взялся ID записи, хотя в таблицу он еще не попал! А на сколько я вообще понимаю, ID присвоится именно в тот момент, когда запись будет добавлен в таблицу!
...
Рейтинг: 0 / 0
Определение следующего по порядку номера без использования формата AutoNumber
    #32059310
ДиД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в mdb файле значение счетчика появляется в момент ввода первого символа в запись. это придумал не я, это так работает аксесс. в adp по-другому, там действительно присваивается очередной максимальный номер при попадании записи в базу.
...
Рейтинг: 0 / 0
Определение следующего по порядку номера без использования формата AutoNumber
    #32059329
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда сори! :)
...
Рейтинг: 0 / 0
Определение следующего по порядку номера без использования формата AutoNumber
    #32060011
Фотография stela
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To: ДиД
"DMax("[ИнвНомер]", "ИнвНомерТехники") + 1 на current для многопользовательской не подходит абсолютно."

А что подойдет?
...
Рейтинг: 0 / 0
Определение следующего по порядку номера без использования формата AutoNumber
    #32060026
Smile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не знаю, правильно ли я поступаю, но делаю так
.Execute("INSERT.....")
или
.Execute("UPDATE.....")
с передаваемыми параметрами, которые вводятся в отдельных текстовых полях.
В них же отображаются значения полей текущей записи при перемещениях по записям.
Таким образом я могу их редактировать.
И вроде с AutoNumber нет проблем, и блокировки сводятся к минимуму.
Помоему так. Да и вроде как все работает.
...
Рейтинг: 0 / 0
Определение следующего по порядку номера без использования формата AutoNumber
    #32060081
Михаил Лебедев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Открыл два сеанса одной и той же БД.
Открыл одну и ту же форму.
В обоих сеансах начал заносить новую запись.
В первом сеансе получил ID=1200.
Во втором сеансе получил ID=1201.
Закончил заносить запись в первом сеансе (ID=1200)
Закончил заносить запись во втором сеансе (ID=1201)

Никаких проблем.
...
Рейтинг: 0 / 0
Определение следующего по порядку номера без использования формата AutoNumber
    #32060088
ДиД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Признаю свою ошибку. Просто в свое время, работая на А97, были конфликты записей, как я описывал выше. После этого ни разу не проверял: ни на А2000, ни на А2002. Сейчас проверил на А2002. Работает корректно. Еще раз прошу меня извинить. Старею.
...
Рейтинг: 0 / 0
Определение следующего по порядку номера без использования формата AutoNumber
    #32060096
Михаил Лебедев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"... To: ДиД
"DMax("[ИнвНомер]", "ИнвНомерТехники") + 1 на current для многопользовательской не подходит абсолютно."

А что подойдет?..."

(Просто логически рассуждая)

Если повесить этот код на событие не Form_Current, а Form_BeforeUpdate (до обновления), тогда номер пересчитается непосредственно перед сохранением новой записи. (Ведь кто-то из пользователей все равно первым сохранит запись? Значит для следующего пользователя эта новая запись и будет большей.)
Только не надо забывать про NewRecord. А то при любом изменении любой записи (не новой) будет пересчитываться номер
короче:
Private Sub Form_BeforeUpdate(Cancel As Integer)
If NewRecord Then ИнвНомер.Value = DMax("[ИнвНомер]", "ИнвНомерТехники") + 1
End Sub
...
Рейтинг: 0 / 0
Определение следующего по порядку номера без использования формата AutoNumber
    #32060102
Михаил Лебедев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто для информации. У меня - 97 (SP-2). Так что эта ошибка (dj всяком случае - у меня) и в 97-м исправлена.

Я был на форуме по А... на MSA.KM.ru (кажется - так), где были Силыч и др. У меня этот форум не загружается. Может подскажешь, что там такое случилось? Или это у меня глюки?

Я - ЛМВ.

СПАСИБО за инф.
...
Рейтинг: 0 / 0
Определение следующего по порядку номера без использования формата AutoNumber
    #32060107
ДиД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
на событие "до обновления" я согласен. так у меня и построено. только небольшая поправочка к твоему коду
If NewRecord Then ИнвНомер.Value = nz(DMax("[ИнвНомер]", "ИнвНомерТехники"),0) + 1
а сайт перехал на www.hiprog.com
...
Рейтинг: 0 / 0
Определение следующего по порядку номера без использования формата AutoNumber
    #32060502
Фотография stela
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо за информацию! До следующего глюка:)!
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Определение следующего по порядку номера без использования формата AutoNumber
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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