Невозможно использовать файл уже используется access
Посвящается бедолагам, кто любит ставить свежие обновления Office. В середине декабря, вышло обновление KB5002104 (Office 2013) и KB5002099 (Office 2016) которое закрывало уязвимость ядра при подключении к базе данных Microsoft Jet Red. Но имело одну известную проблему с совместным доступом к файлу базы данных Access на сетевом диске или DFS.
Microsoft выпустили заплатку для Office 2013 KB2965317 и Office 2016 KB4484211, но к несчастью, они решали проблему только для файлов расположенных в сети по UNC-путям. Статус выхода обновлений можно посмотреть тут.
Как счастливый обладатель файлового сервера на DFS, для меня единственным решением оказалось удалить обновления KB5002104 и KB5002099.
Патчи для Office удаляются через msiexec с указанием GUID пакета самого офиса и GUID обновления. Выглядит так
Расшифровка GUID для Office, советую почитать. Чтобы узнать GUID обновления, необходимо его скачать, разархивировать и просмотреть в свойствах файла .MSP вкладку Подробно, строка Редакция
GUID установщика Office можно посмотреть в реестре для Office 2016 Для х32 разрядной Office 2016 на Windows x64 Для удаленного выполнения кода, можно использовать Invoke-Command. Например Office 2016 x64 Смотрим в лог-файл, ищем строчки MSI (s) (18:14) [10:50:19:162]: Продукт: Microsoft Office Professional Plus 2016 - пакет обновлений "Security Update for Microsoft Office 2016 (KB5002099) 32-Bit Edition" успешно удален. MSI (s) (18:14) [10:50:19:163]: Установщик Windows выполнил удаление обновления. Продукт: Microsoft Office Professional Plus 2016. Версия: 16.0.4266.1001. Язык: 0. Изготовитель: Microsoft Corporation. Обновление: Security Update for Microsoft Office 2016 (KB5002099) 32-Bit Edition. Удаление завершено с состоянием: 0. Или смотрим системный журнал
Перезагружаем рабочую станцию и пробуем открыть файлы баз данных на файловом сервере.
Небольшая функция для удаления этих обновлений в зависимости от установленного пакета MS Office. Применимо для Office 2013, 2016 x32-x64 UPD! Ошибка может появиться снова в случае работы с файлами access на DFS, после установки куммулятивного обновления Office 2013 KB5002124 и Office 2016 KB5002115. В моём случае их тоже пришлось сносить. Вот GUID на всякий случай
"Этот файл не имеет программы, связанной с if для выполнения этого действия. Создайте связь на панели управления "Задать сопоставление".
Расширения файлов, используемые Access, теряют связь с приложением Access. Наиболее распространенными расширениями являются (ACCDB, ACCDE, MDB, MDE).
Решение
Эта проблема устранена путем изменения сопоставления файлов обратно на Access.
Способ 1
Щелкните правой кнопкой мыши файл проблемы (ACCDB, ACCDE, MDB, MDE).
Наведите указатель мыши на пункт "Открыть с", а затем щелкните "Выбрать программу по умолчанию".
В разделе "Рекомендуемые программы" найдите Access и выберите его, если он найден.
Если Access не был указан в разделе "Рекомендуемые программы", нажмите кнопку "Обзор", перейдите и выберите msaccess.exe и нажмите кнопку "Открыть".
Общие пути установки:
(32-разрядная Windows или 32-разрядная версия Access) или (64-разрядная Windows или 64-разрядная версия Access):
- Access 2007: C:\Program Files\Microsoft Office\Office12\MSACCESS.EXE
- Access 2010: C:\Program Files\Microsoft Office\Office14\MSACCESS.EXE
- Access 2013: C:\Program Files\Microsoft Office\Office15\MSACCESS.EXE (MSI)
- Access 2013: C:\Program Files\Microsoft Office 15\root\Office15\MSACCESS.EXE (C2R)
- Access 2016: C:\Program Files\Microsoft Office\Office16\MSACCESS.EXE (MSI)
- Access 2016: C:\Program Files\Microsoft Office\root\Office16\MSACCESS.EXE (C2R)
(64-разрядная Windows или 32-разрядная версия Access):
- Access 2007: C:\Program Files (x86)\Microsoft Office\Office12\MSACCESS.EXE
- Access 2010: C:\Program Files (x86)\Microsoft Office\Office14\MSACCESS.EXE
- Access 2013: C:\Program Files (x86)\Microsoft Office\Office15\MSACCESS.EXE (MSI)
- Access 2013: C:\Program Files\Microsoft Office 15\root\Office15\MSACCESS.EXE (C2R)
- Access 2016: C:\Program Files (x86)\Microsoft Office\Office16\MSACCESS.EXE (MSI)
- Access 2016: C:\Program Files(x86)\Microsoft Office\root\Office16\MSACCESS.EXE (C2R)
Убедитесь, что программа "Всегда использовать выбранную программу. " Флажок установлен и нажмите кнопку "ОК".
Способ 2
Если ваша операционная система Windows Vista или более поздней версии, можно удалить следующие разделы реестра, чтобы удалить текущий выбор пользователя для приложения по умолчанию, используемого с расширением файла. Ключ перестраивается с сопоставлением по умолчанию при следующем открытии Access.
При неправильном изменении реестра с использованием редактора реестра или другого способа могут случиться серьезные проблемы. Для решения этих проблем может потребоваться переустановка операционной системы. Компания Microsoft не может гарантировать, что эти проблемы могут быть решены. Вносите изменения в реестр на ваш страх и риск.
Откройте редактор реестра, нажав кнопку "Пуск ", введя Regedit в поле поиска и нажав клавишу ВВОД.
Найдите следующий ключ:
Найдите расширение файла, которое нужно удалить. например ACCDB. Перед удалением создайте резервную копию ключа, щелкнув правой кнопкой мыши расширение файла (ACCDB), выбрав "Экспорт" и указав имя файла.
Снова щелкните правой кнопкой мыши ключ расширения файла (ACCDB) и на этот раз выберите команду "Удалить".
Закройте редактор реестра и дважды щелкните файл базы данных.
Это статья FAST PUBLISH, созданная непосредственно из службы поддержки Майкрософт. Сведения, содержащиеся в этом разделе, предоставляются как есть в ответ на возникающие проблемы. Из-за скорости ее доступности материалы могут содержать о типографические ошибки и могут быть изменены в любое время без предварительного уведомления. Другие рекомендации см. в разделе "Условия использования".
пишет. "Не возможно использовать "; файл уже используется"
Подскажите пожалуйста как можно получить данные?
VBA Access: как проверить, открыта ли данная книга Excel
Добрый день! Подскажите пожалуйста, как можно при помощи модуля VBA В Access проверить открыта ли.
Ошибка, что база уже открыта oткрыть Exclusive уже неудaется.
Еслй етoт пример пoстaвить в цикл (типo пoвтoряетсья через 1 мин.), тo через кaкиx тo 25 - 35 рaзoв.
Проверить что форма уже открыта
Здравствуйте. Сделал форму с настройками программы. Форма открывается как ShowDialog из.
Запретить открытие формы если она уже открыта
Из главной формы открываю еще одну форму кнопкой. При повторном нажатии вызывается повторно.
Без закрырия программы, использующей базу в "монопольном" режиме - никак. Фактически на время запроса можно делать копию файла (без скрытого файла блокировки) и обращаться непосредственно для чтения к копии. Будет срабатывать для случаев, когда на момент копирования в файл не вносятся изменения.
Это бы хорошо, но в теме не сказано, имеет ли топикстартер доступ к программному коду "другой программы, которая обновляет там данные онлайн". Раз задан такой вопрос по умолчанию считаю, что нет.
Это бы хорошо, но в теме не сказано, имеет ли топикстартер доступ к программному коду "другой программы, которая обновляет там данные онлайн". Раз задан такой вопрос по умолчанию считаю, что нет.
Совершенно верно, изменить режим открытия нету возможности. Другая программа это купленная программа которая к сожалению имеет ограниченный функционал в отчетах.
Вот с помощью Ecxel и макросов я добиваюсь чтобы видеть нормальные отчеты.
Добавлено через 9 минут
Чтобы программа или
подождала пока обновление закончиться
Или проигнорировала это
Чтобы пользователь не бился в истерике что у него ошибка.
Посмотреть, может и так прокатит. Методически это неправильно. А как часто программа обновляется. Есть возможность на уровне файловой системы при помощи WinAPI отлавливать файловые события в папке на локальном компьютере. Например "файл обновлен - перезаписан на диск", по этому событию делать копию базы всякий раз.
Добавлено через 5 минут
Правда там цикл в отдельном процессе, что на VBA в плохо срабатывает - виртуальная машина msvbvm60.dll настабильна при создании процесса.
Теперь, когда БД с многопользовательской поддержкой создана, вы рассчитываете, что она будет поддерживать толпу пользователей, поэтому вас приводит почти в шоковое состояние таинственная ошибка "Файл уже используется" ("File already in use"). Разве не для того создаются БД с многопользовательской поддержкой, чтобы оставаться доступными, даже когда кто-нибудь их использует?
Эта ошибка возникает, поскольку кто-то уже открыл БД с монопольным доступом (Exclusive mode). Монопольный доступ (см. разд. "Открытие БД с монопольным доступом " далее в этой главе) позволяет одному пользователю связаться с БД и заблокировать попытки всех остальных. Хитрость заключается в том, что при определенных обстоятельствах программа Access может применять монопольный доступ, даже если вы ее об этом не просили.
Наиболее распространенная проблема — отсутствие у пользователя подходящих разрешений на папку с общим доступом, в которой хранится многопользовательская БД. (Разрешения (Permissions) — составляющая системы безопасности ОС Windows, определяющая способ использования файлов и папок тем или иным пользователем.) В особенности эта проблема проявляется, когда вы первым открываете БД и не имеете разрешения на создание новых файлов. В этой ситуации программа Access не может создать файл с расширением laccdb. Этот файл отслеживает блокировки (см. разд. "Применение блокировок для предотвращения наложения обновлений" далее в этой главе). Без файла с расширением laccdb Access не может координировать работу многих пользователей. Поэтому программа тихо переходит в режим монопольного доступа, который блокирует остальные обращения к БД.
Понятно, что решением может быть точное определение всех, нуждающихся в использовании БД, и гарантированное предоставление им разрешения на создание новых файлов в папке с общим доступом. Конечно, все было бы гораздо проще, если бы программа Access могла предупредить вас о том, что не может нормально открыть БД и вынуждена применить монопольный доступ.
Разделение БД вручную
Для разделения БД не обязательно применять мастер. Вы можете самостоятельно перенести таблицы в отдельный файл БД и затем вручную установить с ними связь. Главная причина такого подхода заключается в желании разделить вашу БД на несколько фрагментов — например, вы хотите создать одну клиентскую часть и четыре серверных файла.
Для разделения серверной БД существуют некоторые веские основания. К ним относятся следующие.
■ Повышение надежности. На самом деле, если один файл будет поврежден, остальные останутся в прежнем состоянии.
Повышение уровня безопасности. С помощью средств ОС Windows вы можете управлять разрешениями на открытие конкретных файлов. Благодаря этим средствам можно использовать преимущества разделения БД для блокирования доступа пользователей к тем частям серверной БД, с которыми они не связаны.
■ Возможность дальнейшего роста файла БД. Как упоминалось ранее, программа Access ограничивает размер БД 2 Гбайт. Если планируется хранить большое число записей с вложениями (например, изображениями), хорошо бы иметь уверенность в том, что дос таточно дискового пространства доступно в данный момент и будет доступно в обозри мом будущем.
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) на
3, Выберите на ленте Работа с базами данных → Работа с базами данных → Создать ACCDE (Database Tools → Database Tools → Make ACCDE).
На экране появится диалоговое окно Сохранить как (Save As).
4. Введите имя для вашего файла с расширением accde.
Программа Access не изменит исходную БД — вместо этого она создаст копию нового формата.
После создания файла с расширением accde убедитесь в том, что исходный файл с расширением accdb у вас в руках. Рано или поздно вам придется вносить изменения. Программа Access не предоставляет никакого способа обратного преобразования файла с расширением accde в исходный формат, поэтому единственная возможность вернуться к первоначальному файлу — внести изменения и затем экспортировать его в новый файл с расширением accde.
Если исходный файл с расширением accdb потерян, нет возможности изменить ваши формы и отчеты. Вы остаетесь с неизменной во времени БД. В качестве последнего средства можно обратиться к Web-пространству, в котором другие компании предлагают утилиты, умеющие (обычно) преобразовывать файл с расширением accde в файл с расширением accdb.
Теперь, когда БД с многопользовательской поддержкой создана, вы рассчитываете, что она будет поддерживать толпу пользователей, поэтому вас приводит почти в шоковое состояние таинственная ошибка "Файл уже используется" ("File already in use"). Разве не для того создаются БД с многопользовательской поддержкой, чтобы оставаться доступными, даже когда кто-нибудь их использует?
Эта ошибка возникает, поскольку кто-то уже открыл БД с монопольным доступом (Exclusive mode). Монопольный доступ (см. разд. "Открытие БД с монопольным доступом " далее в этой главе) позволяет одному пользователю связаться с БД и заблокировать попытки всех остальных. Хитрость заключается в том, что при определенных обстоятельствах программа Access может применять монопольный доступ, даже если вы ее об этом не просили.
Наиболее распространенная проблема — отсутствие у пользователя подходящих разрешений на папку с общим доступом, в которой хранится многопользовательская БД. (Разрешения (Permissions) — составляющая системы безопасности ОС Windows, определяющая способ использования файлов и папок тем или иным пользователем.) В особенности эта проблема проявляется, когда вы первым открываете БД и не имеете разрешения на создание новых файлов. В этой ситуации программа Access не может создать файл с расширением laccdb. Этот файл отслеживает блокировки (см. разд. "Применение блокировок для предотвращения наложения обновлений" далее в этой главе). Без файла с расширением laccdb Access не может координировать работу многих пользователей. Поэтому программа тихо переходит в режим монопольного доступа, который блокирует остальные обращения к БД.
Понятно, что решением может быть точное определение всех, нуждающихся в использовании БД, и гарантированное предоставление им разрешения на создание новых файлов в папке с общим доступом. Конечно, все было бы гораздо проще, если бы программа Access могла предупредить вас о том, что не может нормально открыть БД и вынуждена применить монопольный доступ.
Разделение БД вручную
Для разделения БД не обязательно применять мастер. Вы можете самостоятельно перенести таблицы в отдельный файл БД и затем вручную установить с ними связь. Главная причина такого подхода заключается в желании разделить вашу БД на несколько фрагментов — например, вы хотите создать одну клиентскую часть и четыре серверных файла.
Для разделения серверной БД существуют некоторые веские основания. К ним относятся следующие.
■ Повышение надежности. На самом деле, если один файл будет поврежден, остальные останутся в прежнем состоянии.
Повышение уровня безопасности. С помощью средств ОС Windows вы можете управлять разрешениями на открытие конкретных файлов. Благодаря этим средствам можно использовать преимущества разделения БД для блокирования доступа пользователей к тем частям серверной БД, с которыми они не связаны.
■ Возможность дальнейшего роста файла БД. Как упоминалось ранее, программа Access ограничивает размер БД 2 Гбайт. Если планируется хранить большое число записей с вложениями (например, изображениями), хорошо бы иметь уверенность в том, что дос таточно дискового пространства доступно в данный момент и будет доступно в обозри мом будущем.
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) на
3, Выберите на ленте Работа с базами данных → Работа с базами данных → Создать ACCDE (Database Tools → Database Tools → Make ACCDE).
На экране появится диалоговое окно Сохранить как (Save As).
4. Введите имя для вашего файла с расширением accde.
Программа Access не изменит исходную БД — вместо этого она создаст копию нового формата.
После создания файла с расширением accde убедитесь в том, что исходный файл с расширением accdb у вас в руках. Рано или поздно вам придется вносить изменения. Программа Access не предоставляет никакого способа обратного преобразования файла с расширением accde в исходный формат, поэтому единственная возможность вернуться к первоначальному файлу — внести изменения и затем экспортировать его в новый файл с расширением accde.
Если исходный файл с расширением accdb потерян, нет возможности изменить ваши формы и отчеты. Вы остаетесь с неизменной во времени БД. В качестве последнего средства можно обратиться к Web-пространству, в котором другие компании предлагают утилиты, умеющие (обычно) преобразовывать файл с расширением accde в файл с расширением accdb.
Читайте также: