Применение блокировок для предотвращения наложения обновлений
Если накладывающиеся изменения вызывают слишком много проблем, у вас есть еще одна возможность. Можно применить программный трюк, именуемый блокировкой, препятствующей наложению корректировок.
По существу блокировка использует ту же идею, которая мешает двум людям встретиться в одной туалетной кабинке. Когда один человек заходит, он или она включает блокировку и все остальные вынуждены ждать, пока дело не будет сделано. Аналогичным образом, когда пользователь пытается изменить запись, программа 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).
Примечание
Этот прием оставляет открытой дверь черного хода. Если кто-то решит внести изменение, открыв непосредственно таблицу, он обойдет блокировки, которые вы установили в своих формах. Как всегда, людей легко направить верным путем, но трудно удержать их на этом пути.