- •Часть 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
Глава 16
Автоматизация выполнения задач средствами языка Visual Basic
Макросы — это конечно замечательная вещь, но они могут только то, что могут. Если нет заранее подготовленной макрокоманды, которая делает то, что вам нужно, применить макрос не удастся. Таких ограничений лишен мир программ на языке Visual Basic (VB), в котором можно выполнять практически все, что угодно (если провести достаточное количество ночных часов за клавиатурой компьютера).
Далее приведены примеры задач, которые можно выполнять с помощью программ, но не с помощью макросов:
изменить группу записей одновременно;
выполнить интеллектуальную обработку ошибок так, чтобы программа Access не выводила на экран малопонятные сообщения;
выполнить сложные вычисления, например, можно вычислить код подтверждения заказа с помощью секретного алгоритма или преобразовать строку текста в Pig Latin ("поросячью латынь");
написать более сложные процедуры верификации, блокирующие некорректные данные.
В этой (и следующей) главе не ставится задача сделать из вас профессиональных программистов. Если вы мечтаете об этом, придется продолжить обучение и прочесть специальные книги о программировании в Access. Данная глава стремится научить вас основам программирования в Access. Другими словами, вы узнаете достаточно особенностей программирования на VB, чтобы использовать популярные практические приемы программирования, обсуждаемые в следующей главе. Вы также заложите мощный фундамент для дальнейшего изучения.
Примечание
Версия языка Visual Basic, применяемая в программе Access и других приложениях пакета Office, называется VBA (Visual Basic for Applications, Visual Basic для приложений).
Редактор Visual Basic
Несмотря на то, что программный код на Visual Basic хранится в вашей БД, вы должны применять специальное средство для его -просмотра и редактирования. Оно называется редактором Visual Basic.
Редактор Visual Basic работает во взаимодействии с программой Access, но открывается в отдельном окне. Для перехода в редактор Visual Basic выберите на ленте Работа с базами данных → Макрос → Visual Basic (Database Tools → Macros → Visual Basic). Программа Access запустит отображенное на рис. 16.1 самостоятельное окно, снабженное старомодными меню и панелью инструментов.
Примечание
Закрыть редактор Visual Basic можно в любой момент. Если этого не сделать, программа Access сама закроет его во время завершения работы программы.
Рис. 16.1. В первый момент работы в редакторе Visual Basic все его разделы пусты. В окне Project нет программных модулей и не отображается никакой программный код (пока)
Редактор Visual Basic разделен на три основные области. Вверху слева окно Project (проект) отображает все модули вашей БД. (Каждый модуль — это контейнер для одной или нескольких программных процедур.) Сначала окно Project (проект) почти пусто, поскольку еще не создано никакого кода. На рис. 16.1 в окне Project (проект) всего один элемент (названный BoutiqueFudge в соответствии с именем текущей БД). Но в этом проекте нет программных модулей.
Примечание
Если в программе Access недавно решались определенные задачи, в окне Project (проект) может выводиться проект со странным именем acwzrtool. Это надстройка программы Access, которая предназначается для мастеров, применяемых в программе. Не пытайтесь просмотреть код в этом проекте, Access не разрешит вам сделать это.
Сразу под окном Project находится окно Properties (свойства), отображающее параметры выделенного в данный момент в окне Project элемента, которые можно изменять. В нижней части окна находится окно Immediate (отладка) — средство быстрого тестирования, позволяющее выполнить код до помещения его в вашу БД. Все остальное свободное пространство используется для отображения файлов с программным кодом, после того, как вы создали их. Эта область первоначально пуста.
В следующих разделах вы узнаете самый простой способ создания фрагмента программного кода.
Сначала вы создадите новый модуль, являющийся контейнером, в который помещается код.
Затем в этом модуле вы напишите процедуру с простейшим кодом.
Наконец, вы выполните ваш код, чтобы посмотреть на него в действии.
Когда с этим будет покончено, вы узнаете, как код можно включить в формы и отчеты, которые уже есть в вашей БД. (Именно здесь начнется самое интересное.)
Добавление нового модуля
Обычно вы будете создавать программные процедуры, которые присоединяются к формам и запускаются, когда возникают определенные события (см. разд. "Присоединение макросов к формам" главы 15). Но в этой главе не будем спешить и создадим самостоятельную процедуру, которая запускается по вашему требованию.
Прежде всего, нужно добавить новый модуль для вашего кода. В меню редактора Visual Basic выберите команды Insert → Module (Вставка → Модуль). На рис. 16.2 показан результат.
Когда добавляется новый модуль, редактор Visual Basic автоматически открывает окно с кодом, отображающее содержимое данного модуля. (Если в вашей БД несколько модулей, можно открыть нужный вам модуль двойным щелчком мышью его имени в окне Project.) Первоначально у новоиспеченного модуля одна строка кода, которая выглядит следующим образом: Option Compare Database
Это инструкция, определяющая, как с помощью языка Visual Basic обработать операции сравнения текстовых фрагментов. Исходно у языка Visual Basic есть собственные правила обработки текста, но приведенный оператор требует вместо них использовать установочные параметры программы Access.
Параметры Access зависят от локализации текущей БД (например, использует ли ваша версия ОС Windows язык Английский (США) (U.S. English) или Японский иероглифический шрифт (Japanese kanji script)). Окончательный результат приведенной строки кода — возможность для англоязычных пользователей применять сравнения без различения строчных и прописных букв. Это означает, что слово "помадка" считается равной слову "пОмАдкА", что аналогично способу обработки текста программой Access при написании вами запросов.
Прежде чем вы начнете писать код, который действительно выполняет какие-то действия, следует в начало вашего кода добавить еще одну инструкцию. Сразу после (или до) строки Option Compare Database вставьте следующую строку:
Option Explicit
Эта инструкция заставляет Visual Basic применять более строгую проверку ошибок, способную выявлять часто встречающиеся ошибки при использовании переменных (см. разд. "Хранение информации в переменных" главы 17).
Рис. 16.2.Когда ваш проект включает хотя бы один модуль, окно Project отображает группу Modules. Программа Access присваивает новым модулям невыразительные имена, например, Module1, Module2 и т. д. Для задания чего-то более осмысленного, выделите модуль в окне Project и в окне Properties, расположенном сразу под ним, измените свойство Name. DataCleanupCode (код очистки данных) — подходящее имя для модуля
Подсказка
Вы можете потребовать от Visual Basic автоматически добавлять строку Option Explicit во все новые файлы с кодом. Для этого выберите Tools → Options (Сервис → Параметры), установите флажок Require Variable Declarations (требовать объявления переменных) и затем щелкните мышью кнопку ОК. Специалисты Access всегда применяют эту установку.
Как и в случае других объектов БД Access, при закрытии редактора Visual Basic программа Access напоминает о необходимости сохранить вновь созданные модули. Если вы не хотите ждать так долго, выберите последовательность команд File → Save [DatabaseName] (Файл → Сохранить [ИмяБазыДанных], где [DatabaseName] — имя файла вашей БД).
Примечание
После того как модуль сохранен, его можно увидеть в области переходов окна программы Access. Если используется режим отображения Таблицы и связанные представления, ваш
модуль выводится в категории Несвязанные объекты, если применяется режим вывода Тип объекта, модуль появляется в категории Модули. Если модуль в области переходов щелкнуть дважды кнопкой мыши, программа Access откроет его в редакторе Visual Basic.
Написание процедуры с простейшим программным кодом
Внутри всех модулей (за исключением пустых) находится одна или несколько процедур на языке Visual Basic. Процедура — это именованный блок кода, выполняющий определенную задачу. В языке VB процедуры начинаются словом Sub, за которым следует имя процедуры. Завершаются процедуры оператором End Sub. Далее приведен пример процедуры, которая названа довольно неоригинально MyCodeRoutine:
Sub MyCodeRoutine ()
' Здесь располагается ваш код End Sub
Этот маленький фрагмент кода на VB иллюстрирует два важных правила. Во-первых, он показывает, как начинать и заканчивать любую процедуру (с помощью операторов Sub и End Sub). В этом коде также показано, как создавать комментарии. Комментарии — это специальные операторы, которые программа Access полностью игнорирует. Они не что иное, как заметки для вас самих (например, объяснение на обычном английском (или русском), что на самом деле делает следующая или предыдущая строка кода). Для создания комментария в начало строки вставляется знак апострофа ( ' ).
Подсказка
Редактор Visual Basic отображает все комментарии зеленым цветом, поэтому легко отличить код от комментариев.
Сейчас процедура MyCodeRoutine ничего не выполняет. Для того чтобы сделать ее посообразительнее, следует добавить операторы кода между Sub и End Sub. Следующая чрезвычайно простая процедура отображает поле сообщения:
Sub MyCodeRoutine ( )
' Следующий оператор отображает поле сообщения
MsgBox "Свидетельство силы моего кода." End Sub
Этот код действует, потому что язык Visual Basic включает команду, названную MsgBox. (См. примечание "Малоизвестная или недооцененная возможность. Справка по Visual Basic" далее в этом разделе для получения рекомендаций по применению команд, которые есть в вашем распоряжении.) Эта команда применяется для вывода на экран стандартного окна с выбранным вами сообщением. Само сообщение — это текстовый фрагмент (или строка на языке программистов), который как все текстовые значения в языке VB должен быть заключен в кавычки. Таким образом, программа Access знает, где он начинается и где заканчивается. (Access заставляет вас применять те же правила, что и при использовании текста в выражении.)
Как только вы ввели эту команду (начинайте — действуйте!), вы готовы к выполнению вашей программной процедуры. Для этого поместите курсор где-нибудь внутри тела процедуры, это дает знать редактору Visual Basic, какой код вас интересует. Затем на панели
инструментов Visual Basic щелкните мышью кнопку Run (Выполнить) (которая выглядит как кнопка воспроизведения на панели управления видеомагнитофона), или в меню выберите Run → Run Sub/UserForm (Выполнить → Выполнить процедуру/пользовательскую форму). На рис. 16.3 показан результат.
Рис. 16.3. Вашу первую программную процедуру нельзя назвать ужасно полезной, но она доказывает, что вы знаете достаточно для того, чтобы написать строку кода и выполнить ее
Программа Access выполняет код процедуры построчно, от начала до конца. Когда вы выводите MsgBox, выполнение кода приостанавливается до тех пор, пока вы не щелкните мышью кнопку ОК в окне сообщения, в этот момент выполнение кода продолжится до завершения процедуры.
Примечание
Помните о том, что программа Access считает код VB потенциально опасным, поэтому не выполняет его в ненадежной БД. Иначе говоря, если вы увидите предупреждение системы безопасности (см. разд. "Как Access обрабатывает опасные макросы" главы 15), следует щелкнуть мышью кнопку Параметры для отображения диалогового окна Параметры безопасности Microsoft Office, выбрать переключатель Включить это содержимое и затем щелкнуть мышью кнопку ОК. Или можете создать надежное расположение для файлов вашей БД. В разд. "Задание надежного расположения" главы 15 приводится подробное описание.