Доработка формы Заказы: устранение недостатков
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

 

С учетом вышесказанного, перечислим минимальные удобства, которые необходимо обеспечить при работе с формой Заказы.

1.Поле ДатаЗаказа должно заполняться автоматически текущей датой.

2.Товары должны отбираться из списка товаров (примерно так, как выбираются из списка клиенты).

Реализация этих возможностей требует применения встроенных функций.

Access содержит встроенные функции, которые объединены в следующие группы: текстовые, статистические, управления, сообщения), математические, проверки,, общие, работы с базами данных и массивами, DDE / OLE , ввода/вывода, финансовые, преобразования, обработки ошибок, даты/времени.

Более подробную информацию по любым функциям и другим возможностям Access можно получить в справочной системе Access. Вызов справки — клавиша F1.

 

Автоматическое заполнение даты

Для автоматического заполнения поля ДатаЗаказа при вводе данных пользователем свойству Значение по умолчанию поля следует присвоить значение функции Date ().

1. Откройте форму Заказы в режиме Конструктора и выделите поле ДатаЗаказа, щелкнув по нему.

2. Откройте закладку Данные окна Свойства и в свойство Значение по умолчанию поля введите значение Date ()

Эта функция будет автоматически присваивать полю ДатаЗаказа текущую дату для каждого нового заказа. Значение даты функция «читает» из системных часов (таймера) компьютера.

 

Отбор товаров в подформе с помощью поля со списком

 

Второй шаг к усовершенствованию формы Заказы: замена поля Название в подформе ЗаказаноТовараПодформа списком. Проделайте следующие действия.

Откройте форму ЗаказаноТовараПодформа в режиме Конструктора и удалите поле Название. Затем создайте поле со списком на основе поля КодТовара таблицы Товары. Используйте Мастер, аналогично проделанному ранее с полем КодКлиента.

Напомним, что следует щелкнуть по элементу Поле со списком на Панели элементов и сразу же щелкнуть по полю КодТовара в Списке полей, установить указатель мыши в нужное место и, удерживая левую кнопку, растянуть элемент до требуемых размеров. Обратим внимание, что, отвечая на вопросы Мастера, в качестве источника данных для списка надо выбрать таблицу Товары, отобрать в список поля КодТовара и Название, выбрать сохранение выбранного значения в поле КодТовара.

Если требуется выводить товары в списке в алфавитном порядке, то для поля Название укажите сортировку по возрастанию. Форма заказы теперь полностью доработана до вида, представленного на рис.1.

Проверьте работу формы Заказы: откройте форму, попытайтесь добавить новый заказ, т.е. введите фамилию менеджера, клиента, а затем отберите товары для заказа.

 

Заполнение формы «Заказы»

 

Используя доработанную форму «Заказ» заполните таблицу Заказ информацией о 5 заказах. Для создания новой записи используйте кнопки перехода (практическая работа № 3, задание 3.2).

Практическая работа № 5

Подключение макросов

 

Если попытаться заполнить новый заказ, то эта процедура окажется достаточно трудоемкой: поля Сумма, ОбщаяСумма, ДатаЗаказа придется рассчитывать и вводить вручную, некоторые поля, такие как КодТовара, Название, Цена, вообще невозможно заполнить, не имея под рукой таблицу Товары.

И еще один недостаток: изменение цены товара в таблице Товары влечет за собой изменение цены товара во всех заказах, хотя для ранее проданных товаров должна сохраняться прежняя (продажная, до изменения) цена. Этого можно избежать, если добавить в подчиненную форму ЗаказаноТовара-Подформа дополнительное поле ЦенаПродажи, которое будет хранить цену на момент выписки заказа. Т.о. необходимы следующие доработки:

Дополнительное поле ЦенаПродажи должно заполняться при вводе данных автоматически (с возможностью изменения вручную при необходимости). Поля Сумма и ОбщаяСумма должны рассчитываться автоматически.

