Пакет Microsoft Office 2000, работающий вместе с базой данных SQL Server 7.0, — это мечта программистов, поставляющих заказчикам решения для бизнеса. Новые возможности Microsoft Office 2000 позволяют интегрировать источники данных SQL Server в мощные офисные приложения, развертываемые в масштабах предприятия.

Новые средства доступа к данным в составе пакета, такие, как ADO и файлы нового типа (.adp) в базе данных Access, позволяют разработчикам подключаться к источникам данных SQL Server с той же легкостью, что и к источникам данных Jet. Файл .adp представляет собой альтернативу файлу .mdb, стандартному файлу Access. В отличие от него файл .adp обеспечивает прямое подключение к данным SQL Server через соединение OLE DB. Еще одна новинка Office 2000, введенная Microsoft в версию Office 2000 Standard Edition, — процессор данных Microsoft Data Engine (MSDE), который способен существенно повысить производительность труда разработчиков. MSDE — это настольный вариант ядра SQL Server. Будучи альтернативой процессору баз данных Jet, MSDE напоминает сервисный компонент SQL Server в ADO и в Access Projects. (В компьютерах на платформе NT SQL Server выступает как служба Windows NT. MSDE и SQL Server Desktop могут работать и на компьютерах с операционными системами семейства Windows 9х, не поддерживающими службы NT. Оба процессора баз данных имитируют службы SQL Server и двух упомянутых программ.)

ADO в Office 2000

Office 2000 поставляется с тремя библиотеками ADO: ADODB, ADOX и JRO. Эти библиотеки позволяют разработчикам выбирать наборы функций, которые им хотелось бы встроить в приложение. Поскольку библиотеки ADO загружаются не автоматически, разработчик имеет возможность определить, какого типа функции будут доступны в приложениях и в каком объеме они будут реализованы.

ADODB и ADOX могут использоваться с базами данных любого поставщика OLE DB. Библиотека ADODB применяется для разработки соединений баз данных, выполнения команд и извлечения наборов данных из источников. Библиотека ADOX позволяет задать определения данных и обеспечить их защиту. Функции определения данных помогают программным путем создавать таблицы, процедуры и представления в любой базе данных, обладающей набором свойств библиотеки. К примеру, с помощью библиотеки ADOX можно создать таблицы в базах данных Jet и SQL Server. Возможности обеспечения безопасности ADOX вписываются в модель безопасности Jet. Третья объектная модель, JRO, предоставляет программный интерфейс для репликаций, основанных на Jet. Модель JRO работает исключительно с ядром базы данных Jet.

ЭКРАН 1. Выбор необходимых ссылок.

Чтобы задействовать в приложении какую-либо модель ADO, необходимо установить ссылки данного проекта на соответствующие библиотеки, так как они не являются встроенными. На Экране 1 показано диалоговое окно References, в котором выбираются ссылки для рассматриваемого в данной статье примера. Здесь указаны ссылки на библиотеки ADODB, ADOX и JRO. Библиотеке ADODB соответствует Microsoft ActiveX Data Objects 2.1. (Не путать с Microsoft ActiveX Data Objects Recordset 2.1, которая в коде приложений называется ADOR. По сравнению с ADODB набор возможностей ADOR значительно меньше.) На Экране 1 выделена ссылка на библиотеку ADOX. Нужные для приложения заказчика ссылки можно выбрать в диалоговом окне References.

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

Листинг 1. Пример процедуры, добавляющей библиотеку ADODB.

Sub ReferenceADODB()
Dim ref1 As Reference
Dim blnADODBIn As Boolean, ADODBLibrary 
As String

?Enumerate members of References 
 collection to determine
?whether Office Object Libary is 
 already referenced.
	blnADODBIn = False
	For Each ref1 In References
	If ref1.Name = ?ADODB? Then
		blnADODBIn = True
	End If
	Next ref1
	
?If Office Object Library reference 
 is missing reference it.
	If blnADODBIn = False Then
	ADODBLibrary = _
		?C:Program FilesCommon Files
		SystemADO? & _
		?msado15.dll?
	Application.References.AddFromFile  
	ADODBLibrary
	End If
	
