- •Часть 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
Уголок ностальгии. Dао против аdо
Для того чтобы усложнить жизнь, корпорация Microsoft давным-давно ввела еще одну технологию доступа к данным, названную ADO (ActiveX Data Objects, объекты данных ActiveX). И DAO, и ADO выполняют задачи обработки данных с помощью удобных объектов.
Ключевая разница между ними заключается в том, что Microsoft проектировала ADO как универсальную технологию доступа к данным, которая может работать с другими системами управления БД, например SQL Server, a DAO предназначена только для Access.
Некоторые программисты Access считают (неправильно), что ADO — приемник DAO и лучший выбор при написании программного кода для БД Access. (В действительности корпорация Microsoft, возможно, даже заявляла об этом в определенный момент, но все свидетельства этого уничтожены.) В настоящий момент официальная версия заключается в том, что лучше применять DAO, поскольку эта технология настроена для программы Access. Это означает, что DAO легче использовать, и она обеспечивает лучшую производительность в большинстве случаев. ADO применяют лишь опытные VB-программисты, кто уже знает, как работает эта технология, и не хочет тратить время на изучение DAO, или же разработчики, которым требуется какое-нибудь экзотическое средство, имеющееся в ADO и отсутствующее в DAO.
Часть VI
Совместное использование Access
Глава 18. Совместное использование БД несколькими пользователями
Глава 19. Импорт и экспорт данных
Глава 20. Подключение Access к SQL Server
Глава 21. Подключение Access к SharePoint
Глава 18
Совместное использование БД несколькими пользователями
Теперь, когда совершенная БД создана, возможно, вы захотите использовать ее совместно с друзьями и коллегами. В одних руках программа Access— первоклассное средство управле-ния данными. Но когда пристрастие разделяет группа людей, программа предоставляет от-личную возможность для совместной работы.
Совместное использование БД особенно важно, если она играет связующую роль в организании. Представьте себе, что вы создаете БД, которая отслеживает проекты компании и сроки их выполнения. (Обычно такая БД формируется как экономящее время средство в руках фаната Access, у которого есть небольшой избыток свободного времени.) Вскоре у других отделов возникает желание примкнуть к вам и сохранять свои проекты в вашей БД. И возможности этим не ограничиваются; если вы используете БД совместно с достаточно широкой аудиторией, можно собрать воедино все виды связанных задач. Сотрудники могут регистрировать время, потраченное на каждый проект. Тестировщики качества продукции могут фиксировать все нерешенные проблемы, влияющие на проект. Руководители проектов могут обозначить проекты с требующими напряжения сроками, главные начальники могут рассчитать премии, а генеральный директор оценить с высоты орлиного полета всю работу своей компании. Очень скоро будет трудно представить себе жизнь без вашей БД Access.
В этой главе вы научитесь использовать вашу БД вместе с небольшой группой, узнаете о возможных ловушках и о том, что нужно делать, чтобы все протекало гладко.
Открытие вашей базы данных всему миру
Когда вы решаете предоставить ваши данные для совместного использования, прежде всего, следует решить, могут ли другие пользователи изменять вашу информацию. Как вы увидите, распространять копии своей БД легко, а вот обеспечить работу многих пользователей с одним и тем же файлом БД в одно и то же время — более сложное дело.
В целом у вас есть четыре основных подхода для того, чтобы предоставить свои данные массам.
Экспортирование данных. Можно взять данные из вашей БД и экспортировать их в другой формат (например, в Web-страницу на языке HTML или электронную таблицу Excel). Этим путем можно пойти, если у пользователей, которым нужны ваши данные, нет программы Access. Как экспортировать данные, вы узнаете в главе 19.
Копирование вашей БД. Можно предоставить другим пользователям копию вашей БД. Например, если у вокальной группы "Uncle Earl" есть копия Access, можно послать им по электронной почте список семейных адресов. Ограничение такого подхода состоит в отсутствии легкого способа синхронизации изменений в разных копиях. Если группа "Uncle Earl" добавит несколько новых людей в список, ваш исходный список останется прежним. Если вы измените исходный список, устареет копия группы "Uncle Earl".
Переход на серверное программное обеспечение. Можно перенести ваши данные на серверный программный продукт промышленного уровня, например SQL Server или SharePoint. После этого практически неограниченное число пользователей сможет получать данные. Каждый из них использует собственную копию программы Access для соединения с сервером, у которого есть централизованное хранилище информации. Очевидный недостаток такого подхода — сложность, поскольку настройка подобных программных продуктов — непростая задача даже для технически образованных пользователей. Вы опробуете два лучших варианта подобного подхода в главе 20 (SQL Server) и в главе 21 (SharePoint).
Применение средств коллективного использования программы Access. Можно поместить вашу БД в папку с общим доступом (например, на сетевой диск), чтобы несколько человек могли использовать ее одновременно. В этом случае все работают с одним и тем же множеством данных (и изменения, сделанные группой "Uncle Earl", не пропадут). При таком подходе программа Access должна координировать работу пользователей. Если у вас небольшая группа — скажем, не более 40 человек используют вашу БД одновременно - коллективное использование будет функционировать. Но если группа достаточно велика, программа Access для нее не подойдет. В этом случае нужен серверный программный продукт, который рассчитан на большие объемы и многопользовательский доступ. (В следующем разделе приведен удобный перечень, который поможет решить, годится ли вам такой подход.)
Данная глава целиком посвящена последнему, приведенному в списке подходу — многопользовательской поддержке, жестко запрограммированной в Access. Но перед тем как начать, важно выяснить ограничения, с которыми вы столкнетесь, чтобы оценить, удовлетворяют ли вашим нуждам средства, предлагаемые программой Access.
Как действует многопользовательская поддержка в Access
Разобраться в средствах коллективного использования БД программы Access легко. Сначала нужно поместить файл с вашей БД в такое место, к которому у всех есть доступ — например, в папку с общим доступом на вашем компьютере или (что еще лучше) в папку на серверном компьютере в сети вашей компании. Теперь всем, кто хочет использовать БД, достаточно открыть ее файл.
Звучит, просто, не так ли? Но не торопитесь. Прежде чем реорганизовывать работу целой компании, ориентируя ее на единственный файл БД, следует учесть несколько чисел. Далее приведены некоторые индикаторы, свидетельствующие о том, что многопользовательская поддержка Access вам подойдет.
■ Не более 40 человек одновременно пользуются БД. Количество пользователей, одновременно обращающихся к БД, — это ключевой момент. Вы можете использовать одну и туже БД совместно с сотнями пользователей, при условии, что все они не будут открыватьэту БД одновременно.
Примечание
Это число (40) — осмысленная рекомендация, а не железное правило. Некоторые гуру Access проектировали БД, которые могли выдерживать от 90 до 100 одновременных пользователей. Но без серьезных (и сложных) оптимизационных мер вы очень скоро упретесь в кирпичную стену.
Не более 15 человек одновременно изменяют БД. Читать БД легко, а обновление БД сопряжено с некоторыми серьезными проблемами. Очевидная проблема возникает, когда несколько человек разными способами пытаются изменить одну и ту же запись одновременно. Из-за проектных особенностей программы Access даже те изменения, которые не приходят в столкновение друг с другом, могут снизить общую производительность. Вы попытаетесь преодолеть это затруднение позже в данной главе, когда будут обсуждаться блокировки (см. разд. "Применение блокировок для предотвращения наложения обновлений "далее в этой главе).
Примечание
Это число (15) — рекомендация с перестраховкой. Если разные пользователи вносят изменения в совершенно разные таблицы, возможно, вам удастся протолкнуть и больше одновременных корректировок. С другой стороны, если все захотят изменить несколько одних и тех же записей, вы можете попасть в аварийную ситуацию и раньше. Если сомневаетесь, попробуйте.
Структура БД меняется нечасто. Другими словами, вы не планируете регулярно изменять структуру таблиц, добавлять новые поля или корректировать связи между таблицами. В идеале следует окончательно откорректировать свои таблицы, а затем предлагать БД для совместного использования. Для получения наилучших результатов только одному человеку следует поручить роль главного разработчика таблиц, который в случае необходимости отвечает за изменение структуры БД.
Разные пользователи намерены работать с разными таблицами. Если все, кто пользуется вашей БД, выполняют одну и ту же задачу (и обращаются к одной и той же таблице), у вас будут проблемы. Но если один пользователь поддерживает каталог товаров, еще пять вводят заказы, а шестой регистрирует их отправку, вы в гораздо лучшей ситуации. Несмотря на то, что все пользуются одной и той же БД, их работа не перекрывается.
Ваша БД не является критически важной. Данные всегда важны. Но если вы обеспечиваете работу компании, занимающейся электронной коммерцией, с помощью Web-сайта, функционирующего 24 часа в сутки, вам не избежать хотя бы кратковременных затруднений. К сожалению, программа Access не может гарантировать такого рода стабильности. Хотя подобные ситуации случаются редко, внезапные сетевые проблемы или сбой компьютера в момент, когда пользователь вносит изменения, могут с большой долей вероятности повредить вашу БД.
Примечание
Всем почитателям программы Access следует выполнять регулярные копирования своих БД в течение дня. Для автоматизации этого процесса можно применять средства планирования (например, Планировщик заданий ОС Windows).
Не будет преувеличением сказать, что многопользовательские БД Access — основное решение для многих маленьких компаний. Но если вы ознакомились с ограничениями программы и решили, что Access не сможет удовлетворить ваши потребности, самое время перейти на более мощный программный продукт, например, SQL Server. (He паникуйте —
доступна бесплатная версия, и вы можете управлять вашими данными в привычном интерфейсе Access.) Вы узнаете об SQL Server в главе 20 и о SharePoint Server в главе 21.
С другой стороны, если программа Access соответствует вашим потребностям, поздравляю — вы всего в одном шаге от преобразования вашей одинокой однопользовательской БД в ресурс, которым сможет пользоваться вся ваша компания. Просто читайте дальше.
Подготовка вашей базы данных
Если вы добрались до этих строк, значит, вы решили, что многопользовательские средства программы Access — все, что вам нужно. Но прежде чем ваша БД станет общедоступной, возможно, потребуется несколько изменений. Наиболее важное из них — разделение БД -часто пропускаемый, несмотря на важность, этап, придающий вашей многопользовательской БД дополнительную надежность.
Примечание
Когда вы предоставляете свои данные для коллективного использования, очень важно применять разделенную БД. Совместное использование обычной БД может привести к самым неожиданным поворотам и случайностям, которые сделают вашу БД ненадежной.
Что такое разделенная БД
Разделенная база данных — это БД, объекты которой разделены на два отдельных файла:
внутренняя или серверная БД (back-end database) содержит исходные данные — иначе говоря, таблицы и ничего больше;
внешняя или клиентская БД (front-end database) содержит все, чем вы пользуетесь при работе с таблицами, а именно все объекты БД других типов, например, запросы, отчеты, формы и макросы.
После разделения базы данных внутренняя БД помещается в общедоступное место (например, на сетевой диск). Внешняя БД функционирует несколько иначе. Ее копируют на все компьютеры, которые собираются использовать внутреннюю БД. На рис. 18.1 показан этот принцип работы.
Разделенные БД обладают рядом достоинств.
Производительность. Когда применяется разделенная БД, у каждого клиента есть копии объектов, необходимых ему для работы, — например, формы — готовые и ждущие на его компьютере. Это означает, что пользователю не нужно извлекать эту информацию из совместно используемой БД, что потребовало бы больше времени (и создало бы дополнительный трафик в вашей сети). В этом случае из совместно используемой БД вам необходимо получить только нужные для работы данные.
Более легкое обновление. Изменение данных в многопользовательской БД относительно безопасно для людей, но программа Access плохо справляется с неразберихой, возникающей при попытках пользователей изменить структуру объектов БД. Разделенная БД I лишена этой проблемы, поскольку объекты, которые часто нуждаются в корректировках, например запросы, отчеты и формы, находятся в клиентской БД. Если эти объекты нужно модифицировать (или добавить новые), можно безопасно изменить клиентскую БД на одном компьютере, а затем распространить ее между всеми, кому она понадобится.
Такой подход не только легче, но и гораздо надежнее, т. к. не может возникнуть неразрешимая проблема, именуемая разрушением или повреждением БД (см. разд. "Повреждение данных" далее в этой главе).
Рис. 18.1. В системе с разделенной БД у вас одна внутренняя или серверная БД, централизованно хранящая данные, и несколько внешних или клиентских БД для каждого пользователя, подключающегося к вашей БД
У разных людей разные клиентские БД. Когда применяется БД коллективного пользования, можно создать разные клиентские БД для разных типов пользователей — например, отделу маркетинга необходимы отчеты, отображающие сведения о продажах, а сотрудникам склада нужна форма, которая выводит на экран невыполненные заказы. Этим подходом можно воспользоваться для того, чтобы наверняка не показывать пользователям формы, отчеты и таблицы, не предназначенные для них, что снизит риск мелких ошибок (например, генеральный директор случайно не уничтожит весь каталог товаров). Но не впадайте в крайность — чем больше создается вариантов клиентских БД, тем больше усилий понадобится для их сопровождения.
Примечание
С технической точки зрения вы не сделаете вашу БД более защищенной, если предоставите пользователям клиентские БД с ограниченными возможностями. В конце концов, технически грамотные пользователи Access могут просто создать собственные клиентские БД и использовать их для получения неограниченного доступа к серверной БД. Но хотя клиентская БД не может остановить злоумышленника, она сможет защитить от небрежного или чересчур любопытного пользователя.
У вас есть два способа разделения БД. Можно воспользоваться мастером или сделать это вручную с помощью средств экспорта и импорта программы Access. В следующих разделах описаны оба метода.