Реализация этих возможностей требует применения макросов.

 

Макросы

 

Макрос — это объект Access, используемый для автоматизации действий пользователя. Макровызовы выполняются в ответ на события в форме. Например, событию Нажатие клавиши кнопки можно «приписать» макрокоманду ОткрытьФорму, событию После обновления некоторого поля «приписать» макрокоманду ЗадатьЗначение другому полю и т.д.

Access содержит более 50 макрокоманд. Перечень имен макрокоманд доступен в окне конструктора макроса — запоминать названия не надо.

Прежде, чем рассмотреть как создать макрос, проведем изменения в таблице ЗаказаноТовара. где наряду с количеством и суммой следует хранить цену на момент продажи.

Поле ЦенаПродажи необходимо добавить в таблицу ЗаказаноТовара, а не в таблицу Товары, так как оно характеризует конкретную строку заказа наряду с полями Количество и Сумма. Следует добавить поле ЦенаПродажи и в соответствующий запрос: в запрос для подчиненной формы ЗаказаноТовараПодформа введите поле ЦенаПродажи. А также в форме ЗаказаноТовараПодформа удалите поле Цена, а вместо него поставьте поле ЦенаПродажи.

Создание простого макроса предполагает выполнение нескольких действий:

1. Выберите закладку Макросы в главном окне базы данных Access и нажмите кнопку Создать.

2. После открытия окна Конструктора макросов нажмите кнопку  Имена макросов и кнопку Условия на Панели инстру ментов, для того чтобы появились соответствующие колонки окна. В этом окне и строятся макросы (рис. 1).

Здесь каждая строка с именем представляет собой отдельный макрос. В первой колонке записывают имя макроса, во второй -- условие его выполнения (если необходимо), в третьей — макрокоманду, которую выбирают из списка, в последней, если требуется, - примечание. В нижней части окна задают значения аргументов макрокоманды, каждая макрокоманда имеет свой перечень аргументов.

 

Рис.1. Создание макроса ЦенаПродажи

На рис. 1 показан макрос с именем ЦенаПродажи, который выполняет макрокоманду ЗадатьЗначение. Аргументы указывают, что полю [ЦенаПродажи] присваивается значение поля [Цена] при вводе товара. Отметим, что имена полей заключаются в квадратные скобки.

Отметим также, что в одном окне Конструктора макросов можно записать несколько макросов (с разными именами), а затем сохранить их в закладке Макросы под общим именем, например, Заказы.

Откройте макрос Заказы и впишите второй макрос Сумма, который выполняет . присваивание [Сумма]=[ЦенаПродажи]*[Количество] при любом обновлении полей ЦенаПродажи и Количество (рис 2).

 

Рис.2. Создание макроса Сумма

Таким образом, макросы созданы, но они ниоткуда не вызываются, макросы без событий - вещь бесполезная.

Поэтому теперь необходимо обеспечить вызов созданных макросов в подчиненной форме ЗаказаноТовараПодформа с помощью событий: первый макрос должен быть «приписан» событию После обновления поля КодТовара; второй — событию После обновления полей Количество и ЦенаПродажи. Проделайте следующие действия:

· Откройте форму ЗаказаноТовараПодформа в режиме Конструктора, выберите поле со списком КодТовара и откройте для него закладку События окна Свойства.

· В свойство После обновления поля введите имя макроса Заказы.ЦенаПродажи (выберите из списка макросов).

· Аналогично для полей Количество и ЦенаПродажи установите событие После обновления, но уже на макрос Заказы.Сумма.

Закройте форму ЗаказаноТовараПодформа и проверьте как все это работает. Откройте форму Заказы: при отборе новых товаров или замене товара цена продажи заполняется автоматически, а при вводе/изменении количества и цены продажи - сумма в строке пересчитывается.

 

Дата: 2019-07-24, просмотров: 238.