End Sub
В Листинге 1 приведен один из подходов к программированию коллекции ссылок. Сначала процедура ищет коллекцию ссылок для библиотеки ADODB. Если библиотека ADODB отсутствует, то процедура добавляет ее из файла методом AddFromFile. (Хотя создается впечатление, будто файл содержит версию 1.5 библиотеки ADODB, на самом деле в нем находится версия 2.1, которая поставляется вместе с Office 2000. Имена этих файлов контролируются Microsoft, и название файла msado15.dll осталось прежним для новой библиотеки, соответствующей ADODB 2.1.) Приведенная процедура работает в том виде, который показан в листинге, только с Access. Чтобы другие компоненты Office могли запустить этот код, им потребуется подключение Microsoft Visual Basic с библиотекой Applications Extensibility Library. Такая ссылка необходима потому, что данная библиотека добавляет коллекцию и объекты ссылок в другие компоненты Office.

SQL Server и Access 2000

Несмотря на то что все компоненты Office поддерживают программирование ADO, все же Access 2000 остается уникальным. Помимо прочего, он обеспечивает графические связи с удаленными источниками данных через Access Projects. Новый тип файла, .adp, позволяет с помощью OLE DB установить прямое соединение со службами SQL Server (SQL Server 6.5 и 7.0, а также MSDE). В отличие от традиционных соединений в файлах .mdb, Access Projects дает возможность создавать, удалять и поддерживать базы данных и их объекты. Открывая Access, можно выбрать Project или New Database для того, чтобы вызвать мастера работы с базами данных SQL Server (Microsoft SQL Server Database Wizard). Мастер создаст для Access новую базу данных SQL Server. Совместное использование Access и SQL Server дает разработчикам два преимущества: во-первых, полную интеграцию Access и служб SQL Server, и, во-вторых, все удобства работы в привычном для программистов окне базы данных Access. Без каких-либо усилий можно связывать формы, отчеты и страницы доступа к данным с таблицами, представлениями, хранимыми процедурами и текстами гибких запросов на языке SQL.

ЭКРАН 2. Установление связи Access Project с базой данных NorthwindCS, расположенной на сервере CAB2200.

В левой части Экрана 2 показано диалоговое окно, в котором устанавливаются связи данных. В рассмотренном примере Access Project соединяется с базой данных NorthwindCS, расположенной на сервере CAB2200. (База данных NorthwindCS поставляется вместе с Access 2000 и представляет собой выполненный в архитектуре клиент-сервер вариант базы данных Northwind, входившей в состав более ранних версий Access. Northwind, включенная корпорацией Microsoft в SQL Server 7.0, похожа на одноименную базу данных, входящую в качестве демонстрационного примера в состав Access 2000, но не идентична ей.) На правой панели Экрана 2 показана коллекция таблиц для файла .adp, который связан с базой данных NorthwindCS. Чтобы открыть диалоговое окно для установления связи данных, следует в меню окна базы данных последовательно выбрать File и Connection (соединение). Это диалоговое окно, изображенное на Экране 2, применяется для создания или изменения соединения между Access Project и базой данных SQL Server. Access Project использует такое соединение для связи с таблицами, представлениями, диаграммами и хранимыми процедурами из базы данных под управлением SQL Server. Формы, отчеты, страницы, макросы и модули хранятся локально в файле .adp, относящемся к Access Project.

Чтобы получить на экране команды, предназначенные как для управления базой данных, связанной с Access Project, так и для обеспечения ее безопасности, в меню SQL Server Enterprise Manager следует выбрать Tools и Database Utilities или Database Security. К примеру, чтобы открыть в Enterprise Manager диалоговое окно с параметрами регистрации в SQL Server (SQL Server Login Properties), необходимо последовательно выбрать в меню: Tools (инструменты), Security (безопасность), Database Security (безопасность базы данных).

ЭКРАН 3. Поиск информации о служащем с применением технологии связывания, поиска и обновления.

Одним из достоинств пакета Access Projects является способность интегрировать традиционные формы Access и базы данных SQL Server. На Экране 3 показана пара форм Access Project. Верхняя служит переключателем с тремя положениями. Нижняя форма подсоединена к локальному кэшу, источником информации для которого служит удаленная база данных SQL Server. Несмотря на то что форма Access Project подключена к локальному кэшу, ее содержание можно автоматически обновлять, отслеживая состояние удаленного источника данных. Такие операции, как поиск сведений о каком-либо служащем, выполняются значительно быстрее, поскольку они основываются на информации, хранящейся в частном, местном источнике данных.

Листинг 2. Процедура связывания формы с пользовательским набором записей.

Sub openForm()
Dim rst1 As ADODB.Recordset

