Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Access 2007

.pdf
Скачиваний:
116
Добавлен:
11.05.2015
Размер:
23.5 Mб
Скачать

14.Повторите пункты 11 — 13 для каждой серверной БД.

Если вы начали с файла BoutiqueFudgeSecrets_be, пора перейти к файлу BoutiqueFudge_be, содержащему все остальные нужные вам таблицы.

Если вы выполнили все перечисленные действия, то получите три файла БД, работающие вместе: BoutiqueFudgeSecrets__be.accdb с информацией о кредитных картах, BoutiqueFudge__be.accdb с остальными таблицами и BoutiqueFudge.accdb с запросами, формами и отчетами. Если хотите увидеть окончательный продукт, загляните в загружаемые из Интернета примеры к данной главе. Перейдите в разд. "Защита базы данных" далее в этой главе, чтобы узнать, как применять разные параметры безопасности к различным серверным БД.

Блокировка вашей клиентской БД

Прежде чем выпустить вашу БД в жизнь, стоит подумать о вредных последствиях. В руках не слишком смышленых пользователей Access ваши любовно создаваемые формы и отчеты могут быть безнадежно испорчены. Эта самая частая жалоба в случаях совместного использования БД Access: раньше или позже любопытные или небрежные пользователи изменят что-нибудь, что не стоило трогать, и их клиентская БД перестанет работать.

Несмотря на то, что вы не сможете стоять за плечом каждого из них, можно предотвратить проделки пользователей с помощью блокировки клиентской БД. В этом случае другие люди не смогут изменять формы и отчеты. (При этом они все равно смогут просматривать и редактировать данные.)

Секрет установки блокировки вашей клиентской БД заключается в замене расширения файла accdb на расширение accde. Несмотря на разницу всего в одной букве формат с расширением accde ограничивает пользователей несколькими способами:

они не могут изменять формы и отчеты, на самом деле они даже не могут открывать эти объекты в режиме Конструктора;

они не могут создавать новые формы и отчеты;

они не могут переименовывать существующие формы и отчеты (хотя могут их удалить);

они не могут редактировать или даже просматривать ваш программный код и макросы. В действительности весь программный код откомпилирован, т. е. преобразован из операторов кода, о которых вы узнали в главах 16—17, в "стенографическую" запись, понятную только компьютеру.

Примечание

Программа Access предоставляет такие же возможности в отношении БД более старого mdbформата. Для блокировки внесения изменений в файл с расширением mdb создайте файл с расширением mde.

Создать файл с расширением accde проще простого. Достаточно выполнить следующие действия.

1.Откройте вашу клиентскую БД.

2.Убедитесь, что она запускается как надежная БД или БД с полным доверием.

Если вы открыли ее не из надежного расположения (см. разд. "Задание надежного расположения" главы 15), необходимо щелкнуть мышью кнопку Параметры (Options) на

631

панели сообщений, выбрать команду Включить содержимое (Enable Content) и затем щелкнуть мышью кнопку ОК.

3, Выберите на ленте Работа с базами данных → Работа с базами данных → Создать ACCDE (Database Tools Database Tools Make ACCDE).

На экране появится диалоговое окно Сохранить как (Save As).

4.Введите имя для вашего файла с расширением accde.

Программа Access не изменит исходную БД — вместо этого она создаст копию нового формата.

После создания файла с расширением accde убедитесь в том, что исходный файл с расширением accdb у вас в руках. Рано или поздно вам придется вносить изменения. Программа Access не предоставляет никакого способа обратного преобразования файла с расширением accde в исходный формат, поэтому единственная возможность вернуться к первоначальному файлу — внести изменения и затем экспортировать его в новый файл с расширением accde.

Примечание

Если исходный файл с расширением accdb потерян, нет возможности изменить ваши формы и отчеты. Вы остаетесь с неизменной во времени БД. В качестве последнего средства можно обратиться к Web-пространству, в котором другие компании предлагают утилиты, умеющие (обычно) преобразовывать файл с расширением accde в файл с расширением accdb.

Часто задаваемый вопрос.

