![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Макросы данных— это новая возможность в Access 2010. Макросы данных позволяют привязывать логику к записям и таблицам (аналогично триггерам в SQL Server). При этом логика пишется один раз, а все формы и код для добавления, обновления и удаления данных в таблице, наследуют эту логику. Макросы данных позволяют реализовывать различные сценарии.
Ø Проверка значения поля, перед тем как разрешить добавление другой записи.
Ø Сохранение истории изменений записи.
Ø Создание сообщения электронной почты при изменении значения поля.
Ø Проверка точности данных в таблице.
Устаревшие макросы по-прежнему поддерживаются, хотя вызывать их можно только из события формы, другого макроса, события отчёта или кода VBA.
Макросы данныхбывают двух типов: макросы «событий», срабатывающие при выполнении над данными в таблице определённого действия, и автономные «именованные» макросы, запускающиеся при их вызове по имени. Макрос данных можно запрограммировать на запуск сразу же после событий добавления, обновления или удаления данных либо непосредственно перед событием удаления или изменения данных.
Макросы данныхмогут возвращать значения макросам через переменные ReturnVars. Переменные ReturnVars в макросах данных подобны значениям, возвращаемым при вызове функции или метода в VBAи других языках программирования. Это позволяет выводить пользовательский интерфейс в вызывающем макросе в зависимости от того, что произошло в макросе данных. В макросе данных переменные ReturnVars указываются с помощью команды SetReturnVar. Эти значения задаются в именованных макросах данных.
Рис. 23. ЗадатьЛокПеременнуювозвращает значения макросам
Чтобы сослаться на переменную в макросе, необходимо воспользоваться командой ReturnVars, приведённой в указанном ниже операторе.
=[ReturnVars]![переменная1] |
Рис. 24. Команда ReturnVars
![]() | Логика макроса данных работает только с локальными таблицами, а не со связанными таблицами; это ограничение можно обойти при использовании интерфейсной базы данных Access и базы данных Access с таблицами путем добавления макросов данных в исходную таблицу. |
Макросы данных позволяют избежать загромождения базы данных благодаря отсутствию необходимости связывать один и тот же макрос с несколькими формами. При добавлении логики в таблицу каждая форма, созданная на основе таблицы, наследует эту логику. С помощью макросов данных также можно обеспечить целостность данных. Предположим, что событие срабатывает в форме, привязанной к таблице без макроса данных. Если пользователь имеет доступ к таблицам или может выполнять запросы, он сможет обойти форму, нарушив таким образом логику. Можно ограничить доступ к таблицам и запретить выполнение запросов, однако это возможно не всегда. При добавлении же логики непосредственно в таблицу макрокоманда срабатывает, даже если пользователь вносит изменения без использования формы.
Таб. 1. События, поддерживаемые макросами данных
События | Используется |
BeforeChange (До изменения) | Возможные действия: · Выдача сообщения об ошибке и блокировка изменений · Сравнение старого значения с новым и открытие другой формы |
BeforeDelete (До удаления) | Возможные действия: · Выдача сообщения об ошибке и отмена удаления · Вывод формы для изменения порядка следования элементов |
AfterUpdate, AfterInsert, AfterDelete (После обновления, После вставки, После удаления) | Возможные действия: · Создание сообщения электронной почты · Обход в цикле набора записей и обновление их состояния |
Чтобы создать макрос данных, необходимо открыть таблицу в режиме таблицы, на вкладке Ленты Работа с таблицами | Таблица отображаются кнопки создания макросов данных, которые будут выполняться Перед изменением, После обновления и т.д. (см. Рис. 25, стр. 32). После нажатия соответствующей кнопки откроется конструктор макросов. Для каждой таблицы может быть создано по одному макросу данных на каждое из представленных на Ленте действий.
Список макрокоманд для макроса данных отличается от предлагаемого для макросов базы данных. В разделе каталога макрокоманд В этой базе данных отображаются макросы данных, созданные для таблиц.
Макросы данных внедряются в таблицу. Если для некоторого действия в таблице создан макрос данных, то соответствующая кнопка на вкладке Ленты отображается в оранжевом цвете.
Рис. 25. Работа с таблицами
Пример 2‑5: | Выдать предупреждения в таблице, если плотность населения падает в среднем ниже 1 человека на 1 км2. |
Решение | Для решения этой задачи скопируем таблицу Страна (новая таблица Копия Страна) и в ней создадим макрос данных. При создании формы на основе этой таблицы вся необходимая логика уже будет готова. |
Шаг 1. Чтобы добавить макрос, выберите таблицу Копия Страна, откройте её Режиме таблицы. В режиме таблицы откройте в разделе Работа с таблицами вкладку Таблица и нажмите кнопку события До изменения. Почему выбрано событие До изменения, а не После обновления? Как правило, лучше вызвать событие До изменения для изменения данных и выполнения дополнительного кода, чем позволить таблице обновить запись, а уже ПОТОМ внести дополнительные изменения в ту же запись, которая только что была сохранена в таблицу. Триггер события После обновления лучше использовать для подведения итогов и сохранения итоговых значений в другие таблицы. Например, можно пересчитывать итоговые значения по складским запасам при изменении количества товара. В подобных случаях изменения, как правило, вносятся в другую таблицу. | |
Шаг 2. Далее необходимо создать управляющий блок Если … то … Иначе, который будет срабатывать при каждом внесении изменений в таблицу. На вкладке Копия Стана: До изменения: щёлкните раскрывающийся список и выберите оператор Если. Обратите внимание на работу технологии IntelliSense. Выберите построитель выражений и в нем создайте условное выражение (см. Рис. 26, стр. 34). | |
Шаг 3. В правой части экрана в каталоге макрокоманд выводится список доступных макрокоманд и операторов управления выполнением программы для данного конкретного события. Выберите макрокоманду SetField и перетащите её в блок оператора Если. В поле Имя введите Примечание (Соответствующие сообщения будут помещаться в поле Примечание). В поле Значение введите "Плотность населения очень низкая!" (с кавычками). Когда плотность населения окажется в диапазоне от 0 до 10 единиц, текст в поле Примечание изменится. | |
Шаг 4. Щёлкните по команде Добавить блок «Иначе если» в правом нижнем углу блока, добавится новый управляющий блок. В поле условия при помощи построителя выражений введите новое условие. Перетащите из каталога макрокоманд макрокоманду SetField в блок Иначе если. В поле Имя введите Примечание, а в поле Значение — "Плотность населения средняя." (с кавычками). Каждый раз, когда плотность населения окажется в диапазоне от 11 до 100 единиц, текст в поле Состояние будет меняться. | |
Шаг 5. Щёлкните оператор Иначе если и выберите команду Добавить Иначе. Перетащите макрокоманду SetField в блок Иначе. В поле Имя введите Примечание, а в поле Значение — "Плотность населения выше средней.". Это указывает на то, что если плотность превышает 100 единиц, текст поле Состояние изменится на в соответствии с требованиями. | |
Шаг 6. Сохраните и закройте макрос, щёлкнув вкладку Копия Страна: до изменения правой кнопкой мыши и выбрав команду Закрыть. | |
Шаг 7. Чтобы протестировать макрос, переключитесь в режим таблицы, измените численность, щёлкните за пределами записи и вы увидите, что текст в поле Примечание изменится. Протестируйте работу макроса для всех описанных в макросе значений плотности. Все это проиллюстрировано на Рис. 27. |
Рис. 26. Готовый макрос данных
Рис. 27. Изменение поля «Примечание» при изменении численности населения
Дата публикования: 2014-11-02; Прочитано: 2590 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!