Самоучитель Microsoft Access 2013



Download 16,15 Mb.
Pdf ko'rish
bet123/146
Sana15.11.2022
Hajmi16,15 Mb.
#866071
1   ...   119   120   121   122   123   124   125   126   ...   146
Bog'liq
Юрий Бекаревич, Нина Пушкина - Самоучитель Microsoft Access 2013 (2014)


Глава 9 
лее выберите макрокоманду 
Создать запись 
(CreateRecord) с аргументом 
Изме-
ненныеЗаписи
, отображаемую в макросе как 
Создать запись в 
(Create a Record 
In), и три макрокоманды 
ЗадатьПоле
(SetFeeld) для присвоения значений полям 
таблицы 
ИзмененныеЗаписи

Рис. 9.27. 
Именованный макрос данных с параметрами 
6.
Закройте макрос. По умолчанию макрос получит имя 
ТОВАР.МакросДанных1

7.
Организуйте вызов именованного макроса при изменении цены в таблице 
ТОВАР. Для этого при открытой таблице ТОВАР выберите опцию 
ПослеОб-
новления
(AfterUpdate) и дополните ранее созданный для нее макрос данных 
макрокомандой 
ЗапускМакросаДанных
(RunDataMacro) (рис. 9.28). 
8.
Для вывода в макросе строки параметров выберите опцию 
Обновить
парамет-
ры
(UpdateParameters). Присвойте параметрам значения из обновленной записи 
таблицы ТОВАР, а для получения значения старой цены используйте функцию 
[Old].[ЦЕНА]
. Закройте макрос, сохранив внесенные изменения. 
9.
Измените в таблице цену одного из товаров и убедитесь, что в таблице 
ОТГРУЗКА во всех записях с кодом товара с обновленной ценой сумма отгруз-
ки пересчиталась, а в таблицу 
ИзмененныеЗаписи
внесена новая запись. Об-
новления в таблицы вносятся вне зависимости от того, открыты они или закры-
ты. Если таблица открыта, может понадобиться обновить ее отображение, на-
пример, закрыв и повторно открыв. 


Разработка приложений с использованием макросов 
395 
Рис. 9.28. 
Вызов именованного макроса данных и передача ему параметров 
Задача 2 
Пусть необходимо при отгрузке товара по накладной уменьшать его остаток на 
складе. Предположим, в нашей базе данных склад и товар находятся в отношении 
1 : М. Если товар хранится только на одном складе, остаток товара можно размес-
тить в поле таблицы ТОВАР. Дополните таблицу ТОВАР полем 
Остаток

1.
Откройте таблицу ОТГРУЗКА в режиме таблицы и щелчком мыши на кнопке 
ПослеВставки
(AfterInsert) создайте макрос данных, который будет выполнять-
ся при добавлении в нее новых записей. В макросе используйте макрокоманду 
Найти запись в
(Look Up a Record In) с аргументом ТОВАР и для найденной 
записи макрокоманду 
ИзменитьЗапись
(EditRecord). В рамках последней с по-
мощью макрокоманды 
ЗадатьПоле
(SetField) присвойте полю 
Остаток
новое 
значение, уменьшенное на количество отгруженного товара (рис. 9.29). 
2.
Убедитесь, что при добавлении новой записи в таблицу ОТГРУЗКА через форму 
также будет выполняться макрос данных таблицы. Откройте форму 
Накладная

построенную на таблицах НАКЛАДНАЯ и ОТГРУЗКА. В последней хранятся 
данные из спецификации накладной. Дополните одну из накладных строкой 


396 
Глава 9 
спецификации, указав, какой товар и в каком количестве отгружается по на-
кладной. Откройте таблицу ТОВАР и в поле 
Остаток
увидите обновленное зна-
чение. 
Рис. 9.29. 
Макрос данных, выполняющийся после вставки записи в таблицу ОТГРУЗКА 
Задача 3 
Пусть необходимо при добавлении новой записи об отгрузке товара рассчитать, 
какое количество товара всего отгружено по договору. Такой расчет позволит
отслеживать выполнение плана отгрузки по каждому товару. Ввод данных по от-
грузке может осуществляться непосредственно в таблицу ОТГРУЗКА или через 
форму. 
Количество каждого товара, которое должно быть отгружено покупателю в соот-
ветствии с договором в конкретном месяце, хранится в записях таблицы 
ПОСТАВКА_ПЛАН. Для сохранения количества товара, уже отгруженного по до-
говору, можно предусмотреть в этой таблице дополнительное поле 
ВыполнениеПлана

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

На рис. 9.30 представлен именованный макрос таблицы ОТГРУЗКА 
МакросДан-
ных1
, в котором определены параметры, необходимые для поиска записи и обнов-
ления значения в поле 
ВыполнениеПлана
таблицы ПОСТАВКА_ПЛАН. Напомним, 
что поля Номер договора, Месяц отгрузки и Код товара составляют ключ этой
таблицы. Макрокоманда 
Найти запись в
(Look Up a Record In) таблице 
ПОСТАВКА_ПЛАН возвращает запись, соответствующую заданному условию
отбора: 


