КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Управление выполнением заказовТеперь, когда процесс размещения заказов отлажен, можно уделить внимание дальнейшим действиям. В БД Boutique Fudge у каждой записи в таблице Ordersесть поле OrderStatus(состояние заказа), отслеживающее его состояние или статус. У вновь созданных заказов статус New (новый). На складе сотрудники хранилища ищут заказы со статусом New (новый) и выбирают один из них для обработки. В этот момент они изменяют статус заказа на In Progress (выполняющийся в данный момент), поэтому никто больше в это же время не попытается его доставить. Наконец, когда заказ укомплектован, его статус меняется на Shipped (отправлен) и затем в поле ShipDateзаписывается точное время отправки. Логически эта модель вполне осмыслена. Но немного трудно применять к ней обычные таблицы и формы. Для того чтобы следовать этому технологическому процессу, работники склада должны несколько раз изменять статус в записи заказа, помнить о необходимости зафиксировать дату отправки и при этом не изменять другие данные о заказе. Если они пропустят какой-нибудь этап — скажем, никогда не переведут статус заказа в In Progress (выполняющийся в данный момент) — вполне возможно, что кто-то из сотрудников попытается выполнить тот же самый заказ. Решением может быть создание формы ShipOrders,которая проведет работников склада через все нужные этапы. Вначале эта форма отображает список заказов с минимальной информацией (рис. 17.14).
Рис. 17.14.Список заказов отсортирован, так что самые старые заказы (которые следует обработать первыми) появляются в верхней части списка. Свойство Блокировка(Locked) для всех полей задано со значением Да, поэтому никто не сможет изменить никакие данные. Рядом с каждым заказом расположена кнопка Process(обработка), которая начинает процесс выполнения заказа (в форму можно добавить фильтр, позволяющий отображать только заказы с определенными статусами)
Когда кто-либо щелкает мышью кнопку Process(обработка), должны выполняться несколько действий. Далее приводится последовательный разбор программного кода, поочередно, один фрагмент за другим. Сначала ваш код должен обновить запись. Этот шаг помогает определить, не начал ли кто-то еще выполнять данный заказ на другом компьютере: Private Sub ProcessOrder_Click() Form.Refresh Далее необходимо проверить статус записи. Если у нее статус не New, значит, она не годится для обработки: ' StatusID для статуса New равен 2 If StatusID о 2 Then MsgBox "This order is not available." В противном случае нужно изменить статус на In Progress (выполняющийся в данный момент) и сразу сохранить запись, чтобы никто другой не пытался выполнить этот заказ: Else ' StatusID для статуса In Progress равен 3 StatusID = 3 ' Сохранение изменения DoCmd.RunCommand acCmdSaveRecord
|