Когда не следует пользоваться форматом ACCDE

Формат ACCDE подходит только для клиентских БД?

Преобразовать в файл с расширением accde можно любую БД. Но следует дважды подумать, прежде чем применять преобразование к неклиентской БД, поскольку трудно обновлять файл с расширением accde, содержащий данные.

Для того чтобы понять проблему, представьте себе, что создается файл с расширением accde для БД, содержащей всю информацию о продажах по сниженным ценам средств по уходу за волосами. Эта БД включает все исходные данные — списки клиентов, доступные сервисы и счета — и содержит формы и отчеты, облегчающие жизнь. Разделения на серверную и клиентскую часть нет.

Через несколько недель вы решаете добавить новый отчет, отображающий клиентов, разделенных на подгруппы в зависимости от цвета их краски для волос.

Конечно, вы не можете редактировать непосредственно файл с расширением accde, поэтому вы доводите до совершенства отчет в исходном файле с расширением accdb и создаете новый файл с расширением accde. И тут возникает проблема — в вашем исходном файле с расширением accdb старые данные. Теперь у вас два неполных файла: accde-файл с новыми данными, но старыми формами и отчетами и новый accde-файл с правильными формами и отчетами, но некорректными данными. Для разрешения этой ситуации нужно выполнить требующую много времени операцию импорта, как описывалось ранее.

632

Во избежание подобных проблем синхронизации данных применяйте формат accde для того, для чего он предназначен — блокировки клиентских БД, не содержащих никаких таблиц.

Использование БД совместно с пользователями, у которых нет Access

Было бы неплохо, если бы пользователи могли работать с вашей БД и пользоваться вашими формами и отчетами без установки полной версии программы Access на своих компьютерах? Это может показаться фантастикой, но такой способ есть.

Корпорация Microsoft предоставляет усеченную версию программы Access, которая называется исполняемой средой Access (Access runtime engine). Вместо покупки отдельной копии Access для каждого пользователя, которому приходится использовать вашу БД, можно им всем дать копию такой исполняемой среды. Затем они могут использовать ее для загрузки вашей БД и применения ее форм и отчетов для просмотра и редактирования данных.

Исполняемая среда Access не обладает всеми возможностями программы Access. Сразу заметно, что у нее нет ленты и области переходов. На самом деле она не предоставляет пользователям возможностей для изменения конфигурации или проекта БД. (Это ваша работа как разработчика БД.) Единственно, что вы можете делать с помощью исполняемой среды Access — применять формы и отчеты, включенные в клиентскую БД.

Примечание

Если в исполняемой среде Access использовать хорошо спроектированную клиентскую БД, пользователи могут даже не знать, что они работают в Access.

Итак, как же добраться до исполняемой среды Access? Во время написания книги она еще не была выпущена. Однако корпорация Microsoft обещала сделать ее доступной в начале 2007 г. (и в отличие от Access 2003 Microsoft обещает, что исполняемая среда Access 2007 будет доступна на ее Web-сайте и тесно связана со средствами программирования Visual Studio). Для того чтобы узнать последние новости о состоянии исполняемой среды Access, щелкните кнопкой мыши ссылку на страницу "Missing CD" на Web-сайте www.missingmanuals.com.

Между тем уже сейчас можно посмотреть, как будет выглядеть БД в исполняемой среде. Вот как это сделать.

1.Откройте вашу БД и убедитесь в том, что у нее есть стартовая форма или форма просмотра.

У исполняемой среды Access нет области переходов, поэтому у вас должна быть форма просмотра, обеспечивающая работу пользователя. Она может быть кнопочной формой с кнопками, направляющими на другие формы.

Для установки стартовой формы выберите кнопку Office → Параметры Access (Office Access Options). В списке слева выберите категорию Текущая база данных (Current Database). И, наконец, задайте в параметре Форма просмотра (Display Form) форму, которую хотите отображать автоматически при открытии БД.

2.Замените расширение файла БД accdb расширением accdr. (Возможно, буква "r" обозначает runtime (исполняемая).)

633

