Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Access_2007.doc
Скачиваний:
257
Добавлен:
17.03.2015
Размер:
20.6 Mб
Скачать

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

Макрокоманда ОтправитьОбъект использует стандарт, именуемый 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

Примечание

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

Назначение макросу комбинации клавиш

Иногда создается макрос настолько удобный, что хочется иметь его под рукой все время. Сде­лать это можно, назначив макросу комбинацию клавиш. Затем вместо направления в область переходов вы нажимаете, например <Ctrl>+<M>, и ваш макрос немедленно стартует.

Подсказка

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

Довольно странный способ присваивания макросу комбинации клавиш, принятый в про­грамме Access, состоит в создании еще одного макроса. Этот макрос должен быть назван AutoKeys и его единственная задача — присвоить сочетания клавиш другим макросам.

Как же действует макрос AutoKeys? Все дело в имени. Когда добавляется макрос в группу AutoKeys, вы даете ему специальным образом закодированное имя, реально пред­ставляющее собой сочетание клавиш. Когда вы называете макрос ^М, программа Access знает, что его надо запускать, когда нажимается комбинация клавиш <Ctrl>+<M>. На рис. 15.17 показано несколько примеров макросов.

Примечание

На рис. 15.17 видно, что каждый макрос в группе выполняет отдельно хранящийся объект-макрос с помощью макрокоманды ЗапускМакроса. Такой проект необязателен (можно кодировать

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

Рис. 15.17. В данном примере группа макросов AutoKeys содержит три макроса, которым назначены комбинации клавиш <Ctrl>+<Shift>+<M>, <Ctrl>+<Shift>+<P> и <Ctrl>+<Shift>+<T> соответственно

Единственная особенность применения группы макросов AutoKeys — знание правил именования макросов, позволяющих программе Access применять те сочетания клавиш, которые вы назначили. Access разрешает использовать буквы и цифры в комбинации с кла­вишами <Ctrl> и <Shift>. (Клавиша <Alt> запрещена, поскольку используется при выборе команд на ленте.) Кроме того, можно использовать функциональные клавиши (<F1>— <F12>) и клавиши <Insert> и <Delete>, также в сочетании с клавишами <Ctrl> и <Shift>.

Вот как именуется макрос:

  • ^ обозначает клавишу <Ctrl>. Таким образом, ^М означает <Ctrl>+<M>;

  • + обозначает клавишу <Shift>. Таким образом, ^+М означает <Ctrl>+<Shift>+<M>;

  • {F1} обозначает клавишу <F1>. Таким образом, +{Fi} означает <Shift>+<Fl>. Все остальные функциональные клавиши применяются аналогично;

  • {INS} обозначает клавишу <Insert> и {DEL} обозначает клавишу <Delete>. Таким образом, ^{INS} — это <Ctrl>+<Insert>.

Подсказка

Прежде чем вы назначите макросу комбинацию клавиш, следует проверить, не выполняет ли это сочетание клавиш что-нибудь полезное. Ваш макрос переопределяет встроенные команды

Access. Примером может служить сочетание <Ctrl>+<S>, сохраняющее текущий объект. Для снижения вероятности возникновения конфликтов при использовании клавиатурных сочетаний используйте комбинации, включающие клавишу <Shift>, которая применяется реже.

Настройка макроса запуска

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

Access также предоставляет способ обхода макроса AutoExec. Если держать нажатой клавишу <Shift> во время первой загрузки БД, программа Access не выполняет макрос AutoExec (и не отображает любую стартовую форму, которую вы, может быть, настроили). Но не надейтесь на эту уловку, поскольку очень легко забыть нажать клавишу <Shift> в нужное время.

Подсказка

Помните о том, что если ваш макрос содержит опасные макрокоманды и ваша БД не надежна, программа Access не выполнит его. Если открыть ненадежную БД и выбрать включение опас­ного содержимого БД с помощью панели сообщений, Access повторно загрузит БД и в этот момент запустит макрос AutoExec.

Присоединение макросов к формам

Самые изощренные макросы работают вместе с формами вашей БД. С помощью такого объ­единения можно создать макрос, который выполняется автоматически, когда что-то проис­ходит (например, когда кнопка щелкается мышью или изменяется запись). Можно также создать гораздо более гибкие макросы, у которых нет фиксированных значений аргументов — вместо этого нужные данные они могут взять из текстовых полей формы.

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

Что такое событие

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

У формы есть три типа событий.

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

значение с помощью удачно подобранного условия на значение.) Как вы увидите, боль­шинство названий событий на английском языке начинаются со слова "On".

Примечание

У многих элементов управления одинаковые события. Если у вас на форме два поля и одна кноп­ка, у всех у них есть событие Нажатие кнопки (On Click). Но путаницы не возникает, поскольку программа Access отслеживает, какое событие возникает в каком элементе управления.

События разделов. Как вы узнали раньше, формы имеют разделы, поэтому можно отде­лить содержимое заголовка и примечания от остальных данных записи. У каждого раз­дела есть несколько собственных событий, которые происходят, когда вы перемещаете мышь в разделе (ПеремещениеУказателя (On Mouse Move)) или щелкаете кнопкой мыши на пустом месте (НажатиеКнопки (On Click)). Эти события, как правило, менее полезны для программистов макроса.

События формы. Длинный список более общих, событий относится к форме. Этот список включает события, которые возникают, когда форма открывается впервые (Открытие (On Open)) и когда она закрывается (Закрытие (On Close)), когда вы переходите от од­ной записи к следующей (Текущая Запись (On Current)) и когда завершается операция над данными, например, обновление (После обновления (After Update)).

Рис. 15.18. Здесь показаны события для типичного поля ввода. Если щелкнуть кнопкой мыши одно из полей вкладки События, в строке состояния, в левой нижней части окна, появляется однострочное описание события. Как можно видеть, сейчас все поля событий пусты, что означает отсутствие присоединенного макроса

Для просмотра событий, относящихся к разным частям формы, выполните следующие действия.

1. Откройте форму в режиме Конструктора.

Если на экране нет Окна свойств, отобразите его, выбрав на ленте Инструменты конст­руктора форм | Конструктор → Сервис → Страница свойств (Form Tools | Design Tools Property Sheet).

2. Выберите элемент, имеющий события, которые вы хотите исследовать.

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

3. В Окне свойств перейдите на вкладку События.

Теперь вы увидите список событий, предоставляемых элементом управления, как пока­зано на рис. 15.18.

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

Таблица 15.4. События, полезные для программирования макроса

Элемент управления

Событие

Описание

Все элементы управления

Вход(On Enter)

Возникает, когда вы переходите к элементу управления в первый раз (либо нажатием клавиши, такой как <Таb>, либо щелчком кнопки мыши)

Перемещение указателя

(On Mouse Move)

Происходит, когда мышь перемещается по элементу управления

Любой редактируе­мый элемент управ­ления

Изменение(On Change)

Возникает, когда изменяется значение в элементе управления

Кнопка

Нажатие кнопки(On Click)

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

Поле со списком

Отсутствие в списке (On

Not In List)

Возникает, когда вводится значение, кото­рого нет в списке

Форма

Загрузка(On Load)

Происходит, когда форма открывается впервые (и вы можете инициализировать ее)

Таблица 15.4 (окончание)

Элемент управления

Событие

Описание

Закрытие(On Close)

Возникает, когда форма закрывается. Мож­но отменить это событие, если хотите оста­вить форму открытой

Текущая запись(On Current)

Происходит, когда вы переходите к записи (включая открытие формы и переход к пер­вой записи)

Внесены изменения(On

Dirty)

Возникает, когда вы вносите первое изме­нение в запись. Сейчас она в режиме редак­тирования

Отмена (On Undo)

Происходит, когда вы выходите из режима редактирования и отменяете внесенные изменения (обычно нажатием клавиши <Esc>)

До вставки(Before Insert),До обновления(Before Update),До подтвержде­ния(Before Del Confirm)

Возникает в процессе вставки, обновления или удаления. Можно отменить это событие, если не нравится то, что видите (например, обнаружили некорректные данные)

После вставки(After Insert),После обновления(After Update),После подтвер­ждения(After Del Confirm)

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

Примечание

События обновления, вставки и подтверждения (две последние строки таблицы) также приме­нимы к любому редактируемому элементу управления. Поле использует события До обновле­ния и После обновления для обозначения момента изменения его значения. В главе 17 вы найдете пример, применяющий это событие для немедленной реакции на изменение конкрет- , ного поля (не дожидаясь, пока будет обновлена вся запись).

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

Присоединение макроса к событию

Теперь, когда вы увидели события, которые предлагают формы и элементы управления, по­ра попробовать присоединить макрос. Основная последовательность действий проста.

  1. Создайте и сохраните макрос, как описано в разд. "Создание макроса "ранее в этой главе.

  2. Откройте вашу форму в Конструкторе и убедитесь в том, что на экране отображается Окно свойств.

  1. Выберите элемент управления, раздел или всю форму.

  1. В Окне свойств выберите вкладку События и найдите событие, которое хотите использовать.

  2. В поле Событие щелкните кнопкой мыши направленную вниз стрелку и выберите макрос, который хотите использовать.

На рис. 15.19 показан пример.

Рис. 15.19. В этом примере к событию Нажатие кнопки присоединяется макрос MailResults. Теперь при каждом щелчке " кнопки мышью будет выполняться данный макрос

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]