Файл: Освой самостоятельно программирование для MS Access 2002 за 24 часа [П.Киммел].pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 21.10.2020
Просмотров: 7873
Скачиваний: 25

4
Необходимо установить файл анимации
который не уста-
навливается по умолчанию вместе с Accesss.
Строка 2 листинга
содержит объявление константы с наименованием
файла Помощника Office, в строке 3 определяется переменная Outlook
типа Object, которой далее присваивается экземпляр
Подобный
стиль создания объектов носит название
динамического связывания —
объ-
ект ассоциируется с переменной в процессе выполнения программы. Аль-
тернативный способ —
статическое связывание —
предполагает предвари-
тельное объявление переменной заведомо известного типа. Чтобы получить
возможность статического связывания объектов Outlook, в диалоговом окне
References необходимо установить флажок Microsoft Outlook 10.0 Object
Library. В случае статического связывания строки
листинга
должны
быть заменены следующим выражением:
Dim Outlook As New
Способ динамического связывания более гибок — он позволяет присваивать пере-
менной типа Object объект любого класса. При статическом связывании методы и
свойства объектов класса доступны уже на этапе проектирования программы. По-
скольку в этом случае тип заранее известен, редактор Visual Basic по мере набора тек-
ста открывает контекстные меню, в которых находятся, в
атрибуты инте-
ресующего вас класса.
Строка 5 содержит инструкцию задания имени файла Помощника, далее фигурка
последнего изображается на экране, а команда строки 7 заставляет Помощника выйти
"на
бис".
Использование объекта NameSpace
Сейчас вы уже знаете, как создать экземпляр Outlook. (Доступ к ранее созданному
объекту можно получить, воспользовавшись функцией Getobject.) Далее необходимо
освоить способы построения объектов, представляющих сообщения электронной поч-
ты, задачи, сведения о контактах и данные календаря. К сожалению, в объектной мо-
дели подобные возможности явно не предусмотрены.
Все объекты Outlook, располагающие информацией о размещении данных, подчи-
нены абстрактному корневому объекту NameSpace. Для доступа ко всем разновидно-
стям данных Outlook необходимо использовать вызов
(
воз-
вращающий объект класса NameSpace. Обладая объектом NameSpace, вы сможете до-
браться до источников данных (скажем, информации о контактах) с помощью кол-
лекции Folders. Листинг 24.2 демонстрирует пример построения объекта NameSpace.
Листинг 24.2. Пример построения объекта NameSpace
1: Sub
)
2 : Dim N As NameSpace
3: Set N =
4: End Sub
"MAPI" )
В строках 1-4 листинга 24.2 переменная класса NameSpace объявляется,
I а затем инициализируется соответствующим объектом MAPI
(Mail API).
Допускается существование только одного объекта NameSpace MAPI в
пределах текущего сеанса Access. Наименование функции и факт исполь-
зования в ней текстового аргумента дают основание предположить, что
430
Часть VIII. Объектно-ориентированное программирование в Access

в будущем Microsoft, вероятно, предоставит средства создания объектов
и других разновидностей. Планируя обратиться к данным
Outlook, используйте конструкцию вызова, приведенную выше.
Построив объект NameSpace, вы получаете возможность обращения к данным
Outlook с помощью коллекции Folders. Об этом — далее.
Использование коллекции
В составе объекта NameSpace MAPI содержится коллекция Folders объектов
класса
Каждый элемент списка папок, отображаемого в окне приложе-
ния Microsoft Outlook (рис.
представляется отдельным объектом MAPlFolder.
Чтобы получить доступ к содержимому любой из папок, необходимо обратиться к со-
ответствующему объекту коллекции. Табл. 24.1 приводит список предопределенных
констант, обозначающих различные объекты MAPlFolder.
'
i
•
(1)
24. Прикладная программа способна получить доступ
к содержимому стандартных папок Outlook
Таблица
константы для обозначения объектов MAPlFolder
Константа
Название лапки и описание объекта
olFolderContacts
s
olFolderDrafts
Календарь; коллекция items содержит объекты
Контакты; коллекция items содержит объекты
Удаленные; коллекция items содержит объекты
Item
Черновики; коллекция items содержит объекты
Входящие; коллекция Items содержит объекты Mailltem
Дневник; коллекция items содержит объекты
час. Управление информацией о контактах Outlook
431

Окончание табл. 24.1
Константа
Название папки и описание объекта
olFolderSentMail
olFolderTasks
Заметки; коллекция Items содержит объекты
Исходящие; коллекция items содержит объекты
Отправленные; коллекция items содержит объекты Mailitem
Задачи; коллекция items содержит объекты
Подробности, касающиеся объектов MAPIFolder каждого из указанных в таблице
видов, вы сможете найти в оперативной справочной системе Outlook.
Объект MAPIFolder содержит коллекцию Items. Вы уже знаете, что такое коллек-
ции и как с ними
Тип элементов коллекции (см. табл. 24.1) зависит от разно-
видности объекта MAPIFolder. Маленький пример: в результате вызова GetDefault-
(olFolderContacts) будет возвращен объект MAPIFolder, который содержит
информацию о контактах. Эта информация оформлена в виде коллекции, каждый эле-
мент которой представляет собой объект класса
Листинг 24.3 демонстри-
рует способ получения одного из элементов коллекции в объекте MAPIFolder, который
ссылается на предлагаемую по умолчанию папку с данными о контактах.
Листинг 24.3. Пример получения информации о контактах
1: Sub
)
2: Dim Outlook As New
Dim
As
4: Set NameSpace =
"MAPI" )
5: Dim Folder As MAPIFolder
6: Set Folder =
7: Dim Contact As Contactltem
8: Set Contact =
Sub
В строке 2 листинга 24.3 посредством статической привязки создается эк-
земпляр Outlook. Строка 3 содержит объявление переменной типа Name-
Space, которая инициализируется в строке 4. В строке 5 объявляется пе-
ременная Folder типа MAPIFolder; в строке 6 ей присваивается значе-
ние объекта MAPIFolder, который ссылается на папку с информацией о
контактах. Строка 7 содержит выражение объявления переменной Con-
tact типа Contactltem. В строке 8 выполняется поиск элемента кол-
лекции, в свойстве FullName которого хранится значение "Lori
Kimmel", и присвоение этого элемента переменной Contact. В качестве
индекса вместо строки допускается задавать целочисленное выражение,
значение которого не превышает величину, хранящуюся в
Команда строки 9 отображает значение свойства
выбранного
объекта-элемента коллекции в окне Immediate. Более лаконичный вари-
ант той же процедуры приведен в листинге 24.4.
Листинг 24.4. Сокращенный вариант процедуры листинга 24.3
1: Sub
)
2: Dim Outlook As New
432
Часть VIII. Объектно-ориентированное программирование в Access