3. Дважды щелкните кнопкой мыши вашу БД для запуска в режиме исполнения. Вы увидите форму просмотра, но без ленты и области переходов (рис. 18.8).

Не беспокойтесь, Access может восстановить расширение accdb в вашем файле, чтобы вернуть его обычный формат.

Рис. 18.8. Этот файл с расширением accdr использует искусную кнопочную форму

Подсказка

Исполняемая среда Access — действительно полезный способ совместного использования БД без покупки несметного количества лицензий Access и забивания голов пользователей многочисленными свойствами интерфейса полнофункциональной версии программы Access. Если вы координируете деятельность маленькой коммерческой компании, она вполне подходит.

Уголок ностальгии. Отмирание страниц доступа к данным

У программы Access 2003 было средство, названное страницами доступа к данным и предназначенное для создания клиентской части БД в виде Web-страницы. Идея была замечательная — с помощью таких Web-страниц любой пользователь мог просматривать информацию в вашей БД или вносить в нее изменения, даже не имея программы Access. К сожалению, у Access и Web натянутые отношения. Как вы уже знаете, программа Access может обрабатывать только ограниченное число одновременных обращений.

634

У Web-технологий нет таких ограничений. В действительности размещение БД в Интернете равносильно приглашению полчищ пользователей для попыток одновременного использования БД. По этой причине, как и по некоторым другим (например, трудность настройки страниц доступа к данным и отсутствие совместимости с другими обозревателями), корпорация Microsoft отказалась от этого средства в Access 2007.

Если вы все же хотите придать Web-обличье вашей БД, программа Access мало чем может помочь вам. Лучшим выбором будет перенос БД на серверный программный продукт, например SQL Server, и применение другого средства разработки для построения Web-страницы. Серьезные программисты любят ASP.NET (см. www.asp.net), единый комплект корпорации Microsoft для создания Web-сайтов, от простейших до самых сложных.

Многопользовательский доступ

Многопользовательский доступ — это вечное жонглирование. Если все пользователи хотят читать информацию, все просто. Но в тот момент, когда они захотят внести изменения, могут возникнуть серьезные проблемы. Например, что произойдет, когда два пользователя попытаются одновременно изменить одну и ту же запись? Или, когда вы пытаетесь изменить запись, кто-то еще старается ее удалить? Или же вы хотите прочесть свежие данные во время процесса обновления?

Ясно, что программе Access нужен способ управления хаосом. В этом разделе вы узнаете, что делает Access для того, чтобы все держать под контролем, и как можно регулировать этот процесс. Вы также научитесь предупреждать возникновение опасных ситуаций, способных привести к повреждению данных.

Как вносятся изменения

Представим себе следующий сценарий. Вы говорите по телефону с расточительным клиентом компании Boutique Fudge. Используя вашу надежную БД Access, вы просматриваете имеющиеся в наличии товары и сообщаете вашему клиенту цену каждого из них. А в это же время главный повар без вашего ведома просматривает ту же таблицу и повышает цены на самые популярные блюда. Возникает вопрос: когда вы заметите, что цены выросли?

Программа Access обрабатывает ситуации, подобные этой, с помощью автоматических обновлений. Каждые 60 секунд Access проверяет клиентскую БД, чтобы выяснить, что изменилось. Затем программа обновляет соответствующую информацию на вашем экране, если вы просматриваете форму, запрос или непосредственно таблицу. В примере с Boutique Fudge новые цены появятся после очередного обновления, выполняемого программой Access, но не позже 60 секунд, после внесения изменений.

Из правила обновления есть несколько исключений.

Когда начинается редактирование записи (щелчок кнопкой мыши в одном из полей), Access немедленно обновляет именно эту запись. Это действие гарантирует, что перед тем как вносить изменения, вы получите самую свежую копию записи.

Если вы не можете ждать 60 секунд и вас беспокоят возможные изменения с момента последнего обновления, можно запустить немедленное обновление с помощью команды Главная → Записи → Обновить все (Home Records Refresh All). Если щелкнуть

635

