Глава 9
Переименовать или удалить макрос
(Rename/Delete Macro), т. е.
просмотреть все
таблицы и содержащиеся в них макросы и переименовать или удалить их.
Первый именованный макрос по умолчанию имеет имя
МакросДанных1
. При об-
ращении к нему оно дополняется именем таблицы, в которой он был создан, и за-
писывается, например, так:
ТОВАР.МакросДанных1
.
Запуск именованного макроса выполняется макрокомандой
ЗапускМакросаДан-
ных
(RunDataMacro), доступной как из макроса данных, так и из любых других
макросов приложения. Например, работая в форме, можно не выполнять вычисле-
ния через обращения к полям формы, а вызвать именованный макрос данных, ко-
торый выполнит вычисления непосредственно в таблицах. Изменения в таблицах
тут же отобразятся форме.
Командой
Переименовать или удалить макрос
(Rename/Delete Macro) открывает-
ся окно диспетчера макросов данных, представленное на рис. 9.25. В нем перечис-
лены все таблицы базы, содержащие макросы данных. Именованные макросы так-
же отображаются в окне диспетчера макросов данных.
Рис. 9.25.
Список таблиц открытой базы, содержащих макросы данных
Использование макросов для решения задач
При разработке практических приложений часто необходимо при изменениях в од-
них документах решать задачи, позволяющие актуализировать текущие данные
в других. Рассмотрим примеры таких задач.
Задача 1
Рассмотрим создание макроса данных для таблицы ТОВАР, в котором после об-
новления записи проверяется изменение цены товара и выполняется перерасчет
стоимости отгруженного товара в таблице ОТГРУЗКА.
1.
Откройте таблицу ТОВАР и на вкладке ленты
Работа с таблицами | Таблица
(Table Tools | Table) щелкните на кнопке
После обновления
(AfterUpdate). В от-
Разработка приложений с использованием макросов
393
крывшееся окно макроса данных введите макрокоманды, выбирая их в каталоге
и заполняя аргументы, как показано на рис. 9.26.
2.
В блоке
Если
в логическом выражении условия с помощью функции
Updated
("имя поля")
проверяется, изменялось ли значение в поле
ЦЕНА
. При истинном
значении выражения макрокомандой
Для каждой записи в
(ForEachRecord) ор-
ганизуется цикл, в котором для каждой записи таблицы ОТГРУЗКА, содержащей
значение кода товара, равное значению из обновленной записи таблицы ТОВАР,
макрокомандой
ИзменитьЗапись
(EditRecord) рассчитывается новое значение
в поле
СУММА_ОТГР
. Обратите внимание
— макрокоманда
ИзменитьЗапись
должна быть вложена в макрокоманду
Для каждой записи в
, иначе не будет
найден псевдоним текущей записи цикла. Макрокоманда
ЗадатьПоле
(SetField),
в свою очередь, должна быть вложена в макрокоманду
ИзменитьЗапись
.
Рис. 9.26.
Макрос данных для обновления поля в записях таблицы ОТГРУЗКА
3.
Далее создайте именованный макрос, в котором сведения об обновлениях цены
в таблице ТОВАР будут сохраняться в некоторой таблице, например,
Изменен-
ныеЗаписи
.
4.
Создайте таблицу
ИзмененныеЗаписи
, содержащую поля Код товара, Старая
цена, Новая цена и ключ с типом данных
Счетчик
(AutoNumber). Использова-
ние такого ключа позволит включать в таблицу неоднократные изменения запи-
си с одним и тем же кодом товара.
5.
При открытой таблице ТОВАР создайте именованный макрос, выбрав соответ-
ствующую команду на вкладке
Работа с таблицами | Таблица
(Table Tools |
Table). В макросе для получения из вызывающего макроса значений кода товара
и его старой и новой цены создайте соответствующие параметры (рис. 9.27). Да-
394
Do'stlaringiz bilan baham: |