Когда Access блокирует ваше обновление
Рассмотрим рабочий аспект стратегии программы Access: что происходит, когда вы нажимаете мышью кнопку Выполнить(как описано в пункте 9 предыдущего алгоритма), и пет никакой реакции? Не появляются ни предупреждение, ни окно сообщения или ошибки, объясняющие причину сбоя. Лишь в строке состояния, в нижней части окна Access выводится таинственное сообщение, которое любезно информирует о том, что "действие или событие заблокировано режимом отключения" ("The action or event has been blocked by Disabled Mode"). Что все это значит?
Access — по-настоящему параноидальная программа. Она не разрешает вам выполнять некоторые действия до тех пор, пока вы явно не подтвердите, что все в порядке.
Как вы узнали из разд. "Открытие БД" главы 1, каждый раз, когда вы открываете вашу БД, Access отображает панель сообщений с сообщением системы безопасности. Вам решать, что делать с этим сообщением. Можно щелкнуть мышью кнопку ? в правом верхнем углу, чтобы полностью скрыть эту панель. В этом случае ваша БД остается в отчасти заблокированном состоянии. Вы можете создавать, изменять и удалять объекты БД, принадлежащие вам, но не можете запускать никакой код или запросы на изменение. (Для повторного вывода на экран панели сообщений и просмотра сообщения системы безопасности выберите на ленте Работа с таблицами → Показать или скрыть → Панель сообщений(Database Tools →Show/Hide → Message Bar).)
Другой способ — щелкнуть мышью кнопку Параметры(Options) на панели сообщений для отображения диалогового окна Параметры безопасности Microsoft Office
(Microsoft Office Security Options). Дальше следует выбрать переключатель Включить это содержимое(Enable this content) и щелкнуть мышью кнопку ОК. Этот шаг предоставляет программе Access непоколебимую гарантию безопасности вашей БД — другими словами, БД разработана не жующим чипсы хакером в подвале родительского дома. После того как вы предприняли этот шаг, Access разрешает выполнять запросы на изменение (по крайней мере, до тех пор, пока вы не закрыли БД, не открыли ее снова и не увидели на экране повторно отображенное сообщение центра безопасности).
Если вы устали от многоразового включения БД при каждом ее использовании, есть другое решение. Можно заставить программу Access доверять всем БД в конкретной папке на вашем жестком диске. Этот метод описан в разд. "Задание надежного расположения " главы 15.
Запросы на добавление
Запрос на добавление выбирает записи из таблицы и вставляет их в другую таблицу. (С технической точки зрения, добавление — это процесс вставки записей в конец таблицы.)
Создать запрос на добавление можно по ряду причин, но обычно это делается для переноса записей из одной таблицы в другую. Этот метод удобен, если у вас есть повторяющиеся таблицы в разных БД (возможно, разным людям приходится использовать БД на разных компьютерах).
Примечание
После завершения копирования записей в новую таблицу можно продолжить работу с помощью запроса на удаление (см. разд. "Запросы на удаление" далее в этой главе) и удалить старые версии.
Запросы на добавление также имеют смысл, если вы работаете со сверхчувствительной базой. В этом случае вы можете вводить данные во временную таблицу для того, чтобы кто-то просмотрел их позже. Когда проверка закончена, можно применить запрос на добавление для переноса записей в реальную таблицу.
Запросы на добавление жестче других типов запросов на изменение. При переносе записей нужно быть уверенным в полной согласованности таблиц.
■ Типы данных должны быть совместимы. У выбранных вами полей (в исходной таблице) и заменяемых полей (в конечной таблице) должны быть совместимые типы данных. Но имена полей могут не совпадать. Вы можете сформировать ваш запрос так, что данные из
поля FirstNameпомещаются в поле F_Nameпри условии, что у обоих полей текстовый тип данных.
■ Некоторые поля можно пропускать. Если в исходной таблице есть поля, которых нет в конечной таблице, не включайте их в свой запрос. Если в конечной таблице есть поля, которых нет в исходной таблице, программа Access оставит их незаполненными или использует значения по умолчанию (см. разд. "Задание значений по умолчанию" главы 4). Но если вы пропустите обязательное поле (поле, у которого свойство Обязательное поле(Required) имеет значение Да, как объясняется в разд. "Пропущенные значения и пустые строки "главы 4), вы получите сообщение об ошибке.
■ Программа Access применяет все обычные правила при добавлении записи. Вы не можете вставить данные, нарушающие условие на значение (см. разд. "Целостность на уровне ссылок" главы 5) и добавить дублирующиеся значения в поле с первичным ключом или уникальным индексом (см. разд. "Предотвращение дублирования значений с помощью индексов " главы 4 ).
■ Если в конечной таблице есть поле с типом данных Счетчик,не задавайте значение для этого поля. Access автоматически сгенерирует значение для каждой добавляемой записи.
Примечание
Вы не можете копировать значения типа Счетчикв запросе на добавление. Если для идентификационных полей (кодов) применяется тип данных Счетчик,у вновь скопированных записей будут значения кодов (ID), отличающиеся от оригиналов.
Программа Access предоставляет и другую возможность, аналогичную запросу на добавление; запрос па создание таблицы, который ничем не отличается от запроса на добавление за исключением одного: запрос на создание таблицы создает конечную таблицу и затем копирует в нее записи.