| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MS Access > Значение поля увеличивать на 1 |
| Автор: Woodlin 8.11.2010, 14:19 |
| Всем здравствуйте! У меня База (Access 2003) расчитана на несколько пользователей. Подскажите как лучше организовать ввод нового заказа, а если точнее программно отслеживать чтоб Номер_Заказа не дублировался и в новой записи увеличивался на 1. Сначала хотел использовать DMax, потом надумал использовать отдельную таблицу, где содержится последний Номер_Заказа (обновляется при вводе Номера_Заказа).... В общем я в растерянности, посоветуйте как быть, кстати заказов в таблице будет около 3 тыс, может чуть больше. |
| Автор: Akina 8.11.2010, 14:33 |
| Вот зачем тебе нумеровать их по порядку? или вернее не так - зачем использовать порядковую нумерацию в качестве ключа? Используй синтетический рандомный ID, а номер считай, исходя из даты и времени занесения записи (при коллизиях - и ИД оператора). |
| Автор: bopoha 8.11.2010, 23:27 |
| Стоит всегда использовать автоинкрементное поле в качестве ключа. Для пользователя стоит завести отдельное поле номера. Как сформировать новый номер: Вариант 1. Забить и использовать nz(DMax(),0) + 1. Если пользователей мало, то работает нормально. Вариант 2. На момент вставки блокировать таблицу для изменений. При этом возникает проблема - могут возникать проблемы, когда один пользователь редактирует, а второй вставляет, произойдет ошибка. Что не очень хорошо. Вариант 3. Для номеров заводится отдельная таблица с необходимыми полями. На время вставки новой записи она блокируется. Т.е. ограничение будет заключаться в том, что нельзя будет произвести две вставки одновременно. Это довольно просто обрабатывается. |