?Establish a local recordset and populate 
it with values
?can override property sheet settings
	Set rst1 = New ADODB.Recordset
	rst1.CursorLocation = adUseClient
	rst1.Open ?Select * From employees?, _
	CurrentProject.Connection, adOpenKeyset, _
	AdLockPessimistic, adCmdText

?Open the form
	DoCmd.openForm ?frmemployees?

?Assign recordset to the open form; can o
verride a
?setting on the property sheet
	Set Forms(?frmemployees?)
	.Recordset = rst1

End Sub

В Листинге 2 представлен код ADO, который запускается при нажатии пользователем кнопки открытия формы с информацией о служащем (Open frmEmployees), показанной на Экране 3. Код начинает выполняться с оператора Dim, содержащего ссылку на объект Recordset в библиотеке ADODB. Каждый раз во время выполнения эта ссылка будет порождать сообщение об ошибке, если только вручную или программным путем не будет подключена библиотека. Метод Open из этого набора данных позволяет установить несколько параметров, важных для чтения/записи формы. Необходимо указать значения для типа клавиатурного курсора и для блокировки, так как по умолчанию им будут присвоены значения «только вперед» и «только чтение». Очевидно, подобные значения сделают невозможным изменение данных и прокручивание записи в обе стороны (передвижение вперед и назад). Если указать курсор как adUseClient, то ссылка на локальный кэш станет доступной для всего набора данных.

Для тех пользователей, которые совершают переход с более ранних версий Access, команды ADO будут в новинку. Зато в Access 2000 им встретится множество старых знакомых. Открыть форму можно методом OpenForm объекта DoCmd. Для установления нужных значений свойств формы можно воспользоваться идентификацией членов ее коллекции. Новое свойство Recordset позволяет указать источник информации для формы. Возможности Recordset значительно шире, чем у ранее существовавшего свойства RecordsetClone, которое предоставляло доступ к источнику данных формы только для чтения. Если приложение вызывает форму лишь для чтения, можно применять синтаксис и установки параметров, приведенные в Листинге 2. Для источника, представляющего собой моментальный снимок памяти, следует выбрать значение 3 для свойства RecordsetType. Затем добавить такую строку (она может появиться после того, как будет присвоено значение свойству источника записи):

Forms(?formname?).RecordsetType = 3 
(or an integer constant set to 3)

По умолчанию значение этого свойства равно 4, что соответствует редактируемому моментальному снимку памяти. Такая величина параметра дает возможность автоматически передавать в удаленный источник все изменения, внесенные в локальном кэше.

Чтобы управлять записями, которые открывает форма «Служащие» (), следует нажать кнопку «Найти служащего» () либо на форме-переключателе, либо на форме «Служащие» () (см. Экран 3). Обе кнопки инициируют первую из двух процедур, приведенных в Листинге 3.

Листинг 3. Две процедуры поиска информации о служащих по их идентификаторам.

Sub locateEmployee()

?Запрос идентификатора пользователя и 
?передача его процедуре findByID
	employeeNumber = InputBox(?Type the 
	ID for the employee you want?, _
	?Programming Microsoft Access 2000?)
	findById CLng(employeeNumber)
End Sub

Sub findById(eid As Long)
On Error GoTo findByIdTrap

?Фокусировка на столбце с идентификатором
`пользователя и запуск поиска
	Forms(?frmemployees?).EmployeeID
	.SetFocus
	DoCmd.FindRecord eid

findByIdExit:
?Сообщение о несовпадении перед выходом
	If Forms(?frmemployees?)
	.EmployeeID <> eid Then
	MsgBox ?No employee 
	with ID ? & eid & ?.?, _
		vbExclamation, ?Programming 
		Microsoft Access 2000?
	End If
	Exit Sub
	
findByIdTrap:
	If Err.Number = 2450 Then
?Открытие формы, если она закрыта, 
`и запуск поиска
	openForm
	Resume
	Else
	Debug.Print Err.Number, Err
	.Description
	End If
End Sub
Первая процедура (вызов А) вводит идентификатор служащего, сведения о котором должны появиться в форме. Вторая процедура открывает форму, которая содержит идентификатор пользователя, если только он находится в локальном кэше данных.

Повторное открытие набора записей для формы позволяет просматривать изменения, вносимые другими пользователями базы данных. Один из подходов к решению этой задачи демонстрирует процедура, приведенная в Листинге 4. До запуска процедуры открытия формы, приведенной в Листинге 2, она сохраняет значение идентификатора пользователя.

Листинг 4. Функция, выполняющая обновление формы и просмотр изменений, внесенных другими пользователями.

