- •Часть 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
Часть V
Программирование в Access
Глава 15. Автоматизация задач с помощью макросов
Глава 16. Автоматизация выполнения задач средствами языка Visual Basic
Глава 17. Написание кода с более развитой логикой
Глава 15
Автоматизация задач с помощью макросов
Секрет долгих и счастливых отношений с программой Access кроется в умении заставить ее работать так, как вы хотите.
Как вы уже видели, истинные фанаты Access не пользуются листом данных для ввода информации. Вместо этого они создают собственные настраиваемые формы ввода данных. Приверженцы программы Access также не печатают данные с помощью вызывающих зевоту таблиц. И конечно же, профессионалы Access не повторяют одни и те же утомительные действия при выполнении часто выполняемой задачи — они создают макросы, заставляющие программу Access делать работу за них.
Макрос — это небольшая программа, которую вы создаете и храните в БД. Макрос может быть крайне простым (например, команда отображения формы) и головоломно сложным (например, макрос с условием, проверяющий количество сырого мяса на складе и автоматически печатающий заказ в трех экземплярах, если ваш холодильник пуст).
В данной главе вы узнаете, как создавать базовые макросы. Затем вы научитесь делать их более сообразительными. В конце главы вы сможете собрать вместе макросы, способные запуститься при необходимости, выполнить целую последовательность шагов и даже принимать решения. Эта глава также подготовит переход к следующей главе, в которой вы подойдете к полноценному программированию на языке Visual Basic.
На профессиональном уровне. Макросы по сравнению с программным кодом
В прошлом у макросов была немного сомнительная репутация. Некоторые специалисты Access избегали их, предпочитая применять более мощный язык программирования Visual Basic (VB) (с которым вы познакомитесь в следующей главе). Корпорация Microsoft внесла в эту ситуацию свою лепту, полагая, что макросы — это устаревшие средства и не лучший выбор для передовых разработчиков.
В Access 2007 Microsoft наконец уделила макросам больше внимания и улучшила их репутацию. Несмотря на то, что у макросов и близко нет таких функциональных возможностей, как у чистого VB-кода, они просты, ясны и быстры настолько, что никакой VB-код не сможет с ними сравниться. Но самое главное достоинство макросов — безопасность. Поскольку программа Access знает, что делает каждый макрос, она может утверждать, что большинство из них безопасны. Другими словами, Access знает, что макрокоманда ОткрытьФорму (OpenForm) может применяться только для открытия формы, поэтому не стоит беспокоиться о том, что она может удалить ваши файлы, отправить снам вашим друзьям или отформатировать ваш жесткий диск. В случае VB-кода у программы Access нет такой уверенности.
В результате она склонна блокировать ваши снабженные кодом средства, даже если они не более опасны, чем два волоска, свернувшиеся на подушке. (Вы более подробно познакомитесь с проблемой безопасности в разд. "Макросы и безопасность" далее в этой главе.)
Даже если вы решили не тратить времени на макросы и стать программистом на Visual Basic, обладающим черным поясом, все равно следует начать с данной главы. Здесь вы узнаете важную информацию о том, как макросы встраиваются в формы (см. разд. "Присоединение макросов к формам" далее в этой главе). Как вы увидите в следующей главе, программные процедуры взаимодействуют с формами точно так же.
Базовые сведения о макросах
Несмотря на то, что вы могли этого не осознать, вы уже пользовались макросами. В главе 14 вы создавали кнопки, способные выполнять полезные задачи, например, открывать другие формы или переходить к конкретной записи. Для создания этих макрокоманд вы применяли мастер создания кнопок, который задает несколько простых вопросов и затем генерирует сделанный по мерке макрос.
Рис. 15.1. Этот макрос состоит из двух макрокоманд. Первая открывает таблицу, а вторая переходит к заданной записи. Когда вы запускаете макрос, программа Access начинает с вершины списка и двигается вниз, последовательно выполняя макрокоманды
Хотя мастер создания кнопок прост в применении, его не обвинишь в излишней гибкости. Теперь вы достаточно подготовлены для того, чтобы стать еще сильнее и создать собственный макрос.
Создание макроса
В следующем примере вы начнете, не спеша, с создания простого макроса, который открывает таблицу и переходит сразу к последней строке. Далее перечислены действия, необходимые для создания макроса.
1. Выберите на ленте Создание → Другие → Макрос.
На экране появится новое окно для создания нового макроса. Неофициально оно называется конструктором макроса.
Любой макрос состоит либо из последовательности одного или нескольких шагов, либо из действий (макрокоманд). Для создания макроса вы формируете список макрокоманд, помещая каждую из них в отдельную строку (рис. 15.1). Первоначально этот список пуст и ваш макрос ничего не выполняет.
Рис.15.2. Щелкните кнопкой мыши направленную вниз стрелку (обведена), чтобы просмотреть представленные в алфавитном порядке макрокоманды, которые можно использовать. После того как макрокоманда выбрана, в нижнем правом углу окна появляется краткое, но полезное описание
2. Выберите первую макрокоманду.
У программы Access есть предварительно подготовленный список макрокоманд, которые можно использовать для приготовления макросов. Когда добавляется команда, ее просто выбирают из этого списка, как показано на рис. 15.2. В данном примере начните с выбора макрокоманды ОткрытьТаблицу (ОреnТаble).
Примечание
В данный момент вы работаете только с макрокомандами, которые программа Access считает безопасными для всех БД. Немного позже (см. разд. "Опасные макрокоманды" далее в этой главе) вы рассмотрите возможность применения нескольких команд, использование которых программа Access считает рискованным делом.
Рис. 15.3. Когда в списке выбирается макрокоманда, все аргументы отображаются в нижней части окна. Как видно из данного примера, у макрокоманды ОткрытьТаблицу — три аргумента (Имя таблицы, Режим и Режим данных). Каждый раз, когда вы щелкаете кнопкой мыши в одном из этих полей, в поле, расположенном справа, появляется краткое описание аргумента. Значения ваших аргументов также отображаются в виде разделенного запятыми списка в столбце Аргументы, расположенном рядом с макрокомандой
3. В нижней части вкладки макроса в разделе Аргументы макрокоманды (рис. 15.3) выберите параметры для вашего макроса.
Большинству макрокоманд для выполнения их работы нужна от вас некоторая информация. В макрокоманде ОткрытьТаблицу (ОреnТаble) мало смысла до тех пор, пока вы
не сообщите программе Access, какую именно таблицу хотите открыть. Эти дополнительные сведения и называют аргументами.
У макрокоманды ОткрытьТаблицу (ОреnТаble) три аргумента.
Имя таблицы ссылается на таблицу, которую вы хотите открыть. Его можно выбрать из раскрывающегося списка таблиц. В данном примере можно использовать любую непустую таблицу.
Режим позволяет выбрать применяемый режим представления. Можно выбрать обычный режим Таблица для ввода информации, Конструктор для изменения структуры таблицы, Просмотр для подготовки данных к печати или Сводную таблицу и Сводную диаграмму для работы с итогами сводной таблицы. В данном примере выберите режим Таблица. (Конечно, когда таблица открыта, можно переключиться в другой режим представления, щелкнув правой кнопкой мыши заголовок или кнопку режима на ленте.)
Режим данных определяет, какой тип изменений разрешен. Можно использовать стандартный вариант Изменение (Edit) для разрешения любых изменений, Только чтение (Read Only) для запрета каких бы то ни было изменений или Добавление (Add) для разрешения только добавления записей. В данном примере выберите Только чтение.
Примечание
Вы уже видели, что у пользовательского макроса гораздо больше функциональных возможностей, чем у мастера построения макрокоманды (Command Builder wizard). Когда применяется мастер, можно открывать формы и отчеты, но не обычные таблицы, и нет средств управления режимом представления или разрешенными видами изменений. Макрос не сталкивается с подобными ограничениями.
4. При желании введите в столбец Примечание дополнительную информацию, которая напомнит назначение макрокоманды.
Не используйте столбец Примечание для объяснения очевидного (как, например, "Открывает таблицу Products"). В этом столбце следует объяснять важность шагов в наиболее сложных операциях. Сейчас вам не нужны комментарии, но позже, когда вы создадите группы макросов и будете применять условия, вы поймете полезность комментариев.
5. Перейдите на следующую строку и повторите шаги 2—4 для вставки другой макрокоманды.
Вы можете вставить в макрос практически неограниченное число макрокоманд. (При наличии маленьких буферов в программе Access макрос может содержать до 999 макрокоманд.) Каждая команда занимает отдельную строку, и программа Access выполняет их по порядку, перемещаясь сверху вниз.
Для завершения данного примера добавьте макрокоманду НаЗапись (GoToRecord). Это действие обеспечивает получение нужной записи в таблице, которую вы только что открыли.
При использовании аргументов следует указывать корректный объект (задайте Таблица в качестве Типа объекта и имя таблицы, которую вы выбрали в пункте 3, в качестве Имени объекта). Затем можно использовать аргументы Запись (Record) и Смещение (Offset) для точного задания той позиции, в которую вы хотите перейти. С помощью
аргумента Запись можно выбрать переход к предыдущей строке (Предыдущая (Previous)), к следующей строке (Следующая (Next)), к заполнителю новой строки в конце таблицы (Новая (New)), к заданной строке (Конкретная (Go To)), к первой строке (Первая (First)) или, как в данном примере, к последней строке (Последняя (Last)). Если выбрать Конкретная, можно использовать аргумент Смещение для указания точной позиции, например, если задать Смещение 5, обеспечивается переход к 5-й записи.
Примечание
Некоторые макрокоманды зависят от действия предшествующих макрокоманд. Отличный пример — команда НаЗапись (GoToRecord). В ней предполагается, что вы открыли таблицу, форму или запрос, содержащие запись, которую хотите отобразить. Если применить команду НаЗапись без предварительного открытия соответствующего объекта, вы получите сообщение об ошибке во время выполнения макроса.
И просто для смеха, почему бы не вставить еще одну макрокоманду? Испытайте команду Сообщение (MsgBox), отображающую выбранное вами сообщение в небольшом информационном окне. Задается сообщение в аргументе Сообщение (Message). Задайте, например, такой текст: "Ваш первый макрос только что сделал свое дело". Можно также добавить необязательный заголовок (с помощью аргумента Заголовок (Title)), предупреждающий звуковой сигнал (задав в аргументе Сигнал (Веер) значение Да) и встроенную пиктограмму (с помощью аргумента Тип (Туре)).
Подсказка
В любой момент можно изменить порядок выполнения макрокоманд. Просто щелкните кнопкой мыши поле слева от элемента, который хотите переместить; этот щелчок выделяет макрокоманду. Затем перетащите команду с помощью мыши в новое место. Программа Access автоматически раздвинет другие макрокоманды.
6. Нажмите комбинацию клавиш <Ctrl>+<S> для сохранения макроса и задайте ему имя.
В этом примере можно назвать макрос ShowTheLastProduct (отображение последнего товара). Если вы не сохраните макрос, программа Access вежливо предложит вам сделать это во время закрытия окна макроса или первого запуска вашего макроса.
Макрос отображается в области переходов. Если ваши объекты сгруппированы по типу объекта, то вы заметите, что у макроса свой тип. Если применяется вариант группировки Таблицы и связанные представления (Tables and Related Views), программа Access вставит макрос в дополнительную группу в конце списка, названную Несвязанные объекты (Unrelated Objects).
Примечание
Когда используется мастер построителя макрокоманды, также создается макрос. Но этот макрос не выводится в области переходов, поскольку он спрятан в конкретной форме. Такой тип макроса называется внедренным, поскольку он встроен внутрь формы.
Запуск макроса
Теперь, когда макрос завершен, можно его испытать. Программа Access предоставляет четыре способа запуска макроса.
■ Можно запустить его явно. Найдите нужный макрос в области переходов и дважды щелкните его кнопкой мыши. Этот вариант действует, если макрос еще не открыт. Если
же макрос открыт, выберите на ленте Работа с макросами | Конструктор → Сервис → Выполнить (Macro Tools | Design → Tools → Run).
Подсказка
Если вы применили в области переходов фильтрацию, такую что макрос не отображается на экране, вы все же можете его запустить. Выберите на ленте Работа с базами данных → Макрос → Выполнить макрос (Database Tools → Macro → Run Macro). У вас появится возможность выбрать ваш макрос из списка.
Можно запустить макрос с помощью клавиш, например, задать запуск макроса, открывающего ежемесячный финансовый отчет при нажатии комбинации клавиш <Ctrl>+<F>. Вы узнаете, как это делается, в разд. "Назначение макросу комбинации клавиш " далее в этой главе.
Можно запускать макрос автоматически при первом открытии БД. Вы можете создать макрос, который позволяет всегда начинать работу с БД запуском вашего любимого запроса и отображением его результатов. В разд. "Настройка макроса запуска" далее в этой главе вы попробуете сделать это.
Рис. 15.4. Результат работы макроса ShowTheLastProduct. Программа Access открывает таблицу Products (в режиме Только чтение, поэтому запрещены любые изменения) и переходит к самой последней, самой свежей записи, а затем выводит на экран сообщение, информируя вас о завершении работы макроса
■ Можно присоединить макрос к форме. Вы можете задать автоматический запуск макроса при щелчке мышью кнопки или при вводе новых данных. Это наиболее распространенный способ выполнения макроса и именно так действует мастер построения макрокоманды. В разд. "Присоединение макросов к формам" далее в этой главе вы сможете опробовать этот метод.
В данной главе вы получите возможность проверить все описанные способы. Но прямо сейчас выберите простейший вариант и запустите созданный в предыдущем разделе макрос с помощью команды Работа с макросами | Конструктор → Сервис → Выполнить, На рис. 15.4 показан результат.
Подсказка
Если вы хотите откорректировать уже созданный макрос, в области переходов щелкните его правой кнопкой мыши и выберите режим Конструктор. Вы попадете снова в окно макроса, которое использовали для его создания.
Отладка макроса
Не все макросы, действуют без сучка, без задоринки. Если вы допустили ошибку — может быть, ваш макрос пытается открыть несуществующий объект или использует бессмысленный аргумент — то получите исчерпывающее сообщение об ошибке, как показано на рис. 15.5.
Рис. 15.5. Это сообщение об ошибке выводится, если применяется макрокоманда ОткрытьТаблицу без заполненного обязательного аргумента Имя таблицы
Несмотря на то, что сообщения об ошибках макросов очень информативны, они не всегда предоставляют всю информацию, необходимую для точного указания проблемы. Например, сообщение об ошибке, приведенное на рис. 15.5, содержит несколько возможных причин -она могла (т. е. ошибка) появиться из-за аварийного завершения одной из команд ОткрытьТаблицу (что и произошло в данном примере), ПреобразоватьТекст или ПреобразоватьЭлектроинуюТаблицу. И даже если вы знаете, что виновата макрокоманда ОткрытьТаблицу, это знание не поможет вам, если в одном макросе эта команда вызывается несколько раз.
Для диагностики проблем можно использовать отладку — программное средство, позволяющее поместить ваш макрос под микроскоп и рассмотреть, что происходит на самом деле, Тип отладки, предоставляемый программой Access для макросов, называется пошаговой отладкой, поскольку позволяет поочередно тестировать команды макроса. Таким образом, вы узнаете, где именно возникает ошибка.
Для применения пошаговой отладки выполните следующие действия. 1. Откройте макрос в Конструкторе.
Все новые макросы начинают с режима Конструктор. Если вы хотите тестировать макрос, созданный ранее, найдите его в области переходов, щелкните правой кнопкой мыши и выберите команду Конструктор.
2. Выберите на ленте Работа с макросами | Конструктор → Сервис → По шагам (Macro Tools | Design → Tools → Single Step).
По шагам (Single Step) — это кнопка-выключатель, т. е. она при выделении подсвечивается. После того как вы щелкнули эту кнопку, она должна быть подсвечена. (Если этого не произошло, значит, пошаговая отладка была уже включена, и вы ее только что выключили. Щелкните мышью кнопку По шагам еще раз, чтобы снова включить этот режим.)
3. Выберите на ленте Работа с макросами | Конструктор → Сервис → Выполнить.
Ваш макрос начнет выполняться. Но появилось отличие. Перед каждым действием программа Access выводит на экран важную информацию в окне Пошаговое исполнение макроса. На рис. 15.6 показано, как оно функционирует.
Рис. 15.6. Это окно сообщает о том, что вы выполняете макрос, названный ProblematicMacro. Следующий шаг — выполнение макрокоманды ОткрытьТаблицу с аргументами, отображенными в области Аргументы. (Не обращайте внимания на поле Условие, поскольку вы пока не научились выполнять макросы с условием)
4. В зависимости от того, что вы хотите делать дальше, щелкните мышью одну из кнопок: Шаг, Продолжить или Остановить все макросы.
Кнопка Шаг выполняет команду. Если действие завершается успешно, программа Access снова приостанавливает макрос и выводит окно Пошаговое исполнение макроса с информацией о следующей команде. Именно поэтому описываемый процесс называется пошаговым и позволяет выполнять в каждый момент времени одно действие. Если вы щелкните мышью кнопку Шаг и команда завершится аварийно, то увидите информацию об ошибке, как показано на рис. 15.7.
Кнопка Продолжить выключает режим пошагового исполнения и выполняет оставшуюся часть макроса без прерываний. Если возникает ошибка, она приводит к завершению исполнения и выводу сообщения об ошибке, как в предыдущем варианте.
□ Кнопка Остановить все макросы завершает исполнение макроса досрочно. Слово "все" в названии кнопки означает, что если одновременно выполняется несколько макросов, Access завершит их все. Вы можете создать макрос, который запускает другой макрос. Если вы прекращаете процесс с описанной последовательностью действий, оба макроса будут завершены досрочно.
Примечание
Режим пошагового исполнения влияет на все макросы, включая те, которые созданы с помощью мастера построителя макрокоманды. Не забудьте отключить его, когда закончите тестирование своего макроса. В противном случае появится окно Пошаговое исполнение макроса, когда вы применяете макрос, работающий совершенно правильно.