- •Часть 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
Практические занятия для опытных пользователей. Разделение таблиц для более безопасных корректировок
Один из способов снижения числа накладывающихся корректировок — разделение таблицы на более мелкие фрагменты. Основная идея — взять единую таблицу с большим числом полей и разделить ее на две меньшие таблицы, каждая из которых включает только некоторое число этих полей. Например, можно взять таблицу Customers (клиенты) и разделить на таблицу CustomerAddress (адрес клиента) и таблицу CustomerFinancial (финансовая информация клиента). Каждая запись таблицы CustomerAddress связана с единственной записью таблицы CustomerFinancial с помощью отношения "один-к-одному". Для получения всей информации о клиенте вам понадобятся обе записи.
Лучше всего делить таблицу, когда вы выясните, что типичное редактирование включает поля только из одной таблицы. Возможно, вы знаете, что отдел по обслуживанию клиентов часто обновляет адресные данные, а финансовый отдел работает с финансовыми сведениями, в этом случае разделение таблицы — прекрасная идея. Отдел по обслуживанию клиентов будет использовать таблицу CustomerAddress почти монопольно, а финансовый отдел будет работать с таблицей CustomerFinancial. Вероятность наложения корректировок резко снижается, поскольку обработка делится между двумя таблицами.
Применение блокировок для предотвращения наложения обновлений
Если накладывающиеся изменения вызывают слишком много проблем, у вас есть еще одна возможность. Можно применить программный трюк, именуемый блокировкой, препятствующей наложению корректировок.
По существу блокировка использует ту же идею, которая мешает двум людям встретиться в одной туалетной кабинке. Когда один человек заходит, он или она включает блокировку и все остальные вынуждены ждать, пока дело не будет сделано. Аналогичным образом, когда пользователь пытается изменить запись, программа Access начинает с установки блокировки этой записи. Любой другой пользователь, желающий внести изменения, вынужден ждать, пока не завершится первая операция.
Самый легкий способ применения блокировок — включение их с помощью параметров Access. Для этого выберите кнопку Office → Параметры Access (Office → Access Options), Затем перейдите к категории Дополнительно (Advanced) и найдите параметр Блокировка по умолчанию (Default record locking).
У вас есть три следующих варианта для выбора.
Вариант Отсутствует (No locks) — это стандартная установка в программе Access. Когда применяется этот вариант, Access вообще не будет использовать блокировки и наложение корректировок становится возможным.
Вариант Всех записей (All records) заставляет программу Access блокировать всю таблицу целиком, если кто-либо начнет редактировать запись. Это значение применяется крайне редко, поскольку оно блокирует все записи и препятствует работе с таблицей кого бы то ни было, если вносится хотя бы одно изменение. Такое ограничение может ввести любую организацию в тяжелый ступор.
Вариант Изменяемой записи (Edited record) блокирует отдельные записи, когда они редактируются, что препятствует наложению корректировок.
Последний вариант — наиболее распространенный вид блокировок. Когда применяетсяблокировка отдельных записей, программа Access не разрешит начать редактирование записи, если в данный момент кто-то еще ее изменяет. Когда вы сделаете попытку, Access выведет на экран пиктограмму, обозначающую блокировку записи, показанную на рис. 18.12.
Рис. 18.12. Символ "Вход воспрещен" предупреждает о необходимости ожидания вместо редактирования записи, которая уже используется. Если вы все же попытаетесь ввести данные в поле, программа Access решительно проигнорирует вашу попытку
Блокировки мешают превращению вашей БД в груду беспорядочных сведений, но они порождают другие проблемы. Программа Access вынуждена выполнять дополнительную работу по отслеживанию каждой блокировки — она должна действовать как перегруженный работой "умывальников начальник", выдающий ключи от кабинок. Access отслеживает блокировки, создавая файл с расширением laccdb. Например, когда кто-то в первый раз открывает БД с многопользовательской поддержкой BoutiqueFudge_be.accdb, программа Access создает файл, названный BoutiqueFudge_be.laccdb. (Символ "l" обозначает "locking" (блокировка).) Когда последний пользователь закрывает БД, Access удаляет файл с блокировками.
Подсказка
Если вы загляните в папку с общим доступом и не увидите там файла с расширением laccdb, знайте, что в этот момент никто не использует БД или же кто-то открыл ее с монопольным доступом (Exclusive mode).
Кроме того, блокировки тормозят работу остальных пользователей, заставляя их ждать нужные им данные. Небрежный пользователь может прекратить работу с записью на неопределенное время, оставив ее в режиме редактирования.
Примечание
Отправляясь на перерыв, вы можете свернуть работу всей компании, даже не догадываясь об этом. Еще хуже то, что хотя потенциальные редакторы будут видеть, что запись заблокирована, они никак не смогут установить кто — причина их бед. Им остается только ждать и ждать.
Если вы все же решили применять блокировки, гораздо лучше использовать их в отдельных формах, а не включать во всех БД с помощью параметров программы Access. Можно использовать для всей БД стандартное значение для блокировки Отсутствует (No locks), но задать применение блокировок во всех формах, использующих особенно важную таблицу, скажем Invoices (счета).
Для изменения способа обработки блокировок в формах откройте Окно свойств (Property Sheet) и найдите свойство Блокировка записей (Record Locks). Оно поддерживает те же три значения: Отсутствует (No Locks) (значение по умолчанию), Всех записей (All Records) и Изменяемой записи (Edited Record).
Примечание
Этот прием оставляет открытой дверь черного хода. Если кто-то решит внести изменение, открыв непосредственно таблицу, он обойдет блокировки, которые вы установили в своих формах. Как всегда, людей легко направить верным путем, но трудно удержать их на этом пути.
Открытие БД с монопольным доступом
Одно из ограничений БД с многопользовательской поддержкой — невозможность изменять структуру таблиц во время работы пользователей с БД. Прежде чем вы сможете внести радикальные изменения, нужно открыть БД с монопольным доступом (Exclusive mode).
Монопольный доступ временно предоставляет БД в единоличное пользование одному человеку. Когда БД открыта с монопольным доступом, никто другой не может к ней обращаться, независимо от того, какую клиентскую БД они используют. У вас есть драгоценное время для выполнения радикальных изменений, которые обычно вы не можете внести.
Для того чтобы открыть БД с монопольным доступом, выполните следующие действия.
1.Попросите всех пользователей закрыть БД.
Вы не сможете открыть БД с монопольным доступом, если она кем-то используется в настоящий момент. В большой компании это самый трудный этап. Иногда системные администраторы прибегают к помощи электронной почты, чтобы дать всем знать, что пришло время завершать работу. Другой вариант — научить пользователей, работающих с вашей БД, закрывать ее всегда на ночь, прежде чем уйти домой, что позволит вам без потерь дремать во время обновления, проводимого в ночные часы.
Выберите кнопку Office → Открыть (Office → Open). На экране появится окно Открытие файла базы данных.
Выберите файл БД, который хотите открыть, и щелкните кнопкой мыши направленную вниз стрелку на кнопке Открыть (Open).
На экране появится список специализированных параметров открытия вашего файла (рис. 18.13).
4. Выберите Монопольно (Open Exclusive).
Программа Access откроет БД. Теперь можно внести изменения без каких-либо ограничений. Но действуйте быстро — чем дольше вы держите БД открытой с монопольным доступом, тем дольше другие пользователи вынуждены ждать момента, когда они смогут приступить к своей работе.
Рис. 18.13.Если открыть БД Монопольно, никто яругой не сможет ее открыть, пока вы ее не закроете. Если открыть файл в режиме Открыть для чтения, нельзя будет внести никакие изменения
Примечание
Можно настроить программу Access так, что она всегда будет пытаться открыть любую БД монопольно. Но для такого подхода редко появляются основания, поскольку он сводит на нет многопользовательскую поддержку.
Повреждение данных
Повреждение или нарушение целостности данных — термин, вселяющий страх в сердца стойких гуру Access. Будем надеяться, что пользователи вашей БД, будут вести себя
достойно, сеть в, которой она размещена, будет надежной, а вашей БД никогда не будет угрожать опасность. Но если судьба не будет к вам столь благосклонна, важно быть готовым к ее ударам.
Повреждение данных — многосмысловой термин, описывающий, что происходит, когда повреждается часть файла БД. Представим себе Джессику Бакстер (Jessica Baxter), которая успела внести половину большого обновления, когда произошло отключение питания (или какой-то шутник в офисе выдернул ее сетевой кабель). Серверная БД останется с недостоверными данными, поскольку была получена только часть информации Джессики. В результате запись, с которой она работала, может быть искажена до неузнаваемости. Если же вы особенно невезучи, проблема может затронуть несколько записей или заставить всю БД вести себя странным образом.
Диагностика и корректировка поврежденных БД
Все специалисты Access должны обладать базовыми навыками выживания в случае повреждения данных. Во-первых, вы должны уметь определять, когда БД испортилась. Далее перечислены некоторые признаки, сигнализирующие об этом.
Загадочные сообщения об ошибках, которые появляются без видимой причины, например, "нехватка памяти" (out of memory). (Имейте в виду, что их не следует путать с всегда популярной категорией непонятных сообщений об ошибках, отображаемых на законных основаниях, например таких, как "файл уже используется" (file already in use).)
Строки, содержащие тарабарщину, вроде ### или ???. Обычно подобные значения встречаются в последних нескольких строках поврежденной БД, что свидетельствует о том, что пострадало только несколько новых вставок, а остальное содержимое, возможно, корректно.
Полная невозможность использования БД. Если вы получаете ужасную ошибку "Unrecognizable database format" ("Нераспознаваемый формат базы данных"), знайте - беда пришла.
Как только вы установили, что БД повреждена, самое время начинать ее лечить, чтобы вернуть ей здоровье. Первое средство — сжатие и восстановление, которые ликвидируют узел проблем и возвращают непомерно разросшимся, раздутым БД приемлемые размеры. Для опробования этого средства откройте вашу БД с монопольным доступом и выберите кнопку Office → Управление → Сжать и восстановить базу данных (Office → Manage → Compact and Repair Database). Процесс может потребовать некоторого времени, особенно в случае больших БД.
Средство сжатия и восстановления исправляет только таблицы, но не формы и отчеты. Но если вы были предусмотрительны и создали разделенную БД, в серверной части нет объектов указанных типов.
Примечание
Прежде чем исправлять поврежденную БД, немедленно сделайте резервную копию. В этом случае вы сможете испробовать несколько стратегий восстановления.
Иногда сжатие и восстановление не решают проблему или могут лишь частично исправить файл вашей БД. В этом случае пора воспользоваться другим методом восстановления, Если оставшиеся проблемы не значительны (например, несколько строк с подозрительными данными), можно просто удалить бракованные данные и ввести их снова. Но иногда
программа Access отказывается отображать испорченные записи без многочисленных сообщений об ошибках. Если вы столкнулись с такой ситуацией, выберите все корректные записи и скопируйте их в другую таблицу. Затем удалите таблицу с испорченными данными и присвойте ее имя сделанной вами копии.
Последним средством спасения может стать создание новой пустой БД и попытка импортировать в нее таблицы серверной БД с помощью операции импорта. Это действие заставит программу Access создать заново каждый объект и перестроить каждый индекс. Если и это сработает не до конца, возможно, вам удастся импортировать большую часть таблиц.
И самое последнее средство — возврат к последней резервной копии БД. Вы ведь храните резервные копии, не правда ли?
Предупреждение повреждений
Приведенные далее рекомендации могут помочь сделать редким такое жуткое событие, как повреждение данных.
Придерживайтесь благоразумных установок по умолчанию, описанных в разд. "Как действует многопользовательская поддержка в Access" ранее в этой главе. Если десятки пользователей попытаются внести изменения одновременно, шансы появления проблем многократно увеличатся.
Всегда разделяйте БД, чтобы облегчить загрузку серверной части и держать формы и отчеты в безопасном месте.
Используйте надежную сеть. Если ваше сетевое соединение не заслуживает доверия, обновление может быть прервано, а это одна из главных причин нарушения целостности данных.
Приучите пользователей закрывать БД, когда они закончили ее использование или даже просто прервались на завтрак.
Регулярно применяйте средство сжатия и восстановления к вашей серверной БД (выберите из меню Office последовательность Управление → Сжать и восстановить базу данных (Manage → Compact and Repair Database)). Чем больше людей вносят изменения, тем сильнее разрастаются файлы БД и становятся более неорганизованными. Команда сжатия и восстановления реорганизует БД, делая ее более эффективной, более компактной и менее подверженной сбоям.
Делайте резервные копии как можно чаще. В зависимости от частоты внесения изменений может оказаться достаточным ежедневное резервное копирование. Но ничто не мешает вам создавать резервные копии каждый час или чаще, если это необходимо.
Подсказка
Обязательно храните коллекцию самых свежих резервных копий. Если сохранять один файл с резервной копией, велик риск того, что эта копия была сделана с уже поврежденной БД и у вас нет более старой копии для успешного отступления.
Защита базы данных
В большинстве многопользовательских БД разные пользователи выполняют различные задачи. Легче всего удержать каждого на верном пути, если создать несколько отдельных
клиентских БД, по одной для каждой группы пользователей. Это позволит мягко управлять пользователями в соответствии с выполняемыми ими задачами.
Однако настройка клиентской БД не ограничит возможности упрямого злоумышленника. В большой компании, рассчитывающей на многопользовательскую БД, вы думаете не о руководстве пользователями, а скорее об ограничении их возможностей.
К сожалению, у программы Access 2007 очень ограниченная модель безопасности. Вы можете защитить БД от посторонних с помощью пароля, но у вас нет более тонко настраиваемых средств, необходимых для запрета использования конкретных таблиц или выполнения определенных действий тем или иным пользователем. Как вы увидите в следующих разделах, обходные средства все-таки есть, но ни одно из них не сравнится с уровнем безопасности, обеспечиваемым системой управления серверной БД, такой как, например, SQL Server.
Подсказка
И снова программа Access предлагает достаточно для того, чтобы многопользовательские БД могли работать, но не более того. Вам решать, подойдет ли Access для вашей организации. Маленькие фирмы, вероятно, сочтут программу отличной, а большим организациям, возможно, понадобится серверное программное обеспечение.