мышью часть кнопки команды с нарисованной стрелкой, направленной вниз, можно выбрать обновление только текущей записи, в которой находится курсор (выберите команду Обновить (Refresh) вместо команды Обновить все (Refresh All)).

В отчетах не применяется автоматическое обновление. Если вы формируете отчет, подождите, а затем решите, нужно ли обновлять результаты. У вас есть два варианта. Можно закрыть отчет и снова открыть его или использовать кнопку на ленте Обновить.

Если вам не нравится правило 60 секунд, можно настроить частоту повторения автоматических обновлений программой Access. Для этого выберите кнопку Office → Параметры Access (Office Access Options). В окне Параметры Access выберите категорию параметров Дополнительно (Advanced) и прокручивайте перечень, пока не увидите параметр Период обновления (с) (Refresh interval (sec)) (рис. 18.9).

Рис. 18.9. Период обновления определяет, как часто программа Access проверяет в многопользовательской БД внесение изменений. Можно выбрать значение (В секундах) от 1 до 32 766

Примечание

Период обновления (с) — параметр программы Access, влияющий на все многопользовательские БД, открываемые на данном компьютере. Если вы хотите, чтобы все использовали одинаковый период обновления, необходимо, чтобы все пользователи обновили свои параметры Access.

636

Чем короче период обновления, тем быстрее вы увидите изменения, внесенные другими пользователями. Но укороченные интервалы обновления создают дополнительный трафик в вашей сети. Многие любители программы Access знают, что можно спокойно применять более короткий период обновления, если используется медленная сеть.

Обработка конфликтов редактирования

Многопользовательские БД — пример неограниченной свободы. Обычно программа Access не накладывает никаких ограничений на многопользовательские корректировки. Если повезет, пользователи будут вносить изменения в определенном порядке, один за другим. Но рано или поздно, изменения наложатся друг на друга и, возможно, с серьезными последствиями.

Далее приведен пример, показывающий, к чему приводит наложение изменений.

1.Вы открываете запрос, отображающий все товары в БД Boutique Fudge.

2.Ищите запись — самый хорошо продаваемый чизкейк с названием Chocolate Abyss, нуждающийся в изменении. Для того чтобы начать редактирование, вы щелкаете кнопкой мыши в поле Description.

3.В это же время Билл Эванс (Bill Evans) в отделе продаж запускает форму, которая тоже использует таблицу Products. Он добирается до той же самой записи и, догадываясь о возможности получений большей прибыли, начинает изменять цену. Теперь два пользователя работают одновременно с одной записью. Что произойдет дальше, зависит от того, кто первым зафиксирует свои изменения.

4.Допустим, что Билл выполнил свою работу первым. В мгновение ока он повысил цену и перешел к другой записи.

5.Вернемся к вашему компьютеру, вы закончили исправление поля Description и переходите к другой записи. Обычно в этот момент программа Access фиксирует ваши изменения, сохраняя их в серверной БД. Но в данном случае Access замечает противоречие — а именно, версия записи, с которой вы работаете, не совпадает с текущей версией записи в БД.

6.Access предупреждает вас о проблеме и предоставляет три возможных варианта ее ис правления (рис. 18.10).

Рис. 18.10. Между временем начала вашего редактирования и моментом внесения его в БД кто-то еще внес изменения. Программа Access разрешает выбрать вариант обработки возникшей конфликтной ситуации

637

Разрешить конфликтную ситуацию можно тремя способами.

Вариант Сохранить запись (Save Record) — самый легкий и самый опрометчивый. Если выбрать его, программа Access запишет вашу версию записи поверх имеющейся в БД. Проблема состоит в том, что этот вариант аннулирует изменения, сделанные другим пользователем. В предыдущем примере в БД будет сохранено новое описание товара, но потеряется изменение цены, поскольку Access запишет ее прежнее устаревшее значение.

Вариант Отменить изменения (Drop Changes) отменяет ваше редактирование. Access обновит запись и отобразит самую свежую информацию, а затем вы можете попытаться внести ваше изменение снова. Этот вариант заслуживает внимания, если вы легко сможете повторить редактирование, но его нельзя считать хорошим выбором, если вы только что закончили подробное обновление большого текстового поля.

