Технология Microsoft ActiveX Data Objects (ADO) представляет собой универсальный механизм доступа к различным источникам данных из приложений баз данных. Для обеспечения доступа приложения к данным достаточно лишь правильно указать провайдер соединения ADO и затем переносить программу на любой компьютер, где имеется требуемая база данных и, конечно, установленная ADO.
В соответствии с терминологией ADO, любой источник данных называют хранилищем данных. Приложение взаимодействует с хранилищем данных с помощью провайдера. Для каждого типа хранилища данных используется свой провайдер ADO. Провайдер обеспечивает обращение к данным хранилища с запросами, интерпретацию возвращаемой служебной информации и результатов выполнения запросов для передачи их приложению.
В системе программирования Delphi компоненты, используемые для создания приложений по технологии ADO, расположены на странице ADO Палитры компонентов <Рисунок1>.
Рисунок1. Страница ADO Палитры
компонентов.
Охарактеризуем кратко назначение компонентов данной страницы, необходимых для осуществления подключения к базе данных, разработанной в Microsoft Access:
ADOConnection – ADO-соединение, используется для установки соединения с ADO-источником данных и обеспечивает поддержку транзакций;
ADOTable – таблица ADO, обеспечивает доступ к одной таблице ADO-источника данных и позволяет другим компонентам управлять этими данными, связываясь с компонентом ADOTable через компонент DataSource.
При использовании компонента доступа ADOTable к данным по технологии ADO установление соединения с хранилищем данных можно выполнить с помощью компонента ADOConnection, для которого с помощью его свойства ConnectionString нужно установить соединение с хранилищем данных.
Рассмотрим технологию установления соединения с хранилищем данных с помощью свойства ConnectionString. Это свойство представляет собой строку с параметрами соединения, отделяемыми друг от друга точкой с запятой. Предварительно компонент соединения (ADOConnection) должен быть помещен на форму приложения. Настройка параметров соединения происходит в диалоге <Рисунок2>, открываемом двойным щелчком в строке ConnectionString свойства соответствующего компонента доступа к данным в окне Инспектора объектов.
Рисунок2. Первое окно настройки строки соединения.
При установке переключателя Use Connection String выполняются действия по созданию строки соединения. Для продолжения выбранного варианта диалога нужно нажать кнопку Build. В результате открывается окно Data Link Properties, содержащее 4 вкладки. С помощью вкладки Provider <Рисунок3> осуществляется выбор провайдера с учетом характера решаемой задачи. Для соединения с данными СУБД Microsoft Access необходимо выбрать Microsoft Jet OLE DB Provider.
Рисунок3. Вкладка Provider окна настройки
соединения.
При нажатии на кнопку Next происходит переход на вкладку Connection <Рисунок4>.
Рисунок4. Вкладка Connection окна настройки
соединения.
На вкладке Connection можно указать имя базы данных, имя пользователя и пароль (для защищенных баз данных). Нажав кнопку Test Connection, можно проверить правильность функционирования соединения. Далее можно нажатием кнопки ОК установить строку соединения, либо перейти на остальные две вкладки.
На вкладке Advanced в поле Network Settings задается уровень защиты при сетевом доступе к базе данных. В поле Connect timeout задается предельное время ожидания соединения в секундах. В списке Access permissions для определения прав доступа задается перечень допустимых операций: Read– только чтение; ReadWrite – чтение и запись; Share Deny None – нет запрета на чтение и запись; Share Deny Read – запрещено открытие для чтения; Share Deny Write - запрещено открытие для записи; Share Exclusive – эксклюзивное (монопольное) использование; Write – только запись.
На вкладке All диалогового окна настройки можно просмотреть и отредактировать параметры соединения, заданные с помощью других вкладок.
В случае использования компонента ADOConnection для активизации соединения после настройки достаточно установить свойству Connected этого компонента значение True или при выполнении приложения выбрать метод Open.
В случае использования компонента доступа к данным ADOTable для активизации соединения после настройки используют свойство Active.
Для обеспечения доступа к таблицам хранилищ данных по технологии ADO служит компонент ADOTable. Для установки соединения с хранилищем данных этого компонента через провайдеры ADO служит свойство ConnectionString или Connection. Для управления набором данных таблицы в приложение включает компонент источника данных DataSource. При этом свойству DataSet этого компонента в качестве значения задается имя компонента ADOTable. Для отображения данных таблицы к источнику данных подключаются различные компоненты отображения, к примеру, DBGrid.
После установления связи компонента ADOTable с хранилищем данных с помощью свойства TableName типа WideString задается имя таблицы или запроса.
Для осуществления транзакций над данными (добавления, удаления, изменения и др.) используется компонент DBNavigator, в свойстве DataSource которого выбираем DataSource1.
Для осуществления поиска по какому-либо полю необходимо на форму поместить одну кнопку (Button), два поля (Edit) и две метки (Label), находящихся на вкладке Standard. Затем выделяем метку напротив первого поля, в свойстве Caption устанавливаем значение «ПОЛЕ», напротив второго - «ЗНАЧЕНИЕ». В свойстве Caption для кнопки введем «ПОИСК» и у полей свойство Text делаем пустым. После чего двойным щелчком по кнопке Поиск открываем Unit и после begin пишем:
if Form1.ADOTable1.Locate (Form1.Edit1.Text, Form1.Edit2.Text, [loCaseInsensitive]) =true
then ShowMessage('Finding!');
Свойство Locate компонента ADOTable используется для осуществления поиска. В данном случае его параметрами будут Edit1 (ПОЛЕ) и Edit2 (ЗНАЧЕНИЕ), а также loCaseInsensitive для точного совпадения.
Для осуществления сортировки помещаем на форму метку, в свойстве Caption устанавливаем значение «СОРТИРОВКА». Напротив метки помещаем две кнопки: у первой в свойстве Caption вводим «ПО ВОЗРАСТАНИЮ», у второй - «ПО УБЫВАНИЮ». После двойного щелчка по кнопке По возрастанию открываем Unit и после begin пишем:
Form1.ADOTable1. Sort:=Form1.Edit1.Text+' ASC';
Параметр Sort компонента ADOTable отвечает за сортировку. Присваивание ему поля Edit1 означает, по какому полю будет осуществляться сортировка, а параметр ASC отвечает именно за сортировку по возрастанию.
Аналогично выполняем сортировку по убыванию, после двойного щелчка по кнопке По убыванию, только вместо параметра ASC пишем DESC, который отвечает за сортировку по убыванию.
Для осуществления фильтрации на форму помещаем две кнопки, в свойстве Caption для первой пишем «ФИЛЬТР», для второй - «СНЯТЬ ФИЛЬТР». После двойного щелчка по кнопке «ФИЛЬТР», в unit после begin пишем:
Form1.ADOTable1.Filter:=Form1. Edit1.Text+' = '+QuotedStr (Form1. Edit2.Text);
Form1.ADOTable1. Filtered:=true;
Свойство Filter компонента ADOTable отвечает за осуществление фильтрации. Присваивание ему значения из Edit1 будет означать, что именно по этому полю будет осуществляться фильтр. Функция QuotedStr переводит введенную строку в читабельную для машины строку. Строка Form1.ADOTable1.Filtered:=true; отвечает за включение самого фильтра.
Для осуществления снятия фильтра после двойного щелчка по кнопке «СНЯТЬ ФИЛЬТР» в unit после begin пишем:
Form1.ADOTable1. Filtered:= false;
Эта строка собственно служит для отключения фильтра.
Таким образом, используя средства Delphi с помощью технологии ADO, создается внешнее приложение для базы данных, разработанной в Microsoft Access с предусмотренной возможностью добавления, удаления, изменения записей, поиска данных, фильтрации и сортировки.