- •Часть 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
Малоизвестная или недооцененная возможность. Справка по Visual Basic
Язык Visual Basic набит таинственными командами вроде MsgBox. Вы познакомитесь со многими из них в этой главе и следующей, но для углубленного изучения всех команд нужно запустить справку Access. Далее описано, как это сделать.
В меню редактора Visual Basic выберите последовательность команд Help → Справка: Microsoft Visual Basic (Справка → Справка языка Microsoft Visual Basic)1.
Вы увидите список ссылок, обещающих рассказать вам больше о языке VB.
Щелкните кнопкой мыши Visual Basic for Applications Language Reference
(Руководство по языку Visual Basic для приложений).
На экране появятся дополнительные темы, касающиеся многочисленных подробностей VB.
Щелкните кнопкой мыши Visual Basic Language Reference (Руководство по языку Visual Basic), чтобы проникнуть глубже.
1 Справка приводится на английском языке. — Пер.
Теперь вы увидите темы, касающиеся непосредственно языка VB. Эти основы относятся к версии Visual Basic в любой программе пакета Office.
Щелкните мышью строку Functions (Функции), чтобы увидеть команды Visual Basic, включая MsgBox. (Щелкните кнопкой мыши любую функцию для отображения страницы с подробной справкой об этой функции.)
Справка программы Access — замечательный способ узнать больше о Visual Basic, но после того, как вы познакомились с основными элементами языка. Если вы углубитесь в ее изучение слишком быстро, то можете обнаружить, что объяснения так же прозрачны, как суп из протертого гороха. Но когда вы закончите работу с примерами кода, приведенными в данной книге, вы будете достаточно подготовлены к ее использованию и пополнению ваших знаний.
Помещение кода в форму
Непосредственное выполнение процедуры слегка неудобно. Явно запустить макрос, по крайней мере, можно из области переходов или с помощью удобной кнопки на ленте (см. разд. "Запуск макроса" главы 15). Ни один из этих вариантов не предусмотрен для кода VB. Вместо этого необходимо открыть редактор Visual Basic, выбрать подходящий модуль, перейти к нужной процедуре и затем щелкнуть кнопкой мыши команду Run (Выполнить). В реальной жизни никто так не поступает, поскольку это слишком трудоемко.
К счастью, есть лучший способ. Можно поместить код в форму и затем выполнять его автоматически, когда происходит что-то важное. В следующих разделах объясняется, как это делается.
Реакция на событие формы
Вместо запуска программных процедур прямо из редактора, поклонники Access связывают их с событиями формы так же, как вы делали это с макросами. Далее описано, как воспользоваться этой возможностью.
1. Откройте форму в Конструкторе.
Самый быстрый способ — щелкнуть форму в области переходов правой кнопкой мыши и выбрать Конструктор (Design View).
2. Добавьте новую кнопку.
Для этого выберите на ленте Инструменты конструктора форм | Конструктор → Элементы управления → Кнопка (Forms Tools | Design → Controls → Button) и затем нарисуйте кнопку в рабочей области формы.
3. Когда запустится Мастер кнопок, нажмите клавишу <Esc>, чтобы отказаться от его выполнения.
Вам не нужно создавать макрос для кнопки. Эта кнопка будет снабжена чистым кодом VB.
4. Если Окна свойств нет на экране, выберите Инструменты конструктора форм | Конструктор → Сервис → Страница свойств (Forms Tools | Design → Tools → Property Sheet).
5. В Окне свойств выберите вкладку Другие (Other), а на ней свойство Имя (Name) для того, чтобы задать кнопке подходящее имя.
Программа Access использует имя кнопки для именования процедуры для вашей кнопки. Гораздо легче запомнить, что делает кнопка CommitOrder_Click (щелчок для подтверждения заказа), чем кнопка Command42_Click (щелчок для выполнения коман-ды42). Сейчас также подходящее время задать текст, отображаемый на кнопке (свойство Подпись (Caption)), если это еще не сделано.
6. В Окне свойств выберите вкладку События (Event) и выделите событие Нажатие кнопки (On Click).
Когда вы щелкните кнопкой мыши внутри поля Событие (Event), в нем появится направленная вниз стрелка.
7. Щелкните кнопкой мыши направленную вниз стрелку, расположенную рядом с событием Нажатие кнопки, а затем выберите строку [Процедура обработки событий] ([EventProcedure]).
Этот шаг сообщает программе Access о том, что вы вместо макроса предоставите код VB для обработки события.
8. В поле события Нажатие кнопки щелкните мышью кнопку с многоточием (...)
Этот шаг открывает редактор Visual Basic и создает программную процедуру для вашей кнопки. Если процедура уже создана, программа Access переходит к имеющемуся коду, и, таким образом, его можно редактировать.
Когда код вставляется в форму впервые, программа Access создает для этой формы новый модуль. Этот модуль именуется с использованием имени формы и помещается в окне Project в специальную группу, называемую Microsoft Office Access Class Objects (объекты классов Microsoft Office Access) (рис. 16.4). Если в ту же форму вставляется дополнительный код независимо от того, относится он к тому же элементу управления или к другому, Access включает новую процедуру в существующий для этой формы модуль.
Подсказка
Модули форм не выводятся в области переходов. Если они нуждаются в редактировании, следует открыть редактор Visual Basic и затем в окне Project дважды щелкнуть кнопкой мыши нужный модуль. Или же можно открыть соответствующую форму, выбрать нужное событие и использовать кнопку с многоточием для перехода прямо в интересующую вас программную процедуру.
Когда выполняются описанные действия, программа Access не создает новый модуль, а вставляет новую пустую процедуру для вашего события. Если ваша кнопка названа ButtonOfPower (кнопка запуска), вы увидите код, похожий на приведенный далее:
Private Sub ButtonOfPower_Click() End Sub
Эта процедура похожа на процедуру, созданную раньше, но с двумя отличиями.
■ Она начинается со слова Private. Это слово гарантирует невозможность использования данной процедуры другими модулями. Данная процедура доступна только в форме, содержащей кнопку. (Если не указать слово Private, будет применяться стандартный режим доступа, называемый Public, и ваша программная процедура станет общедоступной.)
В большинстве случаев выбор режима доступа не важен, но Private считается более предпочтительным.
Ее имя соответствует формату[ИмяЭлементаУправления]_[ИмяСобытия]. Например, приведенная ранее процедура относится к событию Нажатие кнопки (On Click) кнопки с именем ButtonOfPower.
Рис. 16.4. Модуль для формы всегда именуется Form_[FormName]. Вы видите модуль для формы, названной OneButtonForm (однокнопочная форма)
Примечание
Постойте, разве событие не называется On Click? Сохраняя все принятые соглашения в силе, язык Visual Basic, в отличие от разработчика форм в программе Access, применяет немного иное правило именования событий. Он отбрасывает предлог "On" и все имеющиеся пробелы, таким образом, событие On Click (нажатие кнопки) становится событием Click. Лучше всего не волноваться по поводу расхождения имен и предоставить возможность программе Access сформировать правильные имена для ваших процедур.
Для того чтобы проверить вашу процедуру, нужно добавить в нее код. Пока вы познакомились лишь с одной командой, поэтому попробуйте применить ее для вывода сообщения:
Private Sub ButtonOfPower_Click( )
MsgBox "Вы щелкнули мышью кнопку ButtonOfPower." End Sub
Теперь вернитесь к форме и щелкните вашу кнопку мышью. Вы должны увидеть сообщение, показанное на рис. 16.5, оно означает, что ваш код уловил событие и успешно на него отреагировал.
Подсказка
Во время редактирования модуля нет необходимости сохранять его. Можно спокойно переходить между окном кода и формой, отображенной в окне программы Access, туда и обратно для проверки каждого вносимого в код изменения.
Рис. 16.5.События обеспечивают автоматическое выполнение программного кода. В данном случае, если щелкнуть мышью кнопку ButtonOfPower, Access тут же отобразит сообщение
Если позже вы уберете с формы кнопку ButtonOfPower, программа Access не удалит программный код. Он останется на прежнем месте, но будет неактивен. Это удобно, если в программном коде есть что-то полезное, что впоследствии, возможно, вы захотите применить где-нибудь еще. (В данном случае вас выручат операции вырезания и вставки.) Но если это просто фрагмент старого кода, при первой же возможности воспользуйтесь редактором Visual Basic для удаления процедуры.