Ссылки на
объекты
Первый вопрос,
который следует обсудить, — как обратиться к объекту. Для обращения к объекту
существует одно общее правило: нужно проследить путь в иерархии объектов, начиная
от объекта самого верхнего уровня, до целевого объекта и записать последовательность
имен встреченных на пути объектов или семейств, отделяя их друг от друга точкой.
Если на пути встречается семейство, то, кроме имени семейства, необходимо в
скобках указать индекс или имя его элемента, т. е. задать конкретный объект
в семействе. Например, чтобы обратиться к форме, входящей в состав семейства
Allforms, необходимо написать следующее выражение:
Application.
CurrentProject .Allforms ("Заказы клиента")
Таким образом,
чтобы правильно создавать
ссылки
на объекты, нужно достаточно хорошо
представлять себе место каждого объекта в иерархии объектов модели. Такие длинные
ссылки особенно характерны для моделей, которые имеют многоуровневую, иерархическую
структуру, например DАО. На самом деле, на практике чаще применяют не полные,
а сокращенные ссылки. Дело в том, что наиболее часто используемые семейства,
объекты, свойства и методы считаются
глобальными.
Ссылки на них хранятся
в специальном объекте с именем Global. Для обращения к глобальному объекту можно
пропустить объекты более высокого уровня.
Например,
семейство forms является глобальным. Для доступа к объекту этого семейства можно
использовать сокращенную ссылку вида:
forms
( "Заказы") вместо полной ссылки:
Application.
forms ( "Заказы")
Замечание
Узнать, какие объекты, свойства и методы являются глобальными, позволяет окно просмотра объектов. Чтобы отобразить список глобальных компонентов объектной модели, выберите элемент <globals> в списке Classes в окне просмотра объектов (см. разд. "Использование обозревателя объектов в редакторе VBA " данной главы).
Кроме указанного
способа ссылки на объект, входящий в состав семейства, существуют и другие способы,
которые можно использовать, причем требующие меньшего числа нажатий клавиш.
При любом способе обращения к объекту возвращается
ссылка на объект,
находящийся
в памяти.
Обычно имя
семейства и имя объекта разделяются оператором "!" (восклицательный
знак), например:
forms
! Товары
Если имя объекта
состоит из нескольких слов, разделенных пробелом, тогда вам придется написать
forms![Заказы
клиента]
Третий способ
ссылки состоит в том, что на объект в семействе ссылаются не по названию, а
по индексу, например:
Properties(0)
Такой способ
применяется обычно тогда, когда имя объекта неизвестно. В то же время каждый
объект в семействе имеет индекс (порядковый номер), который обычно начинается
с нуля. Есть, правда, исключения из этого правила, например в семействе CommandBars
модели Microsoft Office нумерация объектов начинается с, единицы. Поэтому перед
использованием индексов лучше узнать о способе нумерации в справочной системе
Access.
И наконец,
последний способ ссылки на объект состоит в использовании вместо имени объекта
строковой переменной, например:
Reports
(strИмяОтчета)
Если какой-то
объект содержит несколько семейств объектов более низкого уровня, то одно из
этих семейств, обычно наиболее часто используемое, считается стандартным или
семейством по умолчанию. Можно обращаться к объекту, входящему в это семейство,
не указывая имени семейства. Например, для объекта TableDef модели DАО стандартным
семейством считается Fields. Поэтому для обращения к столбцу таблицы можно использовать
сокращенную ссылку
TableDefs!Должности!Код
Должности вместо полной ссылки
TableDefs!Должности.Fields!КодЦолжности
Совет
Использование сокращенных ссылок в программах предпочтительнее еще и потому, что в этом случае программы будут выполняться быстрее.
Еще одним способом сокращения ссылки на объект является использование объектной переменной. Особенно полезно использовать объектную переменную, если к объекту нужно обратиться несколько раз. (О том, как объявить объектную переменную и установить ссылку на объект см. разд. "Язык Visual Basic для приложений" выше в данной главе.)