МАКРОСЫ В MS ACCESS
27.12.17
Назначение макросов
Макросы используются для автоматизации исполнения последовательности рутинных операций с БД, например:
а) автоматическое открытие и/или печать нескольких форм или отчетов;
б) автоматическое экспортирование данных
из БД в другой формат (например , в dBase ).
Виды макрокоманд в макросах
Макрос представляет собой одну или последовательность нескольких макрокоманд из числа следующих:
Восстановить Песочные часы ВывестиВформате ОткрытьЗапрос Звуковой сигнал ОткрытьМодуль
и т. д.
Макрос с условием в форме
Можно устанавливать запуск макроса при выполнении какого-либо условия в форме или отчете, например:
1 " width="640"
Создание макроса с условием
- [ Макрос ]-[ Создать ];
- Создать макрос;
- [ Вид ] – [ Условие ] .
- В результате появится дополнительный столбец УСЛОВИЕ, в который можно внести условие запуска для каждой макрокоманды. Например:
- [Forms]![ Запрос читателя ]![ КолЭкз ]1
Запуск макроса
Запуск макроса может осуществляться:
а) автоматически при открытии БД;
б) при активизации специально созданной для запуска макроса кнопке управления. Кнопка может быть создана в форме или отчете;
в) автоматически при возникновении определенного события в форме, отчете или в элементе управления типа поле или поле со списком.
Использование модулей на VBA
VBA имеет значительно большие функциональные возможности по сравнению с макросами, а именно:
VBA позволяет использовать в выражениях и в качестве аргументов процедур переменные, значения которых могут динамически изменяться, в макросах же применяются только статические значения;
VBA обеспечивает очень гибкие возможности управления всеми объектами Access , особенно объектами, связанными с данными. Напрмер, VBA дает возможность работать с отдельными записями набора. Макросы позволяют работать только с набором записей.
Использование модулей на VBA
- VBA обеспечивает возможность создавать средства перехвата и обработки ошибок. Макросы этого не позволяют.
Поэтому макросы целесообразно использовать для создания прототипов приложений пользователя, а «доведение до ума» приложений следует производить с использованием VBA .
Пример задачи, связанной с вводом данных в БД из внешней аппаратуры
БД предназначена для учета отгрузки предприятием металлического проката. Взвешивание отгружаемой продукции производится на автоматических весах. Результат взвешивания считывается в компьютер через СОМ-порт и записывается в файл. Программа чтения данных представляет собой EXE- модуль. Запуск EXE- модуля и перенос данных из файла в БД нужно осуществить из БД.
Интерфейс пользователя
Алгоритм решения
- В форме ТОВАРЫ пользователь заполняет поля: №вагона, Описание груза, № накладной;
- По событию ПОСЛЕ ОБНОВЛЕНИЯ запускается макрос, который запускает модуль;
- Модуль запускает EXE- модуль, затем после паузы, соответствующей времени взвешивания, считывает результаты взвешивания из файла и заносит их в БД.
Пример запуска exe- модуля из модуля VBA
Dim a, b, p As Variant
Shell “d:\gast20.exe" 'Запуск exe-модуля, выполняющего
'чтение данных с автоматических весов и запись в файл .dat
a = Timer 'Запуск функции чтения кода времени с таймера
b = a
While (b - a
b = Timer ‘ ( За 2 сек производится взвешивание )
Wend
Пример ввода данных в БД из файла
Open “D:\b1" For Input As 1 'Открытие файла b1.dat для чтения
Input #1, p 'Чтение результата взвешивания p из файла
Close #1 'Закрытие файла
Beep 'Звуковой сигнал
Forms![товары1]![масса,т] = p * 0.01 'Ввод данных в БД
Forms![товары1]![Дата/время] = Now() 'Ввод текущего времени в БД
Запуск модуля с помощью макроса
Пример задачи, связанной с необходимостью автоматической корректировки данных о запасах на складе по результатам продаж
Пример использования модулей на VBA
Автоматический перерасчет остатка товаров на складе после каждой продажи можно произвести только с помощью модуля на VBA
Модуль учета продаж
Private Sub КолЗаказаТовара_AfterUpdate()
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "Склад"
stLinkCriteria = "[КодТовара]=" & Me![КодТовара]
Продано = Forms ("Расход")("КолЗаказаТовара"). Value
End Sub
Операторы перерасчета остатка на складе
‘ Фрагмент модуля открывает форму Склад на записи, ‘ связанной по ключевому полю КодТовара с записью, ‘ открытой в данный момент в форме Расход , затем
‘ производит перерасчет
DoCmd.OpenForm ("Склад"), , , stLinkCriteria
Остаток = Forms ("Склад")("Количество"). Value
Forms ("Склад")("Количество"). Value = Остаток - Продано
Пример использования модулей на VBA


Макросы в базах данных (383 KB)