Разработка приложений с использованием макросов 
397 
([ПОСТАВКА_ПЛАН].[НОМ_ДОГ]= Параметр4 And 
[ПОСТАВКА_ПЛАН].[СРОК_ПОСТ]=[Параметр3] And 
[ПОСТАВКА_ПЛАН].[КОД_ТОВ]=[Параметр1]) 
Макрокоманда 
ИзменитьЗапись
(EditRecord), входящая в блок макрокоманды 
Найти запись в 
(Look Up a Record In), ссылаясь на псевдоним найденной записи, 
выполняет макрокоманду 
ЗадатьПоле
(SetField), которая прибавляет указанное 
в записи об отгрузке количество к имеющемуся в поле 
ВыполнениеПлана

З
АМЕЧАНИЕ
Чтобы выражение могло быть вычислено при первой отгрузке товара, полю 
Выполнение-
Плана
по умолчанию должно присваиваться нулевое значение.
Рис. 9.30. 
Именованный макрос поиска и обновления записи в таблице ПОСТАВКА_ПЛАН 
При открытой таблице ОТГРУЗКА в режиме таблицы щелчком мыши на кнопке 
ПослеВставки
(AfterInsert) откройте существующий макрос данных (см. рис. 9.29). 
Дополните макрос макрокомандами, которые позволят получить значения необхо-
димых в именованном макросе параметров, и макрокомандой вызова именованного 
макроса (рис. 9.31). Код товара и количество отгруженного выбираются из встав-
ленной новой записи таблицы ОТГРУЗКА, а два недостающих Номер договора и 
Месяц отгрузки надо выбрать из таблицы НАКЛАДНАЯ. 
Чтобы найти запись в накладной, нужно задать значения ее ключевых полей: Но-
мер накладной и Код склада. Значения этих полей имеются в добавленной в табли-


398 
Глава 9 
цу ОТГРУЗКА записи. Однако использование в условии отбора логического выра-
жения с оператором 
And 
приводит к необходимости определения локальных пере-
менных. Сформируйте логическое выражение, как показано на рис. 9.31, и заклю-
чите его в круглые скобки. Аргумент 
ПсевдонимНакладной
макрокоманды 
Найти 
запись в
(Look Up a Record In) НАКЛАДНОЙ можно опустить, т. к. он в рассмат-
риваемой программе не используется. 
Чтобы запомнить значения полей из найденной записи, определите в рамках мак-
рокоманды 
Найти запись в 
НАКЛАДНОЙ локальные переменные. Для выделения 
из даты отгрузки номера месяца, необходимого при поиске записи в таблице 
ПОСТАВКА_ПЛАН, используйте в выражении присваиваемом переменной функ-
цию 
Month

После того как значения всех параметров подготовлены и доступны, вызовите име-
нованный макрос 
ОТГРУЗКА.МакросДанных1
. Для вывода строк с параметрами 
и присвоения им значений щелкайте по надписи 
Обновить параметры
(UpdateParameters). 
Рис. 9.31. 
Вызов именованного макроса с параметрами 


Разработка приложений с использованием макросов 
399 
З
АМЕЧАНИЕ
Если в логическом выражении условия отбора использованы логические операторы 
And

Or
или другие, то вместо имен полей нужно использовать локальные переменные 
и заключать такое выражение в круглые скобки. 
Регистрация событий 
Возникающие при выполнении макросов ошибки заносятся системой в журнал ре-
гистрации — системную таблицу с именем 
USysApplicationLog
. При этом в строке 
состояния отображается надпись 
Новые ошибки приложения
. Щелкните на ней, 
чтобы просмотреть эти ошибки. Обнаруженные системой ошибки отмечены 
в столбце 
Category
значением 
Execution

Использовав макрокоманду 
РегистрацияСобытия
(LogEvent), пользователь может 
включать в журнал свои замечания. Они отмечаются в столбце категории значени-
ем 
User

Если в параметрах навигации установить значок 
Показать системные объекты
(Show System Objects), то можно увидеть таблицу журнала регистрации наряду
с пользовательскими таблицами. Щелкните правой кнопкой мыши в нижней части 
области навигации в ее свободном пространстве и в контекстном меню найдите 
команду 
Параметры навигации
(Navigation Options). В окне 
Параметры навига-
ции 
устанавливаются 
Параметры отображения
(Display Options), в том числе 
По-
казать системные объекты

При отсутствии ошибок, обнаруживаемых системой, просмотреть пользователь-
ские сообщения в журнале регистрации можно, открыв соответствующую таблицу 
в области навигации. 
Задание 9.1 
Измените рассмотренный выше макрос данных 
ПослеВставки 
(AfterInsert)
для 
таблицы ОТГРУЗКА так, чтобы в поле 
ВыполнениеПлана
отображалось недопостав-
ленное количество товара. 
Задание 9.2 
Создайте макрос данных, который будет выполняться при изменении цены в таб-
лице ТОВАР и изменять стоимость в таблице ПОСТАВКА_ПЛАН для договоров, 
заключенных после текущей даты, для которых еще не было отгрузок. 
Контрольные вопросы 
1.
Чем определяется последовательность выполнения макрокоманд? 
2.
Какая макрокоманда позволяет изменить текущую запись в объекте? 
3.
Должен ли объект, в котором меняется текущая запись, быть текущим? 


