Отправка данных по электронной почте

Одна из скрытых возможностей макроязыка программы Access — команда ОтправитьОбъект(SendObject) — универсальная команда для отправки сообщений электронной почты.

 

 

На профессиональном уровне.

ОтправитьОбъект работает с вашей программой элекронной почты

Макрокоманда ОтправитьОбъект использует стандарт, именуемый MAPI (Messaging Application Programming Interface, интерфейс прикладного программирования для электронной почты), т. е. позволяет вам применять любую Windows-программу элек­тронной почты. Неважно, предпочитаете вы Outlook, Eudora, Pegasus или что-то более экзотическое — ОтправитьОбъектспособна запустить вашу программу электронной почты и использовать ее для отправки сообщения. Если вы не знаете, какая программа используется по умолчанию на вашем компьютере для отправки электронной почты, это легко установить.

3 Вы можете использовать значения по умолчанию для всех остальных аргументов.


Откройте Панель управления,выберите пиктограмму Свойства обозревателяи щелк­ните кнопкой мыши вкладку Программы.Вы найдете на ней ваш стандартный Web-обозреватель, приложение электронной почты и несколько менее широко используемых приложений, относящихся к Интернету (например, просмотр групп новостей).

Команда ОтправитьОбъектна удивление универсальна. Ее можно применять в следую­щих случаях.

