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

 

Приобретение навыков по созданию макросов, для автоматического заполнения полей форм и автоматического расчета полей формы.

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

Access содержит более 50 макрокоманд. Перечень имен макрокоманд и описание макрокоманд можно получить из справочной системы Access, нажав клавишу F1.

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

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

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

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

 

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

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

Автоматическое заполнение полей ЦенаПродажи и Сумма

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

Поле ЦенаПродажи (тип данных – денежный) необходимо добавить в таблицу ЗаказаноТовара, а не в таблицу Товары, так как оно характеризует конкретную строку заказа наряду с полями Количество и Сумма. В режиме Конструктора добавьте в таблицу ЗаказаноТовара поле ЦенаПродажи.

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

Необходимо создать два макроса и «приписать» их нужным полям, для автоматического заполнения полей ЦенаПродажи и Сумма. Первый макрос должен выполнять присваивание значения полей [ЦенаПродажи]=[Цена] при вводе товара, второй — выполнять присваивание [Сумма]=[ЦенаПродажи]*-[Количество] при любом обновлении полей ЦенаПродажи и Количество.

Сформируйте макросы, присвоив им для ясности имена ЦенаПродажи и Сумма.

 

Закройте и сохраните макросы с общим именем Заказы.

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

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

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

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

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

 

Автоматический расчет поля ОбщаяСумма: суммирование полей

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

  • обновления (изменения) суммы в одной из строк или добавления строки — событие После обновления подформы;
  • удаления строки — событие После подтверждения Del подформы.

 

Сформируем макрос ОбщаяСумма.

 

 

Макрос ОбщаяСумма состоит из двух макрокоманд Задать-Значение. Первая макрокоманда непосредственно рассчитывает общую сумму с помощью функции DSum:

DSum("[Cyммa]";"[3aкaзaнoToвapa]";"[Koд3aкaза] = [Forms] ! [Заказы] ! [КодЗаказа]")

Как видно, вычисленное функцией значение присваивается полю ОбщаяСумма в форме Заказы. При этом используется полное имя поля — [Forms]![Заказы]![ОбщаяСумма] поскольку обращение к нему производится из подформы.

Функция DSum работает так, что если отсутствуют записи, удовлетворяющие условию в функции DSum, то она получает значение Null. Поэтому вторая макрокоманда задает значение [ОбщаяСумма]=0 при условии, что в предыдущей макрокоманде был рассчитан Null.

 

Самую большую вычислительную работу в этом макросе выполняет функция DSum. Она суммирует поля Сумма в таблице ЗаказаноТовара, отбирая записи по условию [КодЗаказа]:=[Forms]![Заказы]![КодЗаказа], т.е. отбирает только те записи, которые относятся к текущему заказу.

Приведем синтаксис (правило записи) функции DSum:

DSum ("Что суммировать"; "Где суммировать"; "Условие отбора суммируемых записей")

Теперь обеспечим вызов построенного макроса, т.е. припишем его событиям подформы ЗаказаноТовараПодформа.

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

2. В закладке Событиянайдите свойства После обновления и После подтверждения Del и присвойте им имя созданного макроса Заказы.ОбщаяСумма и закройте форму.

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


 

 








Дата добавления: 2016-04-14; просмотров: 2831;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.007 сек.