Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Значение поля увеличивать на 1, при добавлении новой записи 
V
    Опции темы
Woodlin
Дата 8.11.2010, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 188
Регистрация: 15.7.2009
Где: Челябинская облас ть, г. Пласт

Репутация: 1
Всего: 1



Всем здравствуйте!

У меня База (Access 2003) расчитана на несколько пользователей. Подскажите как лучше организовать ввод нового заказа, а если точнее программно отслеживать чтоб Номер_Заказа не дублировался и в новой записи увеличивался на 1.

Сначала хотел использовать DMax, потом надумал использовать отдельную таблицу, где содержится последний Номер_Заказа (обновляется при вводе Номера_Заказа).... 
В общем я в растерянности, посоветуйте как быть, кстати заказов в таблице будет около 3 тыс, может чуть больше.
PM MAIL ICQ   Вверх
Akina
Дата 8.11.2010, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Вот зачем тебе нумеровать их по порядку? или вернее не так - зачем использовать порядковую нумерацию в качестве ключа?
Используй синтетический рандомный ID, а номер считай, исходя из даты и времени занесения записи (при коллизиях - и ИД оператора).


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
bopoha
Дата 8.11.2010, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1283
Регистрация: 10.5.2006
Где: Беларусь, Минск

Репутация: 21
Всего: 21



Стоит всегда использовать автоинкрементное поле в качестве ключа.
Для пользователя стоит завести отдельное поле номера.

Как сформировать новый номер:
Вариант 1.
Забить и использовать nz(DMax(),0) + 1.
Если пользователей мало, то работает нормально.

Вариант 2.
На момент вставки блокировать таблицу для изменений.
При этом возникает проблема - могут возникать проблемы, когда один пользователь редактирует, а второй вставляет, произойдет ошибка.
Что не очень хорошо.

Вариант 3.
Для номеров заводится отдельная таблица с необходимыми полями.
На время вставки новой записи она блокируется.
Т.е. ограничение будет заключаться в том, что нельзя будет произвести две вставки одновременно.
Это довольно просто обрабатывается.
PM MAIL WWW ICQ Skype GTalk   Вверх
Woodlin
Дата 9.11.2010, 06:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 188
Регистрация: 15.7.2009
Где: Челябинская облас ть, г. Пласт

Репутация: 1
Всего: 1



В качестве ключа у меня и так используется автоинкримент.

Цитата(bopoha @  9.11.2010,  02:27 Найти цитируемый пост)
Вариант 1.
Забить и использовать nz(DMax(),0) + 1.
Если пользователей мало, то работает нормально.

Этот вариант конечно проще сделать, только у меня возникает вопрос: если теоретически два пользователя одновременно вставляют новую запись, то как мне кажется DMax() им выдаст одинаковое значение?

PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS Access"
Akina
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] и [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS Access | Следующая тема »


 




[ Время генерации скрипта: 0.0452 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.