Для отправки по электронной почте объекта БД другому пользователю. Объект БД преобразуется в другой выбранный вами формат, например электронную таблицу Excel, Web-страницу на языке HTML или даже подготовленный для вывода на печать PDF-файл (если вы установили свободно распространяемый дополнительный модуль "Save As PDF" (сохранить как PDF-файл), описанный в разд. "Получение дополнительного модуля "ave As PDF'" главы 10). Объект, который вы хотите послать, задается с помощью аргументов Тип объектаи Имя объекта.

Для отправки по электронной почте текущего объекта БД. В этом случае вы получаете неограниченно гибкий макрос, способный отправить любые данные, которые вы просматриваете в настоящий момент. Единственное ограничение — знание типа объекта, который планируется отправить, перед вами полная таблица, запрос, выделяющий важную информацию, или отчет с группировкой и промежуточными итогами. Просто задайте соответствующий тип в аргументе Тип объекта,а аргумент Имя объектаоставьте пустым.

Для отправки обычного электронного сообщения. Для этого оставьте пустыми оба аргумента: Тип объектаи Имя объекта.Вы можете написать сообщение в свойстве Сообщение(Message Text). Этот метод удобен для оповещения кого бы то ни было о том, что вы вставили новые данные или внесли значительные корректировки.

 

 

Примечание

Команда ОтправитьОбъектможет отправлять только по одному объекту. Если нужно отпра­вить несколько объектов БД, придется применить ее несколько раз. Для отправки трех отчетов вам понадобятся три электронных сообщения с тремя вложенными файлами. В некоторых слу­чаях вы сможете обойти это ограничение, создав изобретательный запрос, который собирает вместе всю нужную вам информацию и позволяет отправить один комплект результатов.

 

 

Самое приятное то, что команду ОтправитьОбъектможно использовать в ненадежных БД при соблюдении следующего правила: у аргумента Изменение сообщения(Edit Message) должно быть значение Да. В этом случае, когда выполняется макрос, у вас есть последняя возможность просмотреть сообщение, изменить любой текст и отменить его от­правку, если чем-то не довольны. Если же у аргумента Изменение сообщениязначение Нет, макрокоманда ОтправитьОбъектотправляет сообщение, не предоставляя возможно­сти его просмотра и корректировки. Такое поведение считается рискованным, поэтому про­грамма Access не допускает его в ненадежных БД.

В приведенном в табл. 15.3 макросе два запроса с данными о продажах преобразуются в электронные таблицы Excel. Затем они посылаются ведущим руководителям.


Таблица 15.3. Макрос отправки данных по электронной почте

 

Макрокоманда Важные аргументы4 Описание
ОтправитьОбъект Тип объекта: Запрос Имя объекта: MonthlySalesTotals Формат вывода: Excel Workbook (.xlsx) Кому: headhoncho@acme.com Тема: Monthly Update Сообщение: Здесь представлены самые свежие объемы продаж, непо­средственно из применяющей макро­сы БД Access. Вы получите итоги по клиентам в отдельном электронном письме Изменение сообщения: Да Отправляет сообщение электронной почты руководителю headhon-cho@acme.com с данными из запро­са MonthlySalesTotals (месячные итоги продаж), преобразованного в рабочую книгу Excel. Тема сообще­ния и его текст заданы в аргументах Тема и Сообщение. У вас есть воз­можность подправить их перед от­правкой сообщения. На рис. 15.14 показано это действие
ОтправитьОбъект Тип объекта: Запрос Имя объекта: CustomerSalesTotals Формат вывода: Excel Workbook (.xlsx) Кому: headhoncho@acme.com Тема: Monthly Update Сообщение: Здесь представлены итоги по клиентам Изменение сообщения: Да Отправляется второе электронное сообщение руководителю headhon-cho@acme.com с данными из запро­са CustomerSalesTotals

 

Если вы технически грамотны, то можете отправить сообщения по электронной почте одновременно огромному количеству людей. Самый простой вариант — вставить полный список адресов в аргументы Кому, Копияили СК,разделив адреса точкой с запятой (;). Но лучше применить список рассылки. Этот метод может меняться в зависимости от исполь­зуемой почтовой программы, но в программах Outlook и Outlook Express его использовать легко — просто вставьте имя списка рассылки в поле Кому.Если вы создали список, на­званный FairweatherFriends (друзья хорошей погоды), введите слово FairweatherFriends в аргумент Кому.

 

Подсказка

Не хватает места для редактирования сообщения? Нажмите комбинацию клавиш <Shift>+<F2> во время редактирования свойства Сообщениедля отображения Окна вводабольшего раз­мера, в котором видны одновременно несколько строк.

4 Вы можете использовать значения по умолчанию для всех остальных аргументов.


 

Рис. 15.14.Когда у свойства Изменение сообщениязначение Да, у вас есть последняя возможность просмотреть (или изменить) сообщение перед отправкой

 

 

Управление макросами

По мере создания все большего числа привлекательных макросов возникает необходимость в их организации, гарантирующей, что нужные макросы окажутся под рукой, как только они понадобятся. У программы Access есть несколько инструментов, помогающих справиться с этой задачей, включая группы макросов, объединяющие связанные макросы в один объект для облегчения хранения, и комбинации клавиш для макросов, позволяющие запускать подходящий макрос именно тогда, когда он нужен.

 

 

Группы макросов

В среднем макрос содержит только от трех до пяти команд. Но средняя БД, применяющая макросы, быстро накапливает десятки макросов. Управлять этими крошечными програм­мами порой трудно, особенно если нужно помнить, что делает каждый из них.

Можно применить группу макросов. Внешне группа макросов выглядит как один макрос, поскольку хранится в едином объекте БД. Но группа макросов может содержать неограни­ченное количество отдельных макросов, у каждого из которых есть свое имя. После того как вы поместили связанные макросы в одну группу, вам будет легче найти нужный макрос, когда придет время его редактировать.

 

Подсказка

Профессионалы Access применяют группы макросов для группировки в одном месте макросов, используемых в одной форме, работающих с одной таблицей или выполняющих однотипные задачи (например, печать или редактирование записей).


Для создания группы макросов просто создается макрос, использующий столбец Имя макроса.Обычно столбец Имя макросаскрыт, поскольку все макрокоманды — это компо­ненты одного и того же макроса. Но при создании группы макросов следует выбрать на лен­те Работа с макросами | КонструкторПоказать или скрытьИмена макросов(Macro Tools | Design → Show/Hide → Macro Names) для отображения этого столбца.

Тут есть хитрость. Каждый раз, когда вы начинаете создавать новый макрос, вы вводите его имя в столбец Имя макроса.Таким образом, можно накладывать один макрос на другой до тех пор, пока вы помните о необходимости смены имени. Можно даже использовать пус­тые строки для отделения макросов в группе и облегчения чтения и понимания макросов. Лучший способ понять — посмотреть пример группы макросов на рис. 15.15.

Рис. 15.15.Эта группа макросов объединяет три макроса, перечисляя все их макрокоманды одну за другой. В начале каждого нового макроса в столбце Имя макросапоявляется его имя. Обратите внимание на пустые строки и многочисленные комментарии. Программа Access игнорирует эти детали

 

 

Подсказка

Легче всего применять группы к коротким макросам (макросам, у которых не слишком много макрокоманд). Когда необходимо редактировать макрос, можно использовать удобную коман­ду ленты Вставить строки(Insert Rows) для увеличения доступного свободного пространства.

 

 

У каждого макроса, включенного в группу, двухчастное имя. Первая часть — имя группы макросов, а вторая часть — любой текст, который вы ввели в столбец Имя макроса.Полное имя макроса PrintCheapskates(печать прижимистых клиентов) в группе макросов Basic-Macros(основные макросы), показанного на рис.. 15.15, — BasicMacros.PrintCheapskates.При запуске макроса следует использовать его полное имя.


Одно из ограничений групп макросов заключается в невозможности использования их из области переходов. Если щелкнуть правой кнопкой мыши группу макросов в области переходов и выбрать команду Выполнить(Run), программа Access выполнит только первый макрос в группе. Для запуска остальных макросов следует выбрать на ленте Работа с база­ми данныхМакросВыполнить макрос(Database Tools → Macro → Run Macro). Затем можно ввести правильное двухчастное имя или выбрать его из раскрывающегося списка (как показано на рис. 15.16).

Рис. 15.16.В данном примере программа Access готова к выполнению макроса MailResultsиз группы BasicMacros

 

Примечание

Если вам кажется, что этот способ запуска потребует больших усилий, не волнуйтесь. Большая часть макросов не запускается из области переходов, а связывается с формой, а в этом слу­чае полное имя не приведет к дополнительной работе. Но если у вас есть макрос, который вы определенно хотите запускать из области переходов, группировка макросов в этой ситуации — не ваш путь.