400 
Глава 9 
4.
Сделается ли объект текущим после выполнения макрокоманды, изменяющей 
текущую запись в нем? 
5.
Какая макрокоманда позволяет изменить значение поля записи? 
6.
Какой объект будет текущим в макросе, если он не установлен явно? 
7.
Можно ли в логическом выражении условия использовать функцию? 
8.
Как записывается ссылка на элемент управления в форме? 
9.
В ссылке на свойство каким знаком отделяется имя свойства от имени элемента 
управления? 
10.
Как организовать последовательное выполнение нескольких запросов дей- 
ствия? 
11.
Какие аргументы имеет макрокоманда 
ОткрытьЗапрос 
(OpenQuery)? 
12.
Какое значение должен иметь аргумент 
Режим
(View), чтобы макрокоманда 
ОткрытьЗапрос
(OpenQuery) приводила к выполнению запроса? 
13.
Какая макрокоманда позволяет из макроса вывести на экран сообщение? 
14.
Какая команда позволяет начать выполнение макроса из области навигации? 
15.
Как просмотреть все внедренные в формы макросы? 
16.
Как просмотреть, какие именованные макросы имеются в базе данных? 
17.
Как вставить содержимое одного макроса в другой? 
18.
Как организовать выполнение макроса при открытии формы? 
19.
Какая макрокоманда позволяет создать в макросе группу макросов, каждый из 
которых доступен для выполнения? 
20.
Как записывается ссылка на макрос, который включен в группу? 
21.
Какая макрокоманда позволяет выполнить фильтрацию записей? 
22.
К какому объекту применяется команда фильтрации записей? 
23.
Какая макрокоманда позволяет снять действие фильтра? 
24.
Почему в макрокоманде 
ЗадатьЗначение
(SetValue) в выражении 
[Формы]! 
[Отгрузки покупателям]![СКОЛ_ОТГР]+[КОЛ_ОТГР]
при записи ссылки на поле 
СКОЛ_ОТГР
использован полный синтаксис, а для ссылки на поле 
КОЛ_ОТГР
в фор-
ме ОТГРУЗКА_ПФ
нет? 
25.
Может ли одно действие пользователя приводить к возникновению нескольких 
событий? 
26.
Отображается ли внедренный макрос среди объектов области навигации? 
27.
С какими объектами работает макрос данных? 
28.
При каких действиях в таблице выполняются макросы данных? 
29.
Можно ли для таблицы создать несколько макросов данных 
ПослеВставки
(AfterInsert)? 


Разработка приложений с использованием макросов 
401 
30.
Можно ли именованный макрос данных вызвать из внедренного макроса формы? 
31.
Какая макрокоманда позволяет организовать цикл в макросе данных? 
Ответы 
1.
Порядком размещения макрокоманд в программе и условиями, заданными в 
блоке 
Если
(
If
). 
2.
НаЗапись
(GoToRecord). 
3.
Нет. 
4.
Нет. 
5.
ЗадатьЗначение
(SetValue). 
6.
Объект, из которого вызывается макрос. 
7.
Да. 
8.
Forms![
Имя_формы
]![
Имя_элемента_управления
]

9.
Точкой. 
10.
Записать в макросе соответствующее число макрокоманд 
ОткрытьЗапрос 
(OpenQuery). 
11.
Имя
запроса
(Query Name), 
Режим
(View) и 
Режим
данных
(Data Mode). 
12.
Таблица 
(Datasheet). 
13.
ОкноСообщения
(MsgBox). 
14.
Выполнить 
(Run) в контекстном меню или на вкладке 
Работа с базами дан-
ных 
(Database Tools). 
15.
В
каталоге макрокоманд
в блоке
В этой базе данных/Формы 
(In this 
Database|Forms). 
16.
В каталоге макрокоманд
в блоке
В этой базе данных/Таблицы 
(In this 
Database|Tables). 
17.
Открыть принимающий макрос и, выбрав вставляемый в каталоге макрокоманд
в блоке
В этой базе данных 
(In this Database), выполнить двойной щелчок. 
18.
Записать в строку свойства события формы 
Открытие
(On Open) имя макроса 
или создать внедренный макрос. 
19.
Вложенный макрос 
(Submacro). 
20.
ИмяГруппыМакросов.имяВложенногоМакроса

21.
ПрименитьФильтр
(ApplyFilter). 
22.
К текущему объекту. 
23.
ПоказатьВсеЗаписи
(ShowAllRecords). 
24.
Форма ОТГРУЗКА_ПФ является текущей. 


402 
Download 16,15 Mb.

Do'stlaringiz bilan baham:
1   ...   119   120   121   122   123   124   125   126   ...   146




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish