- •Часть I. Хранение данных в таблицах 34
- •Глава 1. Создание вашей первой базы данных 35
- •Глава 2. Создание более сложных таблиц 66
- •Глава 3. Обработка листа данных: сортировка, поиск,
- •Глава 4. Блокировка неправильных данных 136
- •Глава 5. Связывание таблиц с помощью отношений 168
- •Часть II. Обработка данных с помощью запросов 206
- •Глава 6. Запросы, выбирающие записи 207
- •Глава 7. Основные хитрости, применяемые в запросах 241
- •Глава 8. Запросы, обновляющие записи ..272
- •Глава 9. Анализ данных с помощью перекрестных запросов и
- •Часть III. Отчеты 323
- •Глава 10. Создание отчетов 324
- •Глава 11. Проектирование сложных отчетов 356
- •Часть IV. Разработка пользовательского интерфейса
- •Глава 12. Создание простых форм 392
- •Глава 13. Проектирование сложных форм 426
- •Глава 14. Создание системы переходов 465
- •Часть V. Программирование в access 496
- •Глава 15. Автоматизация задач с помощью макросов 497
- •Глава 16. Автоматизация выполнения задач средствами языка
- •Глава 17. Написание кода с более развитой логикой 571
- •Часть VI. Совместное использование access 615
- •Глава 18. Совместное использование бд несколькими пользователями 616
- •Глава 19. Импорт и экспорт данных 650
- •Глава 20. Подключение Access к sql Server 692
- •Глава 21. Подключение Access к SharePoint 724
- •На профессиональном уровне. Преимущества хорошо спроектированной базы данных
- •Для тех, кто понимает. Когда программы Access недостаточно
- •Уголок ностальгии. Зачем опять изобретать колесо?
- •Уголок ностальгии. Сочетания клавиш в Access 2003
- •Часть I
- •Часто задаваемый вопрос. Использование чужой бд
- •На профессиональном уровне. Шаблоны, подходящие для разных целей
- •На профессиональном уровне. Работа Access в интерактивном режиме
- •Для тех, кто понимает. Использование Access бд, созданных в более ранних версиях программы
- •На профессиональном уровне. Проектирование бд для начинающих
- •На профессиональном уровне. Вставка больших значений в узкие столбцы
- •Для тех. Кто понимает. Если сомневаетесь, не удаляйте
- •Малоизвестная или недооцененная возможность. Копирование записи целиком за один шаг
- •Малоизвестная или недооцененная возможность. Сжатие бд
- •Часто задаваемый вопрос. У какого файла расширение laccdb?
- •Практические занятия для опытных пользователей. Изменение папки, которую Access использует для хранения бд
- •Малоизвестная или недооцененная возможность. Сворачивание ленты
- •Экономящая время подсказка. Создание ярлыка для таблицы
- •Глава 2
- •Для тех, кто понимает. Изменение типа данных может привести к потере информации
- •На профессиональном уровне. Нормативы максимальной длины
- •На профессиональном уровне. Как Access предотвращает дублирование записей
- •На профессиональном уровне. Почему так важна уникальность
- •Глава 3
- •Малоизвестная или недооцененная возможность. Настройка всех листов данных
- •На профессиональном уровне. Числа и специальные символы в текстовых полях
- •Практические занятия для опытных пользователей. Фильтры в противоположность запросам
- •Малоизвестная или недооцененная возможность. Поиск и замена
- •Глава 4
- •Для тех, кто понимает. Не требуйте слишком многого
- •На профессиональном уровне. Как работают индексы
- •Часто задаваемый вопрос. Индексы и производительность
- •Практические занятия для опытных пользователей. Вставка вашей маски в список масок программы
- •На профессиональном уровне. Создание списка подстановки, использующего другую таблицу
- •Глава 5
- •Часто задаваемый вопрос. Отключение обеспечения целостности данных
- •Для тех, кто понимает. Пользуйтесь каскадным удалением с осторожностью
- •Практические занятия для опытных пользователей. Изменение параметров подтаблицы
- •Часто задаваемый вопрос. Обновление списка
- •Для тех, кто понимает. Применяйте связи "один-к-одному" с осторожностью
- •Часто задаваемый вопрос. Работа со связями "многие-ко-многим"
- •Часто задаваемый вопрос. Печать ваших отношений
- •Часть II
- •Для тех, кто понимает. Не бойтесь подстановок
- •На профессиональном уровне. Синтаксис фильтра
- •Практические занятия для опытных пользователей. Как индексы ускоряют поиск
- •Малоизвестная или недооцененная возможность. Запросы на базе запросов
- •Для тех, кто понимает. Подумайте дважды, прежде чем изменять структуру таблиц
- •На профессиональном уровне. Сравнение: отношения и объединения
- •На профессиональном уровне. Изменение данных при использовании запроса с объединением
- •Глава 7
- •На профессиональном уровне. Синхронизация запросов
- •Малоизвестная или недооцененная возможность. Переименование поля в запросе
- •Часто задаваемый вопрос Банковское округление
- •Практические занятия для опытных пользователей. Улучшенные числовые форматы
- •Малоизвестная или недооцененная возможность. Использование случайных чисел для сортировки в случайном порядке
- •Практические занятия для опытных пользователей. Как извлечь первое слово из текстовой строки
- •Для тех, кто понимает. Вычисления для дат и времени
- •Глава 8
- •Аварийная ситуация. Когда Access блокирует ваше обновление
- •Малоизвестная или недооцененная возможность. Скрытие запроса
- •Глава 9
- •Часто задаваемый вопрос. Итоговый проигрыш; итоговый запрос против перекрестного
- •Для тех, кто понимает. Создание запроса с объединением для лучшей группировки
- •На профессиональном уровне. Правильный выбор групп
- •Малоизвестная или недооцененная возможность. Помещение сводных таблиц в их собственные формы
- •Часть III
- •Глава 10. Создание отчетов
- •Глава 11. Проектирование сложных отчетов
- •Глава 10
- •На профессиональном уровне. Выполнение тяжелой работы с помощью запроса
- •Часто задаваемый вопрос. Добавление изображений в отчеты.
- •На профессиональном уровне. Учитесь любить pdf-файлы
- •Часто задаваемый вопрос. Разные способы экспорта данных
- •Малоизвестная или недооцененная возможность. Формат по образцу.
- •Практические занятия для опытных пользователей. Разные линии сетки
- •Глава 11
- •Часто задаваемый вопрос. Ошибки выражений
- •Часть IV
- •На профессиональном уровне. Поля типа Счетчик в формах
- •На профессиональном уровне. Разные люди — разные формы
- •Малоизвестная или, недооцененная возможность. Вывод на экран изображений из бд
- •На профессиональном уровне. Семейство форм Access
- •Глава 13
- •На профессиональном уровне. Присоединенные элементы управления
- •Малоизвестная или недооцененная возможность. Повторное применение ваших любимых настроек стиля границ
- •Часто задаваемые вопросы. Осовременивание элементов управления Windows
- •Практические занятия для опытных пользователей. Как освободиться от привязки к сетке
- •На профессиональном уровне. Насколько велик ваш экран?
- •Глава 14
- •Малоизвестная или недооцененная возможность. Варианты сортировки и просмотра в области переходов
- •На профессиональном уровне. Кнопочные формы с несколькими страницами
- •За кадром. Меню кнопочных форм сохраняются в бд
- •Часть V
- •На профессиональном уровне. Макросы по сравнению с программным кодом
- •Практические занятия для опытных пользователей. Обработка ошибок макроса
- •На профессиональном уровне. Макрокоманды, которым Access не доверяет
- •На профессиональном уровне. ОтправитьОбъект работает с вашей программой элекронной почты
- •Часто задаваемый вопрос. Внедренный макрос
- •Глава 16
- •Малоизвестная или недооцененная возможность. Справка по Visual Basic
- •Для тех кто понимает. Как код связывается с событиями
- •Малоизвестная или недооцененная возможность Разбиение длинных строк кода
- •На профессиональном уровне. Взаимодействие с другими формами
- •Практические занятия для опытных пользователей. Получение нужного цвета
- •Часто задаваемый вопрос. Ленточные формы и неприсоединенные элементы управления
- •Практические занятия для опытных пользователей. Связывание записей с рисунками
- •Глава 17
- •Практические занятия для опятных пользователей. Применение более сложных переменных
- •Практические занятия для опытных пользователей. Применение пользовательских функций в запросах
- •На профессиональном уровне. Алгоритм Луна (Luhn Algorithm)
- •Часто задаваемый вопрос. Запуск других Windows-программ
- •На профессиональном уровне. Станьте знатоком статистических функции по подмножеству
- •Уголок ностальгии. Dао против аdо
- •Часть VI
- •Для тех, кто понимает. Поиск места в сети для вашей бд
- •На профессиональном уровне Указание местонахождения в сети
- •Часто задаваемый вопрос. Как поведут себя старые версии Aсcess?
- •Аварийная ситуация. Мистическая ошибка “Файл уже используется”
- •Часто задаваемый вопрос. Когда не следует пользоваться форматом accde
- •Уголок ностальгии. Отмирание страниц доступа к данным
- •Практические занятия для опытных пользователей. Разделение таблиц для более безопасных корректировок
- •Уголок ностальгии. Защита с помощью рабочих групп упразднена
- •Глава 19
- •На профессиональном уровне. Sql Server и SharePoint: два частных случая
- •Сберегающая время подсказка. Копирование из одной бд в другую
- •На профессиональном уровне. Опасность дубликатов
- •Малоизвестная или недооцененная возможность. Экспорт отчетов
- •На профессиональном уровне. Более внимательный взгляд на теги
- •Глава 20
- •На профессиональном уровне. Важнейшие причины перехода на sql Server
- •Часто задаваемые вопрос. Можно ли доверять корпорации Microsoft?
- •На профессиональном уровне. Проекты Access по сравнению со связанными таблицами
- •0 Запросах
- •Для тех, кто понимает. Синтаксические различия
- •Глава 21
- •Часто задаваемый вопрос. Путаница, связанная с SharePoint
- •На профессиональном уровне. Установка SharePoint
- •На профессиональном уровне. Пять интересных инструментов программы SharePoint, которые стоит опробовать
- •Малоизвестная или недооцененная возможность.
- •Малоизвестная или недооцененная возможность. Представление таблицы данных Access
- •Малоизвестная или недооцененная возможность. Параметры списков SharePoint
На профессиональном уровне. ОтправитьОбъект работает с вашей программой элекронной почты
Макрокоманда ОтправитьОбъект использует стандарт, именуемый 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 вы найдете пример, применяющий это событие для немедленной реакции на изменение конкрет- , ного поля (не дожидаясь, пока будет обновлена вся запись).
Если просмотреть вкладку События в Окне свойств, то можно найти множество событий, включая такие, которые позволяют реагировать на нажатие клавиши, щелчок кнопки мыши в любом месте или переход от одного элемента управления к другому. Не старайтесь запомнить все эти варианты прямо сейчас. После того как вы научитесь отвечать на событие, используя макрос, вы сможете обрабатывать практически любое событие.
Присоединение макроса к событию
Теперь, когда вы увидели события, которые предлагают формы и элементы управления, пора попробовать присоединить макрос. Основная последовательность действий проста.
Создайте и сохраните макрос, как описано в разд. "Создание макроса "ранее в этой главе.
Откройте вашу форму в Конструкторе и убедитесь в том, что на экране отображается Окно свойств.
Выберите элемент управления, раздел или всю форму.
В Окне свойств выберите вкладку События и найдите событие, которое хотите использовать.
В поле Событие щелкните кнопкой мыши направленную вниз стрелку и выберите макрос, который хотите использовать.
На рис. 15.19 показан пример.
Рис. 15.19. В этом примере к событию Нажатие кнопки присоединяется макрос MailResults. Теперь при каждом щелчке " кнопки мышью будет выполняться данный макрос