Перейти к основному контенту
Поддержка
Войдите с помощью учетной записи Майкрософт
Войдите или создайте учетную запись.
Здравствуйте,
Выберите другую учетную запись.
У вас несколько учетных записей
Выберите учетную запись, с помощью которой нужно войти.

Выберите любой раздел ниже, чтобы узнать об управлении заказами в Northwind Developer Edition. 

Этот выпуск developer для примера приложения Northwind Orders является более продвинутым, чем начальный выпуск. Он расширяет схему базы данных (используемые таблицы) и теперь предоставляет дополнительные расширенные функции. Цель настоящего документа — познакомить вас с функциями Microsoft Access, а не для запуска какой-либо конкретной компании.

  • Список заказов доступен на ленте. Он имеет несколько параметров фильтра и гиперссылки для открытия каждого заказа.

  • Список заказов и лента имеют кнопку Добавить заказ, чтобы открыть новый пустой заказ.

  • В форме Новый заказ выберите существующего клиента в раскрывающемся списке. В этот момент выбраны имя сотрудника и новое состояние. Дата заказа также заполнена. Налоговая ставка считывается из таблицы SystemSettings , а налоговый статус по умолчанию — из записи клиента.

  • Новые заказы и заказы на покупку добавляются в список MRU (Последние использованные) на ленте. Дополнительные сведения см. в разделе Список MRUв этой статье

  • Оставьте поля Дата отправки и Дата оплаты пустыми.

  • Чтобы добавить заказы для новых клиентов, введите название компании и выведите вкладку. Чтобы завершить новую запись клиента, откроется форма Сведения о компании. Затем закройте его и продолжите выполнение заказа. Теперь новая компания будет находиться в раскрывающемся списке Клиент .

  • Чтобы добавить элементы в заказ, выберите Категория продукта и Продукт для этого заказа и введите Количество. Цена за единицу заполняется, а цена вычисляется по выражению.

  • Переместите состояние заказа и переместите заказ через рабочий процесс > с помощью кнопок в верхней части формы заказа > Отправлено > Закрыто .

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

  • Для отправки заказа необходимо ввести грузоотправитель и плату за доставку . Если вы забудете это сделать, произойдет ошибка проверки. Плата за доставку добавляется к сумме заказа.

  • Незашвеченные заказы можно удалить с помощью кнопки Удалить заказ.

  • Элементы строки заказа нельзя изменить после того, как заказ будет переохлаждением состояния "Создать ".

  • В версии Northwind Starter процесс заказа невероятно прост (например, запасы всегда доступны, никогда не иссякают и никогда не должны быть приобретены). Теперь, в этом выпуске Dev, более реалистичный процесс решает по крайней мере некоторые такие проблемы. Помните, что мы показываем функции Access и рекомендации, а не реализуем реальное приложение. 

  • Свидетельство того, что мы не реализуем реальное приложение, включает в себя тот факт, что даты не проверяются. Таким образом, можно ввести нелогичные даты, такие как дата отправки, которая находится до даты заказа. 

В этом разделе рассматриваются важные сведения о реализации формы order, frmOrderDetails:

Форма заказа получает данные из простого запроса qryOrder (см. свойство RecordSource ). Рекомендуется использовать форму ввода данных на основе простого запроса с одной таблицей. Обратите внимание, что включать таблицу OrderDetails в этот запрос не обязательно. Сведения о заказе обрабатываются подчиненной формой.

Форма OrderList может открывать несколько экземпляров формы Заказа. Это удобно, так как торговые представители имеют дело с большим количеством прерываний и может потребоваться открыть другой заказ во время работы над первым, или сравнить его с третьим заказом. Метод описан здесь.

Различные поля идентификаторов получают свои значения из двух столбцов со списком: скрытый столбец идентификатора и видимый столбец Description. Эти поля со списком привязаны к простым запросам из двух столбцов: см. свойство RowSource .

