- •Часть 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
Аварийная ситуация. Мистическая ошибка “Файл уже используется”
Теперь, когда БД с многопользовательской поддержкой создана, вы рассчитываете, что она будет поддерживать толпу пользователей, поэтому вас приводит почти в шоковое состояние таинственная ошибка "Файл уже используется" ("File already in use"). Разве не для того создаются БД с многопользовательской поддержкой, чтобы оставаться доступными, даже когда кто-нибудь их использует?
Эта ошибка возникает, поскольку кто-то уже открыл БД с монопольным доступом (Exclusive mode). Монопольный доступ (см. разд. "Открытие БД с монопольным доступом " далее в этой главе) позволяет одному пользователю связаться с БД и заблокировать попытки всех остальных. Хитрость заключается в том, что при определенных обстоятельствах программа Access может применять монопольный доступ, даже если вы ее об этом не просили.
Наиболее распространенная проблема — отсутствие у пользователя подходящих разрешений на папку с общим доступом, в которой хранится многопользовательская БД. (Разрешения (Permissions) — составляющая системы безопасности ОС Windows, определяющая способ использования файлов и папок тем или иным пользователем.) В особенности эта проблема проявляется, когда вы первым открываете БД и не имеете разрешения на создание новых файлов. В этой ситуации программа Access не может создать файл с расширением laccdb. Этот файл отслеживает блокировки (см. разд. "Применение блокировок для предотвращения наложения обновлений" далее в этой главе). Без файла с расширением laccdb Access не может координировать работу многих пользователей. Поэтому программа тихо переходит в режим монопольного доступа, который блокирует остальные обращения к БД.
Понятно, что решением может быть точное определение всех, нуждающихся в использовании БД, и гарантированное предоставление им разрешения на создание новых файлов в папке с общим доступом. Конечно, все было бы гораздо проще, если бы программа Access могла предупредить вас о том, что не может нормально открыть БД и вынуждена применить монопольный доступ.
Разделение БД вручную
Для разделения БД не обязательно применять мастер. Вы можете самостоятельно перенести таблицы в отдельный файл БД и затем вручную установить с ними связь. Главная причина такого подхода заключается в желании разделить вашу БД на несколько фрагментов — например, вы хотите создать одну клиентскую часть и четыре серверных файла.
Для разделения серверной БД существуют некоторые веские основания. К ним относятся следующие.
■ Повышение надежности. На самом деле, если один файл будет поврежден, остальные останутся в прежнем состоянии.
Повышение уровня безопасности. С помощью средств ОС Windows вы можете управлять разрешениями на открытие конкретных файлов. Благодаря этим средствам можно использовать преимущества разделения БД для блокирования доступа пользователей к тем частям серверной БД, с которыми они не связаны.
■ Возможность дальнейшего роста файла БД. Как упоминалось ранее, программа Access ограничивает размер БД 2 Гбайт. Если планируется хранить большое число записей с вложениями (например, изображениями), хорошо бы иметь уверенность в том, что дос таточно дискового пространства доступно в данный момент и будет доступно в обозри мом будущем.
Для разделения БД вручную необходимо использовать средства импорта и экспорта программы Access. Описанные далее действия продемонстрируют разделение БД Boutique Fudge на три отдельных файла, таким образом, вы сможете хранить данные кредитных карт отдельно от остальной информации. (Если хотите повторять эти действия на компьютере, найдите БД примеров на странице "Missing CD" Web-сайта www.missingmanuals.com.)
1. Создайте необходимые серверные БД.
В данном примере вам нужны две серверные БД: одна для хранения данных кредитных карт (назовем ее BoutiqueFudgeSecrets_be.accdb) и вторая для остальных подробностей (назовем ее BoutiqueFudge_be.accdb). Прежде чем двигаться дальше, создайте обе эти БД в программе Access и поместите их в общедоступную папку, но пока оставьте пустыми.
2. Откройте файл серверной БД.
Следующая задача — добавить соответствующие таблицы в каждую из серверных БД. Для этого используйте мастер импорта программы Access.
Начнем с файла BoutiqueFudgeSecretsJbe.accdb. Он легче, поскольку должен включать всего одну таблицу.
3. Выберите на ленте Внешние данные → Импорт → Access (External Data → Import → Access).
Начнет работу мастер импорта (рис. 18.6).
Примечание
В данном примере импортируются таблицы, необходимые для серверной БД. Можно попробовать и обратный прием — экспортировать таблицы из клиентской БД. Но у операций экспорта больше ограничений, чем у импорта, т. к. они позволяют преобразовать только одну таблицу одновременно.
Рис. 18.6. В первом окне мастера импорта выбирается файл с таблицами, которые надо импортировать, и затем решается, копировать таблицы или просто создать ссылки на них
4. В поле Имя файла (File name) задайте местоположение вашей клиентской БД.
В данном примере — это файл BoutiqueFudge.accdb, в настоящий момент содержащий полный набор (таблицы, запросы, формы и отчеты).
5. Выберите первый переключатель Импорт таблиц ... в текущую базу данных (Import tables ... into the current database).
Второй переключатель позволяет создать связанные таблицы. Вы примените их позже в этом процессе.
6.Щелкните мышью кнопку ОК.
На экране появится окно Импорт объектов (Import Objects) со всем содержимым вашей БД (рис. 18.7).
Выделите таблицы, которые хотите импортировать, и щелкните мышью кнопку ОК.
БД BoutiqueFudgeSecrets_be нужна единственная таблица CreditCards (кредитные карты).
После нажатия кнопки ОК программа Access копирует таблицы в вашу БД. Файл БД можно закрыть.
8.Повторите пункты 2—7 для заполнения остальных файлов серверных БД.
В данном примере необходимо открыть файл BoutiqueFudge_be.accdb и импортирован в него все таблицы за исключением таблицы CreditCards.
Рис. 18.7. На вкладке Таблицы перечислены все таблицы вашей БД. Выделите одинарным щелчком кнопки мыши те, которые хотите импортировать
После завершения передачи данных в серверные БД, самое время обновить клиентскую БД.
9.Откройте клиентскую БД.
В нашем случае файл BoutiqueFudge.accdb.
10. Удалите все таблицы.
Не бойтесь — в конце концов, вы только что скопировали их в файлы серверных БД. После завершения удаления следует выполнить последний шаг — создать нужные вам связи в клиентской БД. Если ваши таблицы связаны друг с другом, начните с подчиненных или дочерних таблиц.
11. Выберите на ленте Внешние данные → Импорт →» Access (External Data → Import → Access).
Снова запустится мастер импорта.
12. Укажите мастеру импорта на первый серверный файл, выберите переключатель Создать связанную таблицу для связи с источником данных (Link to the data source) и затем нажмите кнопку ОК.
Начните с файла BoutiqueFudgeSecrets_be.accdb.
13. Выберите все таблицы и щелкните мышью кнопку ОК.
Программа Access создаст соответствующие связанные таблицы в вашей БД. Рядом с каждой таблицей в области переходов отображается сигнальная пиктограмма стрелки, чтобы дать вам знать о применении связи.
14. Повторите пункты 11 — 13 для каждой серверной БД.
Если вы начали с файла BoutiqueFudgeSecrets_be, пора перейти к файлу BoutiqueFudge_be, содержащему все остальные нужные вам таблицы.
Если вы выполнили все перечисленные действия, то получите три файла БД, работающие вместе: BoutiqueFudgeSecrets__be.accdb с информацией о кредитных картах, Boutique-Fudge__be.accdb с остальными таблицами и BoutiqueFudge.accdb с запросами, формами и отчетами. Если хотите увидеть окончательный продукт, загляните в загружаемые из Интернета примеры к данной главе. Перейдите в разд. "Защита базы данных" далее в этой главе, чтобы узнать, как применять разные параметры безопасности к различным серверным БД.
Блокировка вашей клиентской БД
Прежде чем выпустить вашу БД в жизнь, стоит подумать о вредных последствиях. В руках не слишком смышленых пользователей Access ваши любовно создаваемые формы и отчеты могут быть безнадежно испорчены. Эта самая частая жалоба в случаях совместного использования БД Access: раньше или позже любопытные или небрежные пользователи изменят что-нибудь, что не стоило трогать, и их клиентская БД перестанет работать.
Несмотря на то, что вы не сможете стоять за плечом каждого из них, можно предотвратить проделки пользователей с помощью блокировки клиентской БД. В этом случае другие люди не смогут изменять формы и отчеты. (При этом они все равно смогут просматривать и редактировать данные.)
Секрет установки блокировки вашей клиентской БД заключается в замене расширения файла accdb на расширение accde. Несмотря на разницу всего в одной букве формат с расширением accde ограничивает пользователей несколькими способами:
они не могут изменять формы и отчеты, на самом деле они даже не могут открывать эти объекты в режиме Конструктора;
они не могут создавать новые формы и отчеты;
они не могут переименовывать существующие формы и отчеты (хотя могут их удалить);
они не могут редактировать или даже просматривать ваш программный код и макросы. В действительности весь программный код откомпилирован, т. е. преобразован из операторов кода, о которых вы узнали в главах 16—17, в "стенографическую" запись, понятную только компьютеру.
Примечание
Программа Access предоставляет такие же возможности в отношении БД более старого mdb-формата. Для блокировки внесения изменений в файл с расширением mdb создайте файл с расширением mde.
Создать файл с расширением accde проще простого. Достаточно выполнить следующие действия.
Откройте вашу клиентскую БД.
Убедитесь, что она запускается как надежная БД или БД с полным доверием.
Если вы открыли ее не из надежного расположения (см. разд. "Задание надежного расположения" главы 15), необходимо щелкнуть мышью кнопку Параметры (Options) на
панели сообщений, выбрать команду Включить содержимое (Enable Content) и затем щелкнуть мышью кнопку ОК.
3, Выберите на ленте Работа с базами данных → Работа с базами данных → Создать ACCDE (Database Tools → Database Tools → Make ACCDE).
На экране появится диалоговое окно Сохранить как (Save As).
4. Введите имя для вашего файла с расширением accde.
Программа Access не изменит исходную БД — вместо этого она создаст копию нового формата.
После создания файла с расширением accde убедитесь в том, что исходный файл с расширением accdb у вас в руках. Рано или поздно вам придется вносить изменения. Программа Access не предоставляет никакого способа обратного преобразования файла с расширением accde в исходный формат, поэтому единственная возможность вернуться к первоначальному файлу — внести изменения и затем экспортировать его в новый файл с расширением accde.
Примечание
Если исходный файл с расширением accdb потерян, нет возможности изменить ваши формы и отчеты. Вы остаетесь с неизменной во времени БД. В качестве последнего средства можно обратиться к Web-пространству, в котором другие компании предлагают утилиты, умеющие (обычно) преобразовывать файл с расширением accde в файл с расширением accdb.