Сегодня ты познакомишься с технологией ADO. Она позволяет эффективно соединяться с таблицами Access, Excel и другими произведениями от Microsoft. То же самое можно было бы сделать и через BDE (как мы делали раньше), но с базами данных от Microsoft лучше работать через ADO (меньше глюков:).
Для начала немного теории. Что такое АDO и зачем она нужна? АDO - это, грубо говоря, та же BDE, только реализация Microsoft. Как ты понимаешь, icrosoft не устроила BDE, поэтому они решили сделать свою библиотеку универсального доступа к базам данных. Я заметил, что Microsoft всегда что-то не устраивает и им обязательно нужно влезть в каждую дырку.
Через ADO, как и через BDE можно подсоединиться к любой базе данных, достаточно иметь соответствующий драйвер. В этом случае твоя программа общается с базой данных через ADO. В этом есть свои преимущества и недостатки. Основное преимущество - к любой базе можно подключиться, используя универсальные функции ADO. Поэтому, если в процессе разработки выясниться, что требуется другое хранилище данных, то не придётся переделывать всю прогу. То же самое относиться к BDE, с которым мы до сих пор работали. Основной недостаток - теряются некоторые специфические возможности базы данных, потому что ADO не может реализовать все особенности Access, Excel, и других баз данных. Ещё один недостаток - с помощью него тяжело создавать новые базы данных или изменять их поля. Иногда это просто невозможно.
У ADO есть одно преимущество перед BDE - драйверы доступа к базам от Microsoft установлены на большинстве компьютеров с Windows, особенно если установлен любой Office, а драйверы и сам BDE встречается очень редко.
Перейдём непосредственно к реализации ADO в Delphi. Для этого нам нужна любая база данных на Access. Я создал такую базу, и её ты сможешь забрать вместе с исходниками сегодняшнего примера для своих извращений в конце статьи.
Рис 1
Устанавливаем на форму ТADOConnection из закладки ADO. Выделяем этот компонент и дважды щёлкаем по свойству ConnectionString. Должна быть выбрана опция "Use connection string" как на рисунке 1.
Теперь жми на пимпу "Build" и перед тобой откроется окно выбора драйвера, (рис 2) в котором показаны все установленные в твоём компьютере. Я буду коннектится с базой Access, поэтому я выбираю драйвер "Microsoft Jet 4.0 OLE DB Provider". Если у тебя установлен Office, то этот драйвер у тебя обязан присутствовать.
Рис 2. Окно выбора драйвера
После выбора драйвера можно смело давить на кнопку "Next" или выбирать закладку "Connection". Перед тобой открывается простенькое окошко, как на рисунке 3. Если ты выбрал другой драйвер, то окошко может отличаться.
Рис 3. Окно выбора файла
В окошке "Select or enter a database name" введи полный путь к базе данных. Если твоя база будет расположена в той же директории, что и прога, то желательно ввести только имя базы, без полного пути. В этом случае ты избавишься от болезни выходного отверстия при переносе проги в другую директорию или другой комп. Иначе, тебе придется перекомпилировать прогу или программно корректировать строку коннекта.
Больше ничего не надо менять, а просто нажать ОК. Для любопытства можно полазить по другим закладкам этого окна, но я не думаю, что ты найдёшь что-нибудь полезное. Поэтому закрывай его и давай двигаться дальше.
Теперь поставим на форму ТADOTable и старый - добрый ТDataSource. У ТADOTable в строке Connection укажем созданный нами ADOConnection1. Можно и не указывать, а просто ещё раз заполнить строку ConnectionString у ТADOTable, но это не желательно, потому что имя базы может измениться и тебе придётся у всех компонентов менять свойство ConnectionString. А так нужно поменять только у ADOConnection1. У DataSource1 свойство DataSet установим в ADOTable1.
Теперь возвращаемся в ADOConnection1 и меняем свойство LoginPrompt в FALSE. Это нужно, чтобы не было занудного окна о вводе пароля. После этого в ADOTable1 выбираем в свойство TableName имя таблицы внутри базы данных. Если ты уже работал с Access, то знаешь, что внутри одного файла моет находиться несколько таблиц. До сих пор мы указали только имя файла, а теперь указывает имя таблицы на которую будет ссылаться ADOTable1. Теперь можно устанавливать свойство Active у ADOTable1 в TRUE.
Всё!!! Остальная работа будет происходить также как и с простыми таблицами, с которыми мы уже работали. Чем мне нравится Delphi, так это тем, что не надо особо переучиваться. ТADOTable имеет похожие свойства и методы как и у простого ТTable.
Всё, качай исходник и выделывайся над ним как хочешь. Для удобства я поставил на него DBGrid, так что тебе будет над чем пострадать этой ночью.