Function requeryRemoteRestoreID()
Dim int1 As Integer

?Отключение обновления экрана и 
?сохранение идентификатора 
 пользователя
	DoCmd.Echo False
	int1 = Forms(?frmemployees?)
	.EmployeeID

?Запрос локального набора записей 
 с сервера
	openForm
	
?Переход к записи, соответствующей 
?сохраненному идентификатору 
 пользователя, 
?и восстановление обновления 
 экрана
	Forms(?frmEmployees?)
	.EmployeeID.SetFocus
	DoCmd.FindRecord int1
	DoCmd.Echo True
	
End Function

После того как процедура Open Form возвратит управление, процедура requeryRemoteRestoreID (см. Листинг 4) приступает к поиску служащего по его идентификатору точно так же, как и до вызова процедуры открытия формы. Процедура обновляет форму, начиная с первой записи и заканчивая той, которая была выбрана предварительно. Конечно, при условии, что эта запись останется в обновленном наборе.

SQL Server и Excel 2000

Помимо Access существует еще одно средство, с помощью которого разработчики Office могут подключить к своим приложениям SQL Server и другие удаленные источники информации (например, для наполнения данными электронных таблиц) — это ADO. Программный способ доступа к хранящимся в SQL Server сведениям предполагает три этапа реализации. На первом этапе устанавливается соединение с удаленным источником данных. Для этого можно использовать метод Open объекта соединения, как показано в Листинге 5.

Листинг 5. Процедура Excel Project копирования набора данных.

Sub populateWorksheet
FromRemoteServer()
Dim cnn1 As ADODB.Connection
Dim rst1 As ADODB.Recordset
Dim int1 As Integer

?Установление соединения с базой данных 
`NorthwindCS, расположенной на сервере 
`cab2200
	Set cnn1 = New ADODB.Connection
	strCnn = ?Provider=sqloledb;? & _
	?Data Source=cab2200;? & _
	?Initial Catalog=NorthwindCS;? & _
	?User Id=SQLMagUser;Password=sqlmag;?
	cnn1.Open strCnn
	
?Открытие таблицы employees
	Set rst1 = New ADODB.Recordset
	rst1.CursorType = adOpenForwardOnly
	rst1.LockType = adLockReadOnly
	rst1.Open ?[Ten Most Expensive 
	Products]?, _
	cnn1, , , adCmdStoredProc

?Выбор и переименование Sheet1
	Sheets(1).Activate
	Sheets(1).Name = ?Top Ten Products?


?Запись в первую строку заголовков 
 столбцов
	RowCnt = 1
	For FieldCnt = 0 To rst1.Fields
	.Count — 1
	Cells(RowCnt, FieldCnt + 1)
	.Value = _
	rst1.Fields(FieldCnt).Name
	Rows(1).Font.Bold = True
	Next FieldCnt

?Заполнение строк записями, 
`начиная со второй строки
	RowCnt = 2
	Do Until rst1.EOF
	For FieldCnt = 0 To rst1
	.Fields.Count — 1
	Cells(RowCnt, FieldCnt + 1)
	.Value = _
	rst1.Fields(FieldCnt).Value
	Next FieldCnt
	rst1.MoveNext
	RowCnt = RowCnt + 1
	Loop
	
?Установка размеров столбцов в 
 соответствии 
`с данными и выравнивание второго 
 столбца