С кнопками рабочего процесса связана бизнес-логика, заставив пользователя переназначить заказ с 1 до 4. Команда разработчиков Northwind знает, что некоторые компании могут использовать разные правила. Это приведет к другой реализации событий нажатия кнопки, а также к повторному рассмотрению того, когда заказ является определенным и когда заказ все еще можно удалить.

Вложенная форма sfrmOrderDetails привязана к более сложному запросу. Причины этого рассматриваются в разделе Каскадные поля со списком ниже. Мы проверка для инвентаризации в событии Form_AfterUpdate при сохранении строки, и мы можем выполнять более мощные запросы к базе данных.

ProductCategory и Product — это каскадные поля со списком: при выборе из первого (ProductCategory) следующий сужается до совпадающих дочерних записей продукта. Метод, используемый здесь, подробно описан ниже.

При сохранении записи необходимо заполнить обязательные поля. В выпуске Starter мы позволяем выполнять поведение Access по умолчанию. В этом выпуске Dev реализован более удобный метод. Метод, используемый здесь, подробно описан ниже.

Для каждой позиции заказа проверяется доступный инвентарь и задается состояние соответствующим образом. Основная идея этой функции описана здесь.
 

КАСКАДНЫЕ ПОЛЯ СО СПИСКОМ

Реализация раскрывающихся списков "Категория продукта" и "Продукт" в виде каскадных списков является сложной задачей, так как Access не поддерживает эту функцию. В этой методике необходимо выполнить четыре шага:

Форма должна находиться в режиме непрерывной формы (не в таблице). Текстовые поля перекрывают текстовую часть каждого поля со списком, оставляя видимыми только их стрелки раскрывающегося списка. 

Исходный запрос формы qryOrderLineItems использует таблицу OrderDetails в обычном режиме, но также объединяется с таблицами Products и ProductCategories для получения ProductName и ProductCategoryName. Два перекрывающихся текстовых поля привязаны к этим полям.

В поле RowSource для поля Со списком Products возвращается список cboProductCategories и возвращаются только продукты для категории, выбранной в этом поле со списком. Обратите внимание на синтаксис "[Форма]! [cboProductCategories]" в выражении условия, которое является более гибким, чем явные формы! FormName! Синтаксис ControlName , который ссылается на одну форму по имени.

После выбора категории продукта в поле со списком "Несвязанные категории продуктов " событие AfterUpdate задает первое значение в списке для поля "Продукты". При этом создается новая строка в объекте RecordSource формы, которая заполняет categoryName , чтобы ее можно было отобразить в перекрывающихся текстовых полях.
 

ПРОВЕРКИ

Использование кода проверки, реализованного в выпуске Northwind Dev, занимает только 3 строки кода:

  • В Form_BeforeUpdate:
       Cancel = ValidateForm(Me)

  • В Form_AfterUpdate и Form_Current:
        ValidateForm_RemoveHighlights

Сделать код очень автономным — это хороший шаблон, так как он позволяет легко реализовать его везде. Профессиональные разработчики могут сделать это еще дальше, например, используя подклассы форм. (Это выходит за рамки целей для разработки Northwind.)

Объект формы передается в автономный код проверки для проверки. Затем он проверяет базовую коллекцию RecordsetClone Fields, чтобы узнать, какие элементы управления привязаны к обязательным полям, и проверяет, имеют ли они значение. В противном случае они будут выделены.

Нужна дополнительная помощь?

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.

В сообществах можно задавать вопросы и отвечать на них, отправлять отзывы и консультироваться с экспертами разных профилей.

Были ли сведения полезными?

Насколько вы удовлетворены качеством перевода?
Что повлияло на вашу оценку?
После нажатия кнопки "Отправить" ваш отзыв будет использован для улучшения продуктов и служб Майкрософт. Эти данные будут доступны для сбора ИТ-администратору. Заявление о конфиденциальности.

Спасибо за ваш отзыв!

×