olFolderContacts
Items
4:
End Sub
I В строке 2 объявляется и создается экземпляр Outlook, а строка 3 содер-
выражение, иллюстрирующее иерархию членства объектов, относя-
щихся к классу NameSpace.
Просмотр информации о контактах
Outlook в Access
В настоящем и последующих разделах главы содержится ряд примеров практиче-
ского использования информации Outlook во внешнем приложении. Листинг 24.5 де-
монстрирует способы доступа к данным о контактах посредством манипуляций с со-
ответствующим объектом MAPlFolder.
Листинг 24.5. Пример процедуры для просмотра информации о контактах Outlook
Sub
)
Dim Outlook As New
Dim NameSpace As NameSpace
Set NameSpace
"MAPI" )
Dim ContactFolder As MAPlFolder
Set ContactFolder =
olFolderContacts
End Sub
В строках
листинга 24.5 выполняются операции создания экземпляра
Outlook и объекта NameSpace, а также построения ссылки на папку, со-
держащую информацию о контактах. Метод Display класса
MAPlFolder, который вызывается в строке 7, открывает окно экземпляра
Outlook, созданного ранее, и передает фокус элементу Контакты
(Contacts) дерева, отображаемого в дочернем окне Список папок. Лис-
тинг 24.5 демонстрирует один из способов управления пользовательским
интерфейсом Outlook из внешней прикладной программы.
Приведенный пример, текст которого отображен в листинге 24.6, иллюстрирует
возможности доступа к каждому из элементов коллекции контактов. Обладая ссылкой
на элемент данных, вы можете решать какие угодно задачи.
Листинг 24.6. Пример процедуры циклической обработки элементов
данных о контактах
1:
Sub
)
2: Dim Outlook As New
Dim NameSpace As NameSpace
4: Set NameSpace
"MAPI" )
5: Dim ContactFolder As MAPlFolder
6: Set ContactFolder
Dim
As Variant
8: For Each Contactltem In
24-й час. Управление информацией о контактах Outlook
433

9:
10: Next Contactltem
Sub
Строки
вы видели уже несколько раз. Строка 6 содержит
I цию получения ссылки на объект
имеющий отношение к
информации о контактах. Атрибут Items класса MAFlFolder — это
обычная коллекция, и к ней применимы все известные вам операции.
Например, задача прохождения по элементам коллекции легко решается
с помощью цикла For Each .
Next, индекс которого задается пере-
менной типа Variant (строка 7). В этой ситуации, кроме того, приме-
нима и циклическая конструкция For
Next, на каждом шаге кото-
рой очередной элемент коллекции должен быть присвоен переменной
типа Variant.
Процедура листинга 24.6 осуществляет вывод содержимого элемента коллекции
контактов в окно Immediate; впрочем, внутри цикла вы можете выполнять любые
другие операции — скажем, редактирование элемента данных, его форматирование
или печать, отображение в графических визуальных компонентах, занесение в файл
отчета или пересылку по электронной почте. В следующем разделе предлагаются
примеры, демонстрирующие способы изменения данных Outlook.
Обновление информации Outlook
из внешних приложений
Изменяется наша жизнь — изменяется и информация. Телефонные компании, об-
радованные и одновременно озабоченные ростом количества абонентов, вынуждены
добавлять к телефонным номерам новые префиксы. Фирмами и физическими лицами
ежедневно открываются сотни Web-сайтов. Адресаты переходят на новую работу,
компании переезжают в новые офисы — как уследить за непрерывно обновляющейся
информацией?
Производительность будет минимальной, если вы будете перебирать вручную де-
сятки, а то и сотни адресов или телефонных номеров. Напишите несколько процедур
и возложите все эти неприятные обязанности на плечи Access. Листинг 24.7 демонст-
рирует простой пример, связанный с модификацией телефонных номеров. Немного
фантазии — и вы сможете расширить эту процедуру, снабдив ее средствами поддерж-
ки графического интерфейса, ведения протокола изменений и т.п.
Листинг 24.7. Пример процедуры обновления данных о контактах
1: Sub
)
2: Dim Outlook As New
3:
4:
5:
7:
9:
10:
11:
Dim NameSpace As NameSpace
Set NameSpace =
"MAPI" )
Dim ContactFolder As MAPIFolder
Set ContactFolder =
Dim I As Integer, Offset As Integer
For I = 1 To
434
Часть VIII. Объектно-ориентированное программирование в Access