Access 2002

Формирование списка объектов


С точки зрения пользователя, между объектами Access и Jet нет особой разницы, но для разработчика это объекты совершенно разных типов. В коде формы frmOBC мы это различие игнорируем, поскольку в коллекциях объектов CurrentProject и CurrentData они (объекты Access и Jet) обрабатываются одинаково.

Поиск нужной коллекции

Получив запрос сформировать список объектов определенного типа, функция GetObjectList определяет, в какой коллекции они находятся. Хотя объекты, входящие в коллекции Al 1., и различаются по типу, они имеют одни и те же свойства и методы, благодаря чему работа с ними ведется одинаковым образом.

Цикл по объектам коллекции

Получив ссылку на коллекцию объектов AccessObject и присвоив ее переменой objCollection, функция GetObjectList перебирает элементы коллекции в цикле For Each:

Внутри цикла функция принимает решение относительно включения очередного объекта в список, учитывая следующие факторы:

Является ли объект системным?

Является ли объект скрытым?

Является ли объект формой?

Удален ли объект?

Итак, получив ссылку на очередной объект, функция решает, включать ли в список его имя. Если пользователь не хочет видеть в окне базы данных системные объекты, а указанный объект является системным, его нужно пропустить. То же касается и скрытых объектов.

В первую очередь приведенный код определяет, является ли текущий объект системным. С этой целью вызывается функция IsSystemObject:

Текущий объект считается системным в следующих случаях:

имя объекта начинается с "USys"; благодаря этому соглашению можно создавать объекты, которые Access будет показывать только в том случае, если пользователь задал отображение системных объектов (опция Show System Objects активизирована);

объект является запросом, созданным Access для собственных внутренних нужд; имена таких запросов начинаются с "-sq_";

установлены соответствующие биты свойства объекта Attributes.

Комментарии закрыты