- •Часть 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
Практические занятия для опытных пользователей. Как индексы ускоряют поиск
В главе 4 вы познакомились с табличными индексами и научились создавать их. (Индекс — это перечень всех значений в одном поле в отсортированном порядке. Рядом с каждым значением хранится указатель на полную запись в таблице.) У индексов два назначения. Во-первых, они препятствуют возникновению дублирующихся значений (см. разд. "Предотвращение дублирования значений с помощью индексов" главы 4). Во-вторых, они помогают программе Access выполнять поиск с более высокой скоростью. Зачастую Access может искать, пользуясь индексом, быстрее, чем просматривая целую таблицу. Не только потому, что индекс меньше физически (поскольку он содержит значения только одного поля), но и потому, что он отсортирован, и программа может быстрее перейти в нужное место.
Для того чтобы понять разницу, предположим, что вы с помощью программы Access хотите найти запись "Bavarian Tart" в таблице Products. Если у вас есть индекс для поля ProductName, Access может просматривать раздел для буквы "В", дока не найдет нужное значение, и затем перейти к полному набору деталей. Если же индекса нет, программе придется просмотреть всю таблицу, запись за записью. Таблица не отсортирована, поэтому нельзя сказать, сколько пройдет времени до того, как Access случайно натолкнется на нужную запись.
На первый взгляд индексы кажутся невероятно полезными, и вы готовы попытаться создать их для всех полей вашей таблицы. Но у индексов есть и недостатки. Чем больше индексов создано, тем больше работы приходится выполнять программе Access при добавлении и обновлении записей. Кроме того, каждый индекс занимает какое-то место. В действительности индексы расходуют ресурсы, как бы они не повышали производительность поиска.
Далее перечислены ситуации, в которых следует рассматривать возможность применения индекса для ускорения поиска.
У вас БД большого объема. Если у вас несколько сотен записей, Access почти всегда благодаря принципам работы жесткого диска может просмотреть быстрее всю таблицу, чем применять индекс. Даже если у вас тысячи записей, программа Access часто может загрузить весь набор в оперативную память вашего компьютера, поэтому ей не придется ждать отклика жесткого диска, и все ваши запросы становятся молниеносными.
Ваш поиск выполняется медленно. Нет смысла улучшать запрос, если он и так работает с максимальной скоростью. Большинство приверженцев программы Access могут искать в гигантских БД день за днем, не тратя времени на ожидание.
Поле, которое вы хотите индексировать, используется в поиске. Не индексируйте поле, если вы не применяете его в условии отбора. Если вы часто ищете отдельного конкретного клиента, применяя подстановку его фамилии, добавьте индекс в поле LastName (фамилия).
Поле, которое вы хотите индексировать, содержит уникальные (или почти уникальные) значения. Есть смысл добавить индекс к полю ProductName в таблице Products, поскольку лишь у нескольких продуктов (если такие есть вообще) одинаковое название. С другой стороны, не стоит индексировать поле City в таблице Customers, поскольку множество клиентов живет в одном и том же городе, в результате индекс в поле City будет неэффективен и, возможно, программа Access вообще им не воспользуется.
Создание простого запроса с помощью Мастера запросов
Как правило, начинать создание запроса лучше всего в Конструкторе, но это не единственная возможность. Можно применить Мастер запроса как отправную точку, а затем переопределить ваш запрос в Конструкторе.
В процессе выполнения Мастер запроса задает серию вопросов и затем формирует запрос, отвечающий вашим требованиям. В отличие от множества других мастеров Access и других приложений пакета Office, Мастер запроса довольно слабый. Он хорош как отправная точка для новичков, но не для оперативного исполнителя.
Далее описаны действия, необходимые для запуска и выполнения Мастера запроса.
Выберите Создание → Другие → Мастер запроса (Create → Other → Query Wizard). Программа Access позволяет выбрать из нескольких разных мастеров (рис. 6.10).
Выберите тип запроса. Сейчас лучше всего выбрать мастер Простой запрос (Simple Query).
В Мастер запроса включено несколько распространенных типов запросов. За исключением перекрестного запроса у всех остальных нет ничего необычного.
Вы научитесь создавать все эти типы запросов с помощью Конструктора.
Мастер Создание простых запросов (Simple Query Wizard) позволяет вам создать обычный запрос, отображающий подмножество данных таблицы. Этот тип запроса вы создали в предыдущем разделе.
Мастер Создание перекрестных запросов (Crosstab Query Wizard) создает перекрестный запрос, который позволяет анализировать большие объемы данных с помощью разных вычислений. Один такой запрос рассматривается в разд. "О перекрестных запросах" главы 9.
Мастер запросовПоиск повторяющихся записей (Find Duplicates Query Wizard) похож на мастер Создание простых запросов, за исключением того, что он включает условие отбора, отображающее только те записи, в которых используются совпадающие значения. Если вы забыли создать первичный ключ или создать уникальный индекс в вашей таблице (см. разд. "Предотвращение дублирования значений с помощью индексов "главы 4), такой запрос поможет удалить возникший беспорядок.
Мастер запросов Поиск записей, не имеющих подчиненных (Find Unmatched Query Wizard) похож на мастер Создание простых запросов, за исключением того, что он содержит условие отбора, извлекающее несвязанные записи из подчиненных таблиц. Его можно применить для поиска заказа, который не связан ни с одним конкретным клиентом. Вы узнаете, как он работает в разд. "Поиск несвязанных записей" далее в этой главе.
Рис. 6.10. На первом этапе выполнения Мастера запроса вы выбираете из небольшого набора основных типов запросов
3. Щелкните мышью кнопку ОК.
На экране появляется первое окно мастера запросов.
4. В. раскрывающемся списке Таблицы и запросы (Tables/Queries) выберите таблицу, содержащую нужные вам данные. Затем добавьте поля, которые вы хотите видеть в окне результатов запроса, как показано на рис. 6.11.
Лучше добавлять поля поочередно. Вставляйте их слева направо в том порядке, в каком они должны появиться на экране результатов.
Можно добавлять поля из нескольких таблиц. Для этого сначала выберите одну таблицу и добавьте поля, которые нужны, затем выберите вторую таблицу и повторите процесс. Такой выбор имеет смысл, только если таблицы связаны. Вы узнаете больше об этом вразд. "Запросы и связанные таблицы" далее в этой главе.
Рис. 6.11. Для добавления поля выберите его в списке Доступные поля и щелкните мышью кнопку со стрелкой > (или дважды щелкните его мышью). Можно добавить все поля сразу, если щелкнуть мышью кнопку с двойной стрелкой » и удалить поля, выбрав их в списке Выбранные поля и щелкнув мышью кнопку <. В данном примере в запрос включены три поля
5. Щелкните мышью кнопку Далее (Next).
Если в вашем запросе есть числовое поле, Мастер запроса предложит создать итоговый запрос, объединяющий строки в группы и вычисляющий итоги или средние значения. Вы узнаете больше об итоговых запросах в главе 7. Сейчас, если у вас есть такой выбор, отметьте переключатель подробный (вывод каждого поля каждой записи) (Detail), a затем нажмите кнопку Далее (Next).
На экране появляется завершающее окно Мастера запроса (рис. 6.12).
Введите имя запроса в поле Задайте имя запроса (What title do you want for your query?).
Если вы хотите подкорректировать запрос, выберите переключатель Изменить макет запроса (Modify the query design). Если же вы довольны тем, что получилось, для выполнения запроса выберите переключатель Открыть запрос для просмотра данных (Open the query to view information).
Одна из причин, по которой вам может понадобиться переход в режим Конструктора - вставка условий отбора или фильтрации (см. разд. "Фильтрация" главы 3) для извлечения
определенных строк. К сожалению, вы не можете задать условия отбора в Мастере запроса.
8. Щелкните мышью кнопку Готово (Finish).
Ваш запрос откроется вКонструкторе или Режиме таблицы в зависимости от выбора, сделанного вами в пункте 7. Выполнить запрос можно с помощью последовательности Работа с запросами | Конструктор → Результаты → Выполнить (Query Tools | Design → Results → Run).
Рис. 6.12. На последнем этапе вы выбираете имя для вашего запроса и немедленный вывод результатов или дальнейшее усовершенствование запроса в Конструкторе