- •Часть 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
На профессиональном уровне. Числа и специальные символы в текстовых полях
Результат сортировки текста иногда противоречит интуитивным предположениям, особенно если в вашем текстовом поле содержатся числовые данные.
Обычно, когда сортируются два числа (например, 153 и 49), они упорядочиваются от меньшего к большему (49, 153). Но текстовая сортировка действует иначе. Когда программа Access сортирует текст, она проверяет его символ за символом, что означает сортировку чисел по первой цифре. Если первые цифры одинаковы, проверяется вторая цифра и т. д. В результате если числа 49 и 153 сортируются в алфавитном порядке, то вы получите 153, 49, поскольку 4 (первая цифра числа 49) больше 1 (первой цифры числа 153).
Жизнь становится еще интереснее, если в эту мешанину добавить знаки пунктуации и другие специальные символы. Далее приведен порядок, в котором программа Access сортирует любые символы (при стандартной сортировке по возрастанию от А до Я или от А до Z):
Пустые значения.
Пробелы.
Специальные символы (например, знаки пунктуации).
Буквы.
Числа.
Сортировка по нескольким полям
Если при сортировке обнаруживаются два одинаковых значения, нет способа определить порядок их следования (по отношению друг к другу). Если вы сортируете список клиентов, в котором есть два Вана Хаузера (Van Hauser), вы можете быть уверены, что сортировка по фамилии выведет их друг за другом, но неизвестно, кто будет первым, а кто вторым.
Если вы хотите узнать больше о том, как Access интерпретирует дубликаты, нужно выбрать сортировку, основанную на нескольких столбцах. Отличным примером может служить телефонная книга, в которой люди отсортированы по фамилиям, а затем по именам. Таким образом, люди с одинаковой фамилией группируются вместе и упорядочиваются в соответствии с их именами, например, следующим образом:
…
Smith, Star
Smith, Susan
Smith, Sy
Smith, Tanis
…
В таблице результаты сортировок накапливаются, что означает возможность одновременной сортировки, базирующейся на нескольких полях. Единственная сложность — правильно задать порядок сортировки. Далее перечислены необходимые действия.
1, Выберите на ленте Главная → Сортировка и фильтр → Очистить все сортировки (Ноmе → Sort & Filter →Clear All Sorts).
Программа Access вернет таблицу к исходному не отсортированному состоянию.
2. Воспользуйтесь раскрывающимся контекстным меню столбца для применения к дубликатам дополнительной сортировки.
Если нужно отсортировать телефонную книгу (абоненты упорядочены по фамилиям, а затем по именам), надо включить сортировку по полю FirstName (имя). В табл. 3.1 поясняется сортировка, которую вы видите в зависимости от типа данных.
3, Используйте контекстное раскрывающееся меню для применения сортировки первого уровня.
В случае телефонной книги — это поле LastName (фамилия).
Вы можете повторить эти шаги для выполнения сортировок по нескольким полям. Представьте, что у вас чудовищно большой набор имен, включающий людей с одинаковыми фамилиями и именами. В этом случае вы могли бы добавить третью сортировку по первой букве второго имени (или отчеству). Для применения этой сортировки следует включить сортировку в следующем порядке: Middlelnitial (первая буква второго имени), FirstName (имя), LastName (фамилия). Вы получите следующий результат:
…
Smith, Star
Smith, Susan К
Smith, Susan P
Smith, Sy
…
Фильтрация
В таблице с сотнями или тысячами записей прокрутка таблицы вперед и назад на листе данных так же успокаивает, как звук пневматической дрели в 3 часа утра. Иногда вам даже не нужно видеть все записи сразу — они лишь вызывают усталость пальцев и отвлекают от тех данных, которые вас действительно интересуют. В этом случае вам следует урезать лист данных с помощью фильтрации, оставив только интересующие вас записи.
Для фильтрации записей вы задаете условие, которому должна удовлетворять запись для того, чтобы быть включенной в лист данных. Например, интернет-магазин может выбирать пищевые продукты из полного каталога товаров, компания по доставке может искать заказы, сделанные на прошлой неделе, а служба свиданий (dating service) может выискивать холостяков, живущих отдельно от своих родителей. Когда применяется условие фильтра, в конце концов, скрываются все записи, не удовлетворяющие вашим требованиям. Они по-прежнему остаются в таблице, но ловко скрыты от глаз.
Программа Access может применять фильтры несколькими методами. В следующих разделах вы начнете знакомство с простейшего способа и будете постепенно осваивать более сложные варианты.
Обычный фильтр
Обычный фильтр (quick filter) позволяет выбрать те значения, которые вы хотите включить, и те — которые нужно скрыть, основываясь на текущих данных вашей таблицы. Для применения обычного фильтра выберите столбец, который вы хотите использовать, и затем щелкните мышью направленную вниз стрелку у правого края заголовка столбца. Вы увидите список всех конкретных значений в данном столбце. Первоначально флажок, расположенный у каждого значения, установлен. Сбросьте флажок у тех записей, которые вы хотите скрыть. На рис. 3.9 показан пример, в котором сортировка и фильтр применяются одновременно.
Примечание
Для удаления фильтров из столбца (и отображения всех записей на листе данных) щелкните мышью раскрывающуюся кнопку у правого края заголовка столбца и выберите команду Снять фильтр (Clear Filter).
Не все типы данных поддерживают фильтрацию. К типам данных, ее поддерживающим, относятся Числовой, Денежный, Счетчик, Текстовый, Гиперссылка, Дата/время и Логический. Поля MEMO не поддерживают обычные фильтры (поскольку, как правило, их значения слишком велики и не помещаются в раскрывающемся списке), но другие типы фильтров они поддерживают.
Обычные фильтры можно применять в нескольких столбцах. Порядок применения фильтров не важен, поскольку все фильтры кумулятивные, т. е. вы увидите только те записи, которые удовлетворяют условиям всех установленных фильтров. Обычные фильтры можно использовать и в комбинации с другими вариантами фильтрации, описанными в следующих разделах. Для удаления фильтров выберите на ленте Главная → Сортировка и фильтр → Удалить фильтр (Ноmе → Sort & Filter → Remove Filter).
Совет
Обычные фильтры работают лучше всего, если у вас относительно немного различных значений. Отбор людей в зависимости от штата их проживания — прекрасный выбор, как и в зависимости от политической партии, которую они поддерживают, или их любимого цвета. Фильтр
будет работать не так эффективно, если вы решите отфильтровать список, основываясь надате рождения, росте или весе, поскольку существует гигантский диапазон возможных значений этих характеристик. (Это не значит, что вы должны совсем отказаться от фильтрации — просто нужно использовать другой тип фильтра.)
Рис. 3.9. Этот список подходящих холостяков сначала сортируется по росту (в порядке убывания) и затем отфильтрован с сохранением только перспективных кандидатов, проживающих в штате Нью-Йорк. Установленный флажок свидетельствует о том, что записи с данным значением будут включены в лист данных. Остальные записи скрыты от глаз
Фильтр по выделенному
Фильтр по выделенному (filter by selection) позволяет применять фильтр, базирующийся на любом значении в вашей таблице. Этот тип фильтра очень удобен, если вы нашли точный тип записи, который хотите включить в выборку или исключить из нее. Применяя фильтр по выделенному, вы можете превратить текущее значение в фильтр без прочесывания списка фильтра.
Вот как это делается. Сначала найдите значение, которое хотите использовать для фильтрации листа данных. Щелкните его правой кнопкой мыши и выберите один из вариантов фильтрации в нижней части меню (рис. 3.10).
Все типы данных, поддерживающие фильтрацию, позволяют отбирать точные совпадения. Но многие из них предоставляют дополнительные варианты фильтрации, отображаемые в контекстном меню, которое вызывается щелчком правой кнопки мыши.
Рис. 3.10. Варианты фильтрации для разных типов данных слегка отличаются. В случае текстового поля (как поле City, показанного на рисунке) у вас есть возможность включить в выборку только те записи, которые соответствуют текущему значению (Равно "Chicago"), или те, которые не совпадают с ним (Не равно "Chicago"). У вас также появляются дополнительные возможности, расширяющие отбор с помощью обычного фильтра, — а именно вы можете включить или исключить поля, просто содержащие текст "Chicago". Условию такого фильтра удовлетворяют такие значения, как "Chicago land" и "Little Chicago"
Далее перечислены варианты фильтрации для разных типов данных, которые вы можете увидеть.
Текстовые типы данных. Вы можете отбирать значения с точным совпадением или значения, содержащие фрагмент текста.
■ Числовые типы данных. Вы можете отфильтровать точно совпадающие значения или числа, которые меньше или больше текущего значения.
Типы данных Дата/время. Вы можете отфильтровать точно совпадающие значения или даты, более ранние или более поздние по сравнению с текущей датой.
Рис. 3.11.Рядом с элементами управления в нижней части листа данных есть индикатор С фильтром/Без фильтра, оповещающий о применении фильтра. Его можно также использовать для быстрого включения или отключения вашего фильтра — одинарный щелчок мышью по индикатору удаляет все фильтры, а повторный щелчок применяет еще раз самый последний набор фильтров
Наконец, для получения дополнительных навыков можно создать условие фильтрации,использующее только часть значения. Если у вас есть значение "Great at darts" (великолепно играет в дартс) в поле Description (описание) вашей таблицы, можно выделить текст "darts" и затем щелкнуть правой кнопкой мыши только этот текст. Теперь вы можете найти другие записи с нолями, содержащими слово "darts". Благодаря этой возможности фильтр по выделенному получил свое название.
Программа Access моментально включает или отключает фильтрацию, как показано на рис. 3.11.
Расширенный фильтр
Пока применяемые вами фильтры брали текущие значения в вашей таблице как отправную точку. Если вы чувствуете себя уверенно при работе с фильтрами, то можете попробовать расширенный вариант: фильтрацию по условию. Применяя расширенный фильтр, можно точно определить нужную вам фильтрацию.
Рис. 3.12.Вверху: для числового поля, такого как PurchasePrice (покупная цена), фильтрация по условию позволяет найти значения, превышающие определенный минимум. Внизу: после выбора нужного вам типа фильтра следует задать информацию для фильтрации. Если вы выбрали условие Больше, нужно задать минимальное число. Записи со значениями, равными или большими минимума, отображаются на листе данных
Допустим, что вы хотите найти в погребе все редкие марочные вина с ценой, не превышающей 85 долларов. В случае фильтра по выделенному вам придется начать с поиска вина
с ценой 85 долларов, который можно использовать для создания условия. Но что произойдет, если в вашем перечне нет вина с ценой точно 85 долларов или вам кажется, что его невозможно найти? Быстрее задать условие фильтрации вручную.
Вот как это делается. Сначала щелкните направленную вниз стрелку у правого края заголовка столбца. Но вместо выбора одного из вариантов обычного фильтра найдите подменю с вариантами фильтрации. Это меню называется в соответствии с выбранными данными, так для текстовых полей включен вариант Текстовые фильтры (Text Filters), для числовых полей — Числовые фильтры (Number Filters) и т. д. На рис. 3.12 показан пример.
Далее приведен краткий обзор, описывающий дополнительные варианты, которые можно использовать в расширенном фильтре в зависимости от выбранного типа данных.
Текстовые типы данных. Те же варианты, что и у фильтра по выделенному, вдобавок вы можете найти значения, начинающиеся с конкретного текста или заканчивающиеся определенным текстом.
Числовые типы данных. Те же варианты, что и у фильтра по выделенному, а также вы можете выбрать значения, лежащие в диапазоне, т. е. все значения, большие заданного минимума, но меньшие заданного максимума.
Типы данных Дата/время. Те же варианты, что и у фильтра по выделенному, вдобавок вы можете найти даты, попадающие в диапазон, и выбрать из огромного перечня встроенных вариантов, таких как Вчера (Yesterday) На прошлой неделе (Last Week), В следующем месяце (Next Month), В этом году (Year to Date), В первом квартале (First Quarter) и т. д.