Вариант Копировать в буфер (Copy to Clipboard), как и предыдущий вариант, отменяет ваше редактирование. Однако значения, которые вы изменили, копируются в буфер, что облегчит повторное их применение, как показано на рис. 18.11.

Рис. 18.11. Если результаты последнего редактирования скопированы в буфер, понадобятся два шага для повторного их внесения. Сначала вставьте их в другую программу (например, показанную здесь программу Word). Затем выделите данные, которые хотите использовать, и снова скопируйте их в буфер с помощью комбинации клавиш <Ctrl>+<C>. И, наконец, перейдите в окно программы Access к полю, которое хотите изменить, и вставьте новое значение, нажав комбинацию клавиш <Ctrl>+<V>

Обычно лучше всего копировать в буфер и пытаться повторить редактирование. К сожалению, людей невозможно заставить поступать правильно. Ленивые работники могут выбрать более быстрый вариант Сохранить запись, который незаметно уничтожит чью-то работу. Хуже всего, что у пользователя, выполнившего изменение первым, нет возможности узнать, что его работа пошла насмарку. Если у вас в организации много накладывающихся корректировок, придется потратить много времени на обучение персонала правилам поведения при обработке подобных ситуаций.

638

Примечание

Любители Access часто говорят о том, что им хотелось бы иметь возможность объединять изменения, т. е. обновлять только те поля, которые менялись. В предыдущем примере такая возможность позволила бы применить новое описание поля без повреждения изменения цены, сделанного предыдущим пользователем, поскольку оба обновления воздействуют на разные поля. Но программа Access не предоставляет такого варианта. Одна из причин — отсутствие возможности проверить непротиворечивость обоих изменений. Нет ничего хуже записи, противоречащей самой себе.

Практические занятия для опытных пользователей. Разделение таблиц для более безопасных корректировок

Один из способов снижения числа накладывающихся корректировок — разделение таблицы на более мелкие фрагменты. Основная идея — взять единую таблицу с большим числом полей и разделить ее на две меньшие таблицы, каждая из которых включает только некоторое число этих полей. Например, можно взять таблицу Customers (клиенты) и разделить на таблицу CustomerAddress (адрес клиента) и таблицу CustomerFinancial (финансовая информация клиента). Каждая запись таблицы CustomerAddress связана с единственной записью таблицы CustomerFinancial с помощью отношения "один-к-одному". Для получения всей информации о клиенте вам понадобятся обе записи.

Лучше всего делить таблицу, когда вы выясните, что типичное редактирование включает поля только из одной таблицы. Возможно, вы знаете, что отдел по обслуживанию клиентов часто обновляет адресные данные, а финансовый отдел работает с финансовыми сведениями, в этом случае разделение таблицы — прекрасная идея. Отдел по обслуживанию клиентов будет использовать таблицу CustomerAddress почти монопольно, а финансовый отдел будет работать с таблицей CustomerFinancial. Вероятность наложения корректировок резко снижается, поскольку обработка делится между двумя таблицами.

Применение блокировок для предотвращения наложения обновлений

Если накладывающиеся изменения вызывают слишком много проблем, у вас есть еще одна возможность. Можно применить программный трюк, именуемый блокировкой, препятствующей наложению корректировок.

По существу блокировка использует ту же идею, которая мешает двум людям встретиться в одной туалетной кабинке. Когда один человек заходит, он или она включает блокировку и все остальные вынуждены ждать, пока дело не будет сделано. Аналогичным образом, когда пользователь пытается изменить запись, программа Access начинает с установки блокировки этой записи. Любой другой пользователь, желающий внести изменения, вынужден ждать, пока не завершится первая операция.

Самый легкий способ применения блокировок — включение их с помощью параметров Access. Для этого выберите кнопку Office → Параметры Access (Office Access Options), Затем перейдите к категории Дополнительно (Advanced) и найдите параметр Блокировка по умолчанию (Default record locking).

639

У вас есть три следующих варианта для выбора.

Вариант Отсутствует (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).

640

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]