- •Часть 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
Часто задаваемый вопрос. Печать ваших отношений
Почему последовательность Office → Печать (Office button → Print.) становится недоступной, когда я просматриваю вкладку Схема данных?
После создания связей между вашими таблицами, возможно, вам захочется быстро напечатать эту структуру. Напечатать непосредственно вкладку Схема данных нельзя, но ее можно преобразовать в отчет, представляющий собой специализированный объект БД и позволяющий создать распечатку в любое время. (Вы узнаете, как создавать отчеты, в части III.)
Для создания отчета о связях ваших таблиц сначала расположите все выбранные по нашему вкусу таблицы на вкладке Схема данных. Затем выберите Работа со связями | Конструктор → Сервис → Отчет по схеме данных (Relationship Tools | Design → Tools → Relationship Report). На экран выводится окно предварительного просмотра, которое похоже в той или иной степени на текущее содержимое вкладки Схема данных. Для того чтобы вывести его на печатающее устройство, можно выбрать последовательность Office → Печать.
После закрытия отчета со связями программа Access предложит сохранить его в вашей БД. Обычно вы с этим не связываетесь, потому что можете легко восстановить его в любое время. Но если у вас сложная БД и вы хотите напечатать несколько разных схем (на каждой из которых представлены разные группы связей), у вас может возникнуть желание сохранить ваш отчет о связях для последующего применения. Вы узнаете больше об отчетах в главе 10.
Магазин шоколадных изделий
БД о продажах, в которой хранятся товары, клиенты и заказы компании, торгующей чем-либо, — наиболее распространенная разновидность БД. На самом деле этот шаблон появляется так часто, что стоит рассмотреть его в кратком примере. Как будет видно, существует несколько основных правил, применяемых к любому зависящему от продаж (торговому) предприятию, будь то продажа коллекционируемых книг или уцененных фармацевтических изделий.
В данном примере вы встретитесь с принимающей заказы по почте компанией Boutique Fudge, которая удовлетворяет декадентские изыски большой аудитории помешанных на шоколаде клиентов. Ее бесстрашные руководители склонны к постоянным инновациям и хотят как можно лучше управлять постоянно растущим каталогом своих высококачественных изделий. Они также нуждаются в способе учета клиентов и сделанных ими заказов.
Каталог изделий и список клиентов
Даже зная не слишком много о компании Boutique Fudge, вы можете придумать несколько основных нужных им таблиц. Для того чтобы выставить что-то на продажу, вам потребуются следующие таблицы.
■ Таблица Products, в которой перечислены соблазнительные шоколадные деликатесы, предлагаемые для продажи. В таблице записаны: название, описание и цена каждого предлагаемого изделия. Имеет смысл включить в нее несколько необязательных подробностей — например, почему бы не учесть текущий запас с помощью двух числовых полей (UnitsInStock (количество единиц на складе) и UnitsOnOrder (количество заказанных единиц)), а также логическое поле (названное Discontinued (больше не продающиеся)) для обозначения изделий, которые больше не поступают в продажу.
Примечание
Во многих БД нельзя удалять старые данные. Компания вроде Boutique Fudge не может просто исключить старые изделия из своих каталогов, поскольку они могут быть связаны со старыми заказами. Кроме того, есть смысл хранить исторические сведения для возможного анализа данных. (Boutique Fudge могла бы применить запрос для поиска самых хорошо продаваемых товаров в 1999 г. и выяснить, есть ли связь между снижением содержания какао и сокращением продаж.) Именно поэтому вам нужно поле Discontinued. Когда перечисляются изделия для продажи, все больше не поступающие в продажу изделия можно исключить с помощью средств фильтрации, с которыми вы познакомились в разд. "Фильтрация" главы 3.
Таблица ProductCategories делит изделия на несколько описательных групп. Это позволит клиентам просматривать изделия только в той категории, которая им нужна (будь то напитки (Beverages), конфеты (Candies), шоколад (Chocolate) или сделанная на заказ одежда с надписями, подчеркивающими пристрастие хозяина к шоколаду (Personalized Choco-wear).
Таблица Customers содержит список шокоголиков, подписавшихся на регулярные заказы. В этой таблице вам нужна вся информация о клиентах, например, имена и фамилии, сведения, необходимые для доставки, информация о счетах.
Примечание
Многие компании разрешают своим клиентам предоставлять несколько адресов доставки и кредитных карт. Если вы согласитесь на такое разнообразие, вам понадобится (не удивляйтесь)
больше таблиц. Можно создать таблицуCustomerCreditCards. Затем каждую запись из таблицы Customers можно связать с одной или несколькими записями в таблице CustomerCreditCards. BoutiqueFudge выбрала легкий путь и хранит номер кредитной карты клиента и его адрес непосредственно в таблице Customers.
Пока существует одна действующая связь — связь типа "один-ко-многим" между таблицами ProductCategories и Products. Этот проект показан на рис. 5.21.
Рис. 5.21. Товар (например, Chocolate Jasmine Tea (шоколадный жасминовый чай)) можно поместить в одну категорию (скажем, напитки), но в отдельную категорию входит много товаров
Заказ товаров
Как бы искусно не была спроектирована ваша БД о продажах, если клиенты не смогут заказывать интересующие их товары, компания Boutique Fudge быстро разорится.
Новички в разработке БД часто допускают ошибку, считая, что сведения о заказах можно хранить в одной таблице. На самом деле вам нужны две.
В таблицу Orders записывается каждый заказ, сделанный клиентом. Она связана с клиентом, сделавшим заказ, и включает информацию, такую как дата размещения заказа.
В таблице OrderDetails перечислены отдельные элементы заказа. Каждая запись в таблице OrderDetails включает код (ID) заказанного товара, количество единиц товара в заказе и цену, по которой они заказаны.
Поскольку в среднем заказ содержит несколько видов изделий, отдельная запись в таблице Orders обычно связана с несколькими записями таблицы OrderDetails (как показано на рис. 5.22). Это утверждение может показаться нелепым (т. к. оно означает, что вам требуется создать группу новых записей для всего лишь одного заказа), но процесс не потребует от вас больших усилий. У программы Access есть два средства, которые выручат: подтаблицы (рис. 5.23) и формы (см. главу 12).
Обратите внимание на то, что запись OrderDetails хранит цену каждого заказанного вида товара. Может показаться, что такая система порождает избыточность данных по отношению
ктаблицеProducts. Но цены товаров меняются и компании предлагают скидки. По этим причинам очень важно отслеживать цену товара, когда его заказывают. В противном случае вам придется гадать о том, сколько должен вам каждый клиент.
Рис. 5.22. У каждого заказа может быть неограниченное количество заказанных видов товаров. Такая возможность неизменно радует компанию Boutique Fudge
Рис. 5.23. Благодаря наличию подтаблицы можно добавлять в одном месте запись о заказе и связанные с ним виды товаров
Примечание
Профессиональные разработчики БД называют информацию такого сорта сиюминутными или текущими данными (point-in-time data), поскольку они меняются со временем.
Следует отметить, что запись таблицы Order не хранит общую стоимость заказа, т. к. общая стоимость — это просто сумма стоимостей всех заказанных товаров. Если хранить общую стоимость, то возникает возможность появления противоречивых данных — иными словами, у вас появится проблема, если сохраняемая общая стоимость не совпадет со стоимостью всех товаров, включенных в заказ.
Вам придется еще как следует поработать, прежде чем Boutique Fudge превратится в компанию, которая управляется БД. Например, возможно, придется создать таблицу Shipments (доставки), в которой учтены заказы, отправленные по почте, и таблицу Payments (платежи), чтобы быть уверенными в том, что клиенты расплатились полностью. Концептуально в этом нет ничего нового, но чем больше таблиц добавляется, тем сложнее становятся БД. Теперь, зная основы отношений и правила создания таблиц хорошей структуры, вы сумеете сохранять хладнокровие в стрессовой ситуации.