Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Управление выполнением заказовСодержание книги
Поиск на нашем сайте
Теперь, когда процесс размещения заказов отлажен, можно уделить внимание дальнейшим действиям. В БД 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
Примечание В подобной ситуации крайне важно сохранить запись (с помощью метода DoCmd. RunCommand, как показано в примере). В противном случае запись заказа останется в режиме редактирования и новый статус не сохранится в БД. Другие работники могут начать выполнять его, поскольку у них нет возможности узнать о том, что вы изменили статус этого заказа.
Теперь самое время запустить форму ReviewOrderDetails, которая выводит предназначенное только для чтения представление всех компонентов заказа (рис. 17.15). Форма открывается в диалоговом режиме, который блокирует открытие формы ShipOrders до тех пор, пока не завершится процесс выполнения заказа: DoCmd.OpenForm "ReviewOrderDetails",,, _ "OrderID =" & ID,, acDialog End If End Function Форма ReviewOrderDetails предоставляет сотрудникам склада два варианта для выбора. Если они щелкают мышью кнопку Ship (доставить), программа Access изменяет статус заказа на Shipped (отправлен) и процесс завершается. Private Sub Ship_Click() ' Эта форма закрывается DoCmd.Close ' Обратный переход к форме ShipOrders DoCmd.OpenForm "ShipOrders" ' Обновление заказа ' StatusID для статуса Shipped равен 4 Forms ("ShipOrders").StatusID = 4 DoCmd.RunCommand acCmdSaveRecord End Sub Рис. 17.15. В форму ReviewOrderDetails не нужно включать подробности, касающиеся цены товара. Она разработана просто для того, чтобы представить наиболее эффективным способом работникам склада нужную им информацию. Форма ReviewOrderDetails применяет запрос с объединением для получения некоторых связанных данных, например, поля PartNumber из таблицы Products
В свойствах Кнопка оконного меню (Control Box) и Кнопка закрытия (Close Button) формы ReviewOrderDetails установлено значение Нет. В этом случае работники склада ни при каких обстоятельствах не могут закрыть это окно без щелчка мышью кнопки Ship (доставить) или Cancel (отмена). (Если не применять такой подход, придется писать дополнительный код, который переустанавливает статус заказа, когда кто-нибудь щелкнет мышью пиктограмму х в правом верхнем углу окна, чтобы закрыть форму ReviewOrderDetails.)
Подсказка В этом месте кода удобно применить метод DoCmd. OpenReport для вывода на печать отчета, создающего транспортную наклейку со списком всех товаров, включенных в заказ.
Если же сотрудники щелкнут мышью кнопку Cancel (возможно, они выяснили, что на складе нет нужного количества товара), применяется аналогичный программный код для возврата заказу статуса New (новый): Private Sub Cancel_Click() ' Закрытие этой формы DoCmd.Close ' Возврат к форме ShipOrder DoCmd.OpenForm "ShipOrders" ' Обновление заказа Forms("ShipOrders").StatusID = 2 DoCmd.RunCoiranand acCmdSaveRecord End Sub Эта часть завершает программный код, необходимый для координации обработки заказа. Как и формы, которые вы изучали в части IV, формы данного примера извлекают всю информацию из таблиц вашей БД. Но в отличие от примеров, приведенных в части IV, они используют код для автоматического выполнения некоторой работы. Это отличие превращает ваши формы из простых средств ввода данных в Супероснащенные средства автоматизации технологического процесса.
Подсказка Можно создать специальное значение статуса для заказов, которые пытались выполнить, но не смогли (например, On Hold (незавершенный) или Waiting For Stock (ожидающий пополнения запаса)). В этом случае сотрудники склада будут знать о том, что не следует пытаться выполнять эти заказы. Если вы решили применить этот шаг, убедитесь, что код в процедуре ProcessOrder_Click исправлен, и можно обрабатывать заказы с указанным статусом.
|
||||||||||
Последнее изменение этой страницы: 2016-08-14; просмотров: 177; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.149.243.86 (0.011 с.) |