`по правой границе
	Columns(?A:A?).EntireColumn
	.AutoFit
	With Columns(?B:B?)
	.EntireColumn.AutoFit
	.HorizontalAlignment = xlRight
	End With
	
?Закрытие соединения и 
 восстановление ресурса
	cnn1.Close
	Set cnn1 = Nothing

End Sub
На втором этапе установленная связь применяется для активного подключения к набору записей. На третьем этапе происходит заполнение объекта Office значениями, хранящимися в полях записей этого набора.

Чтобы таким способом встроить данные из SQL Server в документ Office, нужно как следует разобраться и в моделях объектов Office, и в модели объекта ADO. В таком контексте разнообразие моделей Office, с одной стороны, дает преимущества, а с другой — создает препятствия. Объем знаний, необходимых для эффективного применения богатейших предлагаемых возможностей, просто подавляет. Основная информация о моделях объектов Office содержится в электронной и печатной документации, входящей в комплект поставки Microsoft Office Developer Edition. Кроме того, рекомендуем приобрести выпущенную издательством Microsoft Press книгу «Руководство по программированию на Visual Basic для Microsoft Office 2000» («Microsoft Office 2000 Visual Basic Programmer?s Guide»).

В Листинге 5 приведена процедура наполнения ячеек электронной таблицы Excel, использующая программирование ADO. Приведенная процедура входит в состав проекта Excel, подсоединенного к базе данных NorthwindCS на сервере CAB2200. Она копирует в электронную таблицу набор данных, возвращаемый хранимой процедурой. Перед началом и после завершения копирования процедура выполняет некоторые функции форматирования — вводит заголовки столбцов создаваемой электронной таблицы Sheet1, устанавливает ширину столбцов и выравнивает их.

Строка соединения в вызове А Листинга 5 имеет ряд интересных особенностей. С одной стороны, она использует продукт Microsoft OLE DB Provider для SQL Server (SQLOLEDB), который предназначен специально для работы с SQL Server версий 6.5 и 7.0, а также для MSDE. С другой стороны, можно было бы применить Microsoft OLE DB Provider для ODBC (MSDASQL), позволяющий работать с любыми совместимыми с ODBC источниками данных, в том числе и с SQL Server. В поставку Office 2000 вошли также аналогичные продукты для Oracle, Microsoft Index Server, Microsoft Active Directory Service и Jet 4.0, который входит в состав Access 2000.

Метод Open в вызове В Листинга 5 определяет хранимую процедуру в качестве источника записей. Определять тип источника для набора записей не обязательно, но, если это сделать, метод Open данного набора записей будет работать быстрее. К числу других параметров, которые было бы целесообразно включить, относятся adCmdText для строк SQL и adCmdTable для возврата строк из таблицы. (Их можно задействовать вместо adCmdStoredProc в вызове В Листинга 5.) Несмотря на то что устанавливать свойство «Факультативные возможности» (Options) не обязательно, его отсутствие приводит к замедлению работы метода Open.

После того как информация будет извлечена из набора записей, ее необходимо поместить в электронную таблицу. Скопировать значения полей набора записей в электронную таблицу проще всего с помощью свойства Cells объекта Excel Application, позволяющего задать спецификацию строки и столбца в электронной таблице, с которой ведется работа. По окончании размещения данных в электронной таблице следует инициировать метод AutoFit, который настроит размер столбца таким образом, чтобы в нем уместилось наибольшее из введенных значений. В примере из Листинга 5 (вызов С), помимо прочего, произведено выравнивание данных в столбце В по правой границе. Для этого свойству HorizontalAlignment присвоено значение xRight. Наконец, после окончания работы с соединением и при условии, что в ближайшем будущем не возникнет необходимость вернуться к нему, объект Connection следует закрыть и установить ссылку на него в положение Nothing. Это высвободит ресурсы соединения.

SQL Server и Word 2000

Каждый компонент Office 2000 предлагает разработчикам свои уникальные возможности. Пример, приведенный в Листинге 6, касается использования данных из SQL Server в документе Word 2000, причем обрабатывается тот же возвращаемый набор, что и в примере с Excel.

Листинг 6. Метод копирования информации из источника данных SQL Server в Word в виде предложений.

Sub openProcedureOnRemoteServer()
Dim cnn1 As ADODB.Connection
Dim rst1 As ADODB.Recordset
Dim int1 As Integer
Dim strSentence As String

?Установление соединения с базой данных 
`NorthwindCS, расположенной на сервере
`cab2200
 Set cnn1 = New ADODB.Connection
 strCnn = ?Provider=sqloledb;? & _
    ?Data Source=cab2200;? & _
    ?Catalog=NorthwindCS;? & _
  ?User Id=SQLMagUser;Password=sqlmag;?
  cnn1.Open strCnn
    
?Открытие таблицы employees
 Set rst1 = New ADODB.Recordset
 rst1.CursorType = adOpenForwardOnly
 rst1.LockType = adLockReadOnly
rst1.Open ?[Ten Most Expensive 
Products]?, _
     cnn1, , , adCmdStoredProc

?Форматирование и печать цен 10 
продуктов
Selection.Font.Size = 12
If Selection.Font.Bold = True 
Then Selection.Font.Bold = wdToggle
    For int1 = 1 To 10
     strSentence = rst1.Fields(0) & 
	 ? has a unit price ? & _
        ?of $? & rst1.Fields(1) 
	   & ?.? & vbCrLf
        Selection.TypeText strSentence
        rst1.MoveNext
    Next int1

?Вставка и форматирование заголовка
ActiveDocument.Content
.InsertBefore ?These are the 
ten ? & _
     ?most expensive 
    products.? & vbCrLf
    With ActiveDocument.Range
	.Sentences(1)
        .Bold = wdToggle
        .Font.Size = 14
    End With
    
?Закрытие соединения и восстановление 
ресурса
    cnn1.Close
    Set cnn1 = Nothing
    
End Sub
Вместо копирования значений полей базы данных SQL Server в ячейки электронной таблицы в данном примере конструируются целые фразы, содержащие значения элементов набора записей. В этих фразах представляются наименование и цена для 10 самых дорогих продуктов из базы данных NorthwindCS.

Документы Word предлагают два места для хранения кода. Во-первых, код можно хранить в проекте, связанном с данным документом. Такой вариант подходит для тех случаев, когда логика обработки специфична для каждого отдельного документа. Во-вторых, можно поместить код в шаблон Normal.

ЭКРАН 4. Формирование выходных документов на английском языке.
Это следует делать в тех случаях, когда логика обработки единообразна для множества документов. В примере на Экране 4 код хранится в папке ThisDocument в шаблоне Normal. Можно продублировать этот метод хранения, открыв окно Project Explorer в редакторе Visual Basic (VBE) и выбрав папку ThisDocument в шаблоне Normal, как показано на Экране 4. Затем следует набрать или скопировать код в соответствующее окно и нажать кнопку Save Normal, чтобы код был сохранен.

Хотя в документе Word используется тот же самый набор данных, что и в примере с Excel, Word открывает широкие возможности форматирования с применением различных шрифтов, выделением отдельных слов и другими приемами. В отрывке, показанном на Экране 4, сначала устанавливается размер шрифта для объекта Selection. Этот объект представляет собой часть окна выбранного документа. Если была включена опция выделения жирным шрифтом, то приведенная процедура отключает ее. Затем в цикле For... Next применяется метод TypeText для копирования предложений в активный документ и вставки значений полей из последовательных записей в источнике данных SQL Server.

Мощь и функциональность

Итак, мы рассмотрели несколько методик подключения источников данных SQL Server к приложениям Office 2000. Акцент был сделан на использовании ADO, хотя Access 2000 включает помимо него и Access Projects. Появление в Access Projects файлов нового типа не только обеспечивает повышение производительности, но и расширяет круг выполняемых функций. Access Projects позволяет вводить новых пользователей, создавать базы данных и такие их объекты, как таблицы, представления, хранимые процедуры и диаграммы. С помощью кодов ADO и VBA можно усовершенствовать встроенные графические средства.

Компоненты Office с легкостью внедряют данные из источников SQL Server в электронные таблицы, документы и другие объекты Office, например слайды презентаций PowerPoint и папки Outlook.

Комбинация SQL Server и Office 2000 на практике оказывается даже эффективнее, чем показано в данной статье. Новые возможности Office 2000 придают беспрецедентную мощь клиентским приложениям за счет использования данных SQL Server и расширения спектра предлагаемых услуг.

ОБ АВТОРЕ

Рик Добсон (rickd@cabinc.net) возглавляет консалтинговую фирму, специализирующуюся на Microsoft Office и базах данных. Автор книги «Программирование Microsoft Access 2000» («Programming Microsoft Access»), выпущенной издательством Microsoft Press.


Безопасность кодов Access

Access 2000 не гарантирует защиту на пользовательском уровне модулей, которые могут содержать конфиденциальную информацию. Однако для обеспечения защиты данных и ускорения работы можно создать файл проекта Access, файл ADE. Для этого следует последовательно выбрать в меню окна базы данных Access следующие пункты: инструменты (Tools), утилиты баз данных (Database Utilities), создание файла ADE (Make ADE File). Файл ADE компилирует все модули, убирает исходные тексты и сжимает файл базы данных. Помимо этого, команда, применяемая для создания файла ADE, оптимизирует использование памяти. Файл ADE обеспечивает защиту данных за счет того, что в процессе его формирования устраняются исходные коды программ, и тем самым ликвидируется возможность их несанкционированного редактирования. Отсутствие редактируемых исходных текстов обеспечивает также ускорение загрузки и выполнения проекта и позволяет более рационально использовать память.

При работе с файлами ADE необходимо создать резервные копии файлов .ade в файлах .adp. Поскольку файл .ade не содержит редактируемых исходных кодов программ, то при внесении изменений в приложение, работающее как файл .ade, для кодирования этих модификаций потребуется файл .adp. По завершении тестирования всех исправлений следует создать новый файл .ade.