- •Часть 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
Часто задаваемый вопрос. Отключение обеспечения целостности данных
Бывают ли такие ситуации, когда не следует требовать целостности на уровне ссылок?
В большинстве случаев целостность данных — это окончательная проверка безопасности БД, и никто не захочет от нее отказаться — особенно, если в БД включена информация для решения критически важных задач вашего бизнеса. Напоминаю, что целостность на уровне ссылок препятствует проникновению противоречивых данных. Она пропускает пустые поля, если нет связанной записи, на которую вы хотите сослаться.
Единственная ситуация, в которой вы можете решить увильнуть от соблюдения правил целостности на уровне ссылок, — использование частичных копий вашей БД. Обычно это происходит на крупных предприятиях, использующих одну и ту же БД на разных площадках.
Рассмотрим очень успешную компанию, торгующую выпечкой на шести площадках. Когда клиент делает заказ на площадке в центре города, вы добавляете запись в таблицу Orders и заполняете поле CustomerlD (код клиента) (которое ссылается на полную запись в таблице Customers). Вот тут-то и возникает проблема. Полной записи о клиенте может не быть в вашей копии БД — вместо этого она может храниться в одной из БД на другой площадке или в главном управлении компании. Несмотря на то, что связь в таблице Orders правильная, программа Access считает, что вы допустили ошибку, поскольку она не может найти соответствующую запись о клиенте.
В этом случае вы можете отключить обеспечение целостности данных, чтобы иметь возможность вставить запись. Если вы сделаете это, будьте особенно внимательны при вводе связанного значения (в данном примере CustomerID), чтобы избежать ошибок в дальнейшем.
Каскадное удаление
Правила целостности решительно останавливают вас при попытке удалить родительскую запись (такую как сведения об изготовителе), на которую ссылаются дочерние записи. Но есть и другой вариант — гораздо более радикальный. Вы можете выбрать удаление всех связанных дочерних записей при удалении записи-родителя. Например, это позволит вам удалить изготовителя и ликвидировать всех кукол, произведенных им.
Предупреждение
Каскадные удаления рискованны. Слишком легко удалить больше записей, чем было намечено, а если это сделать — пути назад нет. Еще хуже то, что команда Отменить (Undo) не сможет вам помочь отменить это изменение. Поэтому действуйте с осторожностью.
Для включения этого варианта при создании связи вы должны установить флажок каскадное удаление связанных записей (Cascade Delete Related Records) (см. рис. 5.4). Обновить связь можно и позже, установив данный флажок.
После установки этого флажка режим можно опробовать, удалив изготовителя, как показано на рис. 5.6.
Рис. 5.6. В данном примере отношение Dolls—Manufacturers использует установленный флажок каскадное удаление связанных записей. Когда удаляется изготовитель, программа Access предупреждает о том, что в действительности вы удалите девять записей
Для тех, кто понимает. Пользуйтесь каскадным удалением с осторожностью
Средство каскадное удаление связанных записей — ядерное оружие БД, поэтому хорошенько подумайте, необходимо ли оно вам. Этот режим позволяет очень легко удалить записи, которые на самом деле нуждались всего лишь в корректировке.
Если вы выбрасываете клиента из БД, нет смысла удалять сведения о его выплатах, которые нужны для вычисления вашей общей прибыли. Гораздо лучше изменить запись о клиенте, пометив ее как неиспользуемую в дальнейшем. Можно добавить в запись о клиенте поле Active (действующий) логического типа и задать в нем значение Нет для того, чтобы пометить расчеты клиента как не используемые в настоящий момент вместо удаления записи. Вы также должны помнить, что каскадные удаления — всего лишь удобное средство. Они не содержат новых функциональных возможностей. Если не устанавливать флажок каскадное удаление связанных записей, вы все равно сможете удалять связанные записи до тех пор, пока не нарушите правильный порядок действий. Если нужно удалить изготовителя, начинайте с удаления всех связанных с ним кукол-болванчиков или измените записи о куклах, указав для них другого изготовителя (или вообще удалив изготовителя) с помощью корректировки значений ManufacturerlD. После выполнения этого шага вы сможете без проблем удалить запись об изготовителе.
Каскадные обновления
Программа Access также позволяет задать каскадное обновление. Если включить этот режим (установив флажок каскадное обновление связанных записей (Cascade Update Related Records) в диалоговом окне Изменение связей), Access копирует любое изменение, сделанное вами в связанном поле родительской записи, во все дочерние.
В БД кукол-болванчиков каскадное обновление позволяет изменить ID одного из изготовителей. Как только вы изменили ID, Access автоматически включает новое значение в поле ManufacturerID всех связанных записей таблицы Dolls. Без каскадного обновления вы не сможете изменить ID изготовителя, если есть связанные с этим значением записи о куклах.
Каскадные обновления безопаснее каскадных удалений, но они редко нужны. Поскольку, если вы следуете правилам хорошего проектирования БД, вы устанавливаете связь, используя
столбец ID с типом данных Счетчик (см. разд. "Счетчик" главы 2). Программа Access не разрешает корректировать значение типа Счетчик, и каскадное обновление вам никогда не понадобится. (Счетчик однозначно идентифицирует запись и не связан ни с каким реальным объектом.)
С другой стороны, каскадные обновления очень пригодятся, если вы работаете с таблицей, в которой не предусмотрено применение для связи значений Счетчик. Если таблицы Dolls и Manufacturers связаны именем изготовителя, вам нужны каскадные обновления — они гарантируют согласование значений дочерних записей при изменении имени изготовителя. Каскадные обновления также полезны, если записи связываются с помощью номера социального обеспечения, шифра компонента, серийного номера или других кодов, которые не генерируются автоматически и могут быть объектами корректировок.
Переходы в отношении
Отношения не только помогают вылавливать ошибки. Они облегчают просмотр связанных данных. В разд. "Запросы и связанные таблицы" главы 6 вы узнаете, как создавать процедуры поиска, собирающие вместе информацию из связанных таблиц. Но даже без этих инструментов Access демонстрирует магию связей на листе данных.
Вот как она действует. Если вы просматриваете таблицу-родитель на листе данных, то можете найти все связанные дочерние записи, щелкнув кнопкой мыши квадратик со знаком "плюс", расположенный у левого края строки (рис. 5.7).
Рис. 5.7. Хотите узнать, какие у вас есть куклы от MagicPlastic? Просто щелкните кнопкой мыши квадратик со знаком "плюс" (обведенный)
Этот щелчок раскрывает подтаблицу, в которой отображаются только связанные записи (рис. 5.8). Подтаблицу можно использовать для редактирования записей о куклах прямо в этом окне так, будто вы работаете на листе данных с полной таблицей Dolls. Можно даже добавлять новые записи.
Рис. 5.8. На самом деле подтаблица — это отфильтрованная версия обычной таблицы Dolls. В ней отображаются только записи, связанные с выбранным изготовителем. У подтаблицы те же параметры форматирования (шрифт, цвета, порядок столбцов), как и у листа данных связанной таблицы
Примечание
Вы можете открыть одновременно столько подтаблиц, сколько захотите. Единственное ограничение — записи подтаблицы не выводятся при печати листа данных (см. разд. "Печать листа данных" главы 3).
Рис.5.9. Когда программа Access не знает, какую таблицу использовать как подтаблицу, она разрешает вам выбрать ее из списка всех ваших таблиц. В данном случае только два варианта имеют смысл. Выберите Orders для того, чтобы увидеть заказы клиентов, или Invoices для того, чтобы вывести счета клиентов. Когда в списке выбрана нужная таблица, Access автоматически заполняет связанными полями области в нижней части окна. Теперь для продолжения можно щелкнуть мышью кнопку ОК
Таблица-родитель может быть связана с несколькими таблицами-потомками. В этом случае программа Access предоставляет возможность выбора таблицы, которую вы хотите использовать, щелкнув кнопкой мыши квадратик со знаком "плюс". Допустим, вы создали таблицу Customers, которая связана с таблицей-потомком с заказами клиентов (Orders) и с таблицей, содержащей сведения о счетах (Invoices). Когда вы щелкаете кнопкой мыши квадратик со знаком "плюс", программа Access не знает, какую таблицу выбрать, поэтому ' она спрашивает вас (рис. 5.9).
Примечание
Вы должны выбирать только один раз подтаблицу, которую хотите использовать. Программа Access запоминает ваш выбор и использует с этого момента одну и ту же подтаблицу. Если вы передумали впоследствии, придется настраивать табличные параметры, как описано в примечании "Практические занятия для опытных пользователей. Изменение параметров подтаблицы" далее в этом разделе.
Когда вы создадите более детально проработанные БД, то обнаружите, что ваши таблицысвязаны друг с другом цепочкой связей. Одна таблица-родитель может быть связана с таблицей-потомком, которая сама служит родителем для другой таблицы, и т. д. Это сложность не тревожит программу Access — она разрешает вам перемещаться по всей цепочке отношений (рис. 5.10).
Рис. 5.10. Здесь показаны две действующие связи. Таблица Customers — родитель для таблицы Orders (в которой перечислены все заказы, сделанные клиентом). Таблица Orders — родитель для таблицы OrderDetails (в которой приведены конкретные компоненты каждого заказа). Переходя от уровня к уровню, можно увидеть, что именно купил каждый клиент