Основные сведения о программировании в Access vba
В Access выполнение программы можно задать тогда, когда объект распознает событие. Событие - это специальные изменения в состоянии объекта. В этом случае создается макрокоманда или процедура VBA, которая присваивается событийной характеристике объекта, и событие запускает программу.
Access поддерживает три типа модулей: стандартные, модули формы и модули отчета.
Стандартный модуль создается для хранения кода Access VBA так же, как создается любой другой объект БД. Использование стандартных модулей для хранения кода Access VBA ускоряет открытие форм и отчетов, но замедляет начальный запуск приложения.
Модули формы содержат код, отвечающий за обработку событий и называемый процедурой обработки событий, который является реакцией на события, запущенные формами или элементами управления форм. Когда создается объект формы, то создается класс объекта в базе данных. Создаваемые для формы процедуры обработки событий являются новыми методами, и следовательно, термин класс модуля для кода ассоциируются с конкретной формой.
Для открытия модуля формы необходимо нажать кнопку «Программа» на панели инструментов в режиме конструктора формы или выполнить команду Вид/Программа. В любом случае откроется модуль Form_имя_формы. В Access 97 формы имеют новое свойство «Наличие модуля». Если ему присвоено значение «Да», значит, форма имеет модуль класса, «Нет» – в форму нет необходимости добавлять какой-либо код.
Модули отчета содержат код, являющийся реакцией на события, запущенные отчетами, разделами отчетов. Элементы управления отчетов не запускают события. Модули отчета открываются так же, как модули формы и автоматически приобретают название Report_Имя_отчета.
Особенности работы с объектами
Перед каждой операцией работы с объектом необходимо применить ссылку на объект.
Один из способов ссылки на объект состоит в том, чтобы, начав с верхнего объекта иерархии, указать маршрут к целевому объекту (записав имена всех объектов и совокупностей на пути к нему). Объекты разделяются восклицательным знаком и точкой.
Восклицательный знак применяется при переходе от совокупности к одному из ее членов:
имя_совокупности!имя_объекта
например:
Forms!formname
Точка используется при переходе от объекта к одной из совокупностей:
имя_объекта.имя_совокупности
например:
Forms!formname.Controls
Forms!formname.Controls!controlname
Если имя объекта содержит пробелы, его нужно заключить в квадратные скобки:
Forms!Switchboard
Reports![Expense Report]
Для отделения названия характеристики от имени объекта используется операция точки:
Forms![Expense Categories].RecordSource
синтаксис ссылки на поле в таблице или запросе зависит от того, относится ли таблица или запрос к базовому источнику записей открытой формы.
Ссылка на поле в источнике записей формы имеет синтаксис:
Forms!имя_формы!имя_поля
Ссылка на поле в таблице или запросе основана на применении синтаксиса:
имя_таблицы.Fields!имя_поля или имя_таблицы!имя_поля
имя_запроса.Fields!имя_поля или имя_запроса!имя_поля
В программировании на VBA переменная - это временная область памяти, содержащая значение или используемая для ссылки на объект. Такой области присваивается имя.
В VBA объект можно рассматривать как совокупность характеристик и методов. Процедура VBA способна непосредственно считывать и изменять характеристики, а также манипулировать объектом, выполняя его методы.
При работе с характеристиками в VBA доступны два действия:
изменение значения характеристики, т.е. ее установка
считывание значения характеристики, т.е. ее получение.
При установке значения характеристики ей присваивается значение:
объект.имя_характеристики=значение
или
объект.имя_характеристики<значение
При получении характеристики считывается ее текущее значение. Для хранения результата обычно используется переменная.
Если значение является текстовым, результат можно присвоить переменной в операции присваивания:
переменная=объект.имя_характеристики
Если характеристика представляет собой объект, то ссылка на объект присваивается объектной переменной:
Set переменная=объект.имя_характеристики
Чтобы задать объекту выполнение одного из методов, достаточно вызвать данный метод, используя ссылку на объект и на имя метода, разделенные операцией точки:
объект.метод
Большинство методов не возвращает результат, но есть и такие, которые возвращают текстовые значения и даже объекты.
Если метод возвращает текстовое значение, то для его сохранения в переменной можно использовать оператор присваивания:
переменная=объект.метод
Если метод возвращает объект, для присваивания результата объектной переменной используется оператор Set:
Set переменная=объект.метод