' Возвращает значения True, если форма открыта
Const conObjStateClosed = 0
Const conDesignView = 0
If SysCmd(acSysCmdGetObjectState, acForm, strFormName) <> conObjStateClosed Then
If Forms(strFormName).CurrentView <> conDesignView Then
IsLoaded = True
End If
End If
End Function
2. Выберите вкладку ленты Создание, в группе Макросы и код и сделайте щелчок левой кнопкой мыши по значку Модуль.
3. Вставьте скопированной в буфер текст, нажмите на кнопку Сохранить и подтвердите предлагаемое имя модуля.
1. Откройте группу макросов Товары в режиме конструктора и вложите новый макрос.
2. В поле Вложенный макрос введите Обновить заказ.
3. В поле Если с помощью функции IsLoadedвведите проверку, открыта ли форма Заказы и было ли в форме Товары введено значение поля КодТовара:
IsLoaded("Заказы") And [Forms]![Товары]![КодТовара] Is Not Null
4. Если условие выполняется, то с помощью макрокоманды ОбновитьОбъект обновите форму Заказы:
5. Ниже с помощью макрокоманды ЗадатьЗначение задайте копирование значения поля КодТовара из формы Товары в форму Заказы:
1. Откройте форму Товары в режиме конструктора и откройте окно свойств формы.
2. Во вкладке События щелкните в строке Закрытие и выберите макрос с именем Товары.Обновить заказ.
Пример 4.7.Обеспечить обновление информации в форме Заказы, когда Access в нее возвращается из формы Ввод покупателей после ввода нового покупателя.
При определении всех связей в базе данных и включении режима поддержания целостности Access гарантирует, что:
• удалить клиента или товары можно только после удаления связанных с ними заказов.
Пример 4.8.В форме Товары обеспечить (с помощью макросов) перехват запросов на удаление товаров с тем, чтобы:
• посмотреть, имеется ли ссылка на этот товар в каком-либо заказе;
• если ссылка имеется, то вместо обычного выводимого Access сообщения о невозможности удаления товара выдать более информативное сообщение.
1. Откройте группу макросов Товары в режиме конструктора.
2. Из окна Каталог макрокоманд отбуксируйте элемент Вложенный макрос в область макроса.
3. Введите имя макроса – Удаление.
4. Из окна Каталог макрокоманд отбуксируйте элемент Если в область макроса.
5. Используя построитель в поле Если введите выражение
DCount("[КодТовара]";"[Заказы]";"[КодТовара] =Forms![Товары]![КодТовара] ")<>0
6. В поле Добавить новую макрокоманду выберите макрокоманду ОкноСообщения.
7. В качестве элемента Сообщение макрокоманды введите
«Для товара существуют заказы. Перед удалением товара сначала должны быть удалены все заказы на этот товар»
8. В следующее поле Добавить новую макрокоманду выберите макрокоманду ОтменитьСобытие.
9. В следующее поле Добавить новую макрокоманду выберите макрокоманду ОстановитьМакрос.
10. Нажмите Конец блока «Если».
Примечание. Т.е. если заказы на удаляемый товар имеются, то
v с помощью макрокоманды ОкноСообщениявыводится сообщение о невозможности удаления товара;
v с помощью макрокоманды ОтменитьСобытиемыотказываемся от удаления прежде, чем Access выдаст свое предупреждающее сообщение;
v с помощью макрокоманды ОстановитьМакроспрекращаем работу макроса.
11. Из окна Каталог макрокоманд отбуксируйте новый элемент Если в область макроса. Используя построитель в поле Если введите выражение
MsgBox("Вы уверены, что хотите удалить товар " & [Формы]![Товары]![НаимТов] & "?";33;"Удаление товара")<>1
Примечание. Второй аргумент функции MsgBox (см. Приложение) – число 33, формирует в диалоговом окне две кнопки - OK и Cancel. Если пользователь нажмет кнопку ОК, то функция MsgBox возвратит
1.
12. В поле Добавить новую макрокоманду выберите макрокоманду ОтменитьСобытие для вывода предупреждающего сообщения.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.