Игорь Новиков
При разработке программ с помощью пакета Microsoft Access 2000 часто приходится вводить ограничения на доступ к функциям СУБД - ведь предоставлять им следует только необходимую функциональность, лишние возможности могут стать причиной проблем. В библиотеке Microsoft Office Extensions1 имеется множество программ Access, иллюстрирующих возможные приемы защиты и настройки интерфейса (программы 435, 443, 461, 548). В этой статье рассмотрены некоторые варианты такой настройки.
Настройка интерфейса СУБД Access
Основной программный интерфейс для доступа и управления объектами баз данных - Data Access Objects (DAO), "корень" объектной иерархии - объект DBEngine. С его помощью реализуются многие функции, в том числе настройка интерфейса для "рабочих пространств" Access (workspace). Средствами подчиненного объекта типа Workspace выполняется управление текущим сеансом - последовательностью операций за промежуток времени между подключением программы к механизму управления базой данных и ее отключением. Любая из подключенных за время такого сеанса баз данных отражается среди объектов DBEngine как отдельная ветвь - подчиненный объект типа Database. Этот объект также управляет различными операциями; но в данном случае нас интересуют лишь его средства для настройки конфигурации и интерфейса доступа.
Для того чтобы познакомиться с примером реальных значений этих параметров, достаточно подготовить небольшую тестовую утилиту в любом файле Access. В нее нужно добавить:
...
For Each obj In DBEngine.Workspaces(0).Databases(0).Properties
Print #FFile, obj.Name, " - ", IIF(IsNumeric(obj.Value), Str(obj.Value), obj.Value))
Next
...
После выполнения этой программы в файл #FFile будут записаны значения параметров конфигурации и настройки для текущего файла Access. При ближайшем рассмотрении можно обнаружить среди них многие из параметров, доступных в меню Сервис|Параметры запуска в основном окне Access, которые позволяют настроить интерфейс. Однако в этом списке представлены также параметры, которые доступны только программе. Например, AllowBypassKey (запрет на использование клавиши u, позволяющей принудительно прервать загрузку программ из файла базы данных Access) или AllowBreakIntoCode (разрешение на использование комбинации клавиш sr для прерывания обработки программы).
В библиотеке Office Extensions имеются специальные программы, позволяющие проводить настройку файлов Access наглядными и простыми в использовании средствами. Программа "SG Database Properties Tool v 1.1 - надстройка для изменения свойств БД Access 97/2000" (540) (автор Сергей Гаврилов, sgsoft@mail.ru) дает возможность задавать значения перечисленных свойств объекта Database. Другая программа - "AdmTools v 1.1 - утилита администрирования баз данных в Access 97" (471) (автор Юрий Прус, ms_master@mail.ru) - обеспечивает настройку баз данных с помощью обычного интерфейса Access.
Настройка ядра механизма DAO для доступа к данным
Механизм DAO - это интерфейс верхнего уровня для доступа к данным. Непосредственное взаимодействие с данными происходит через соответствующий драйвер ядра БД. Для "настольных" СУБД обычно применяется ядро Microsoft Jet. При его установке в разделе системного реестра Windows (\HKEY_LOCAL_MACHINES\Software\Microsoft\Jet) формируются подразделы Engines и ISAM Formats, где записываются стандартные параметры настройки для этого драйвера низкого уровня.
Рядовому пользователю не дано право изменять эти записи самостоятельно, однако для целей отладки баз данных (особенно в сетевой среде) иногда приходится проводить соответствующую настройку. Это выполняется с помощью метода DBEngine.SetOption.
Поскольку отлаженность работы механизма СУБД очень важна и напрямую зависит от значений этих параметров, их переопределение в системном реестре производится во время сеанса выполнения конкретной программы. После его завершения и закрытия используемого объекта DBEngine восстанавливаются исходные значения. Для ознакомления с доступными параметрами настройки этого механизма следует обратиться к разделу Справки Access "Параметры инициализации ядра Microsoft Jet".
Настройка с помощью профиля пользователя
Следующий способ, позволяющий переопределять стандартные параметры настройки среды Access, реализуется с применением индивидуального профиля пользователя при запуске конкретной программы. Благодаря ему удается успешно предотвращать конфликты, возникающие в связи с различиями между потребностями рабочей программы и стандартными (или произвольно измененными) настройками Access и ядра СУБД.
Для настройки профиля пользователя необходимо задать параметр /profile в командной строке. С точки зрения разработчика, профиль - это особый набор разделов в системном реестре Windows, где содержатся все необходимые параметры настройки.
Прежде всего для настройки профиля в разделе \HKEY_LOCAL_MACHINE\SOFTWARE\ создаются три вложенных раздела: \Организация\Приложение\Номер_Версии_Приложения. Названия выбираются таким образом, чтобы гарантировать их уникальность в рамках ОС. В разделе \Номер_Версии_Приложения создаются подразделы, эквивалентные имеющимся в \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\9.0\Access. В них записывают параметры, значения которых предполагается переопределить для обеспечения необходимой рабочей среды для создаваемой программы. В разделе \HKEY_ ... \9.0\Access формируется также подраздел под названием \Profiles, где указывается строковый параметр с тем именем, которое будет использоваться в командной строке для запуска этой Access-программы.
Аналогичным образом с применением профиля пользователя можно переопределить параметры для ядра Microsoft Jet. Теперь при выполнении рабочей программы Access их выбор производится путем просмотра следующих подразделов системного реестра \HKEY_LOCAL_MACHINE\SOFTWARE (указаны в порядке убывания приоритета): 1) \Организация\Приложение\Номер_Версии_Приложения; 2) \Microsoft\Office\9.0\Access; 3) \Microsoft\Jet\4.0\Engines. В результате будет выбрано первое значение, найденное по этим адресам.
Значения параметров настройки для тестового файла Access |
obj.Name | obj.Value |
Name | C:\TEMP\Test.mdb |
Connect | |
Transactions | Истина |
Updatable | Истина |
CollatingOrder | 1049 |
QueryTimeout | 60 |
Version | 3.0 |
RecordsAffected | 0 |
ReplicaID | |
DesignMasterID | |
Connection | |
AccessVersion | 07.53 |
Build | 3519 |
Show Values Limit | 1000 |
Show Values in Indexed | 1 |
Show Values in Non- Indexed | 1 |
Show Values in Remote | 0 |
AllowBypassKey | Истина |
StartUpShowDBWindow | Истина |
StartUpShowStatusBar | Истина |
AllowShortcutMenus | Истина |
AllowFullMenus | Истина |
AllowBuiltInToolbars | Истина |
AllowToolbarChanges | Истина |
AllowBreakIntoCode | Истина |
AllowSpecialKeys | Истина |
StartupForm | Форма1 |
StartUpMenuBar | (по умолчанию) |
AppTitle | Тест |
AppIcon | C:\TEMP\Test.BMP |
|