Всем привет, и вот мой первый урок, думаю урок полезный, так как работа с базами данных в Delphi очень важно, а тем более Access на мой взгляд самая легкая база данных, с которой можно работать в Delphi. В этой статье я расскажу Вам как эту самую Базу данных Access подключить в Delphi, ну а в последующих статьях мы рассмотрим как добавлять информацию, редактировать, удалять и так далее, и Вы убедиться потом что ничего сложного в этом нету. Для начала запустим Delphi. Создадим новое приложение File-New-Application, думаю здесь объяснять долго ничего не надо. Что делаем далее, на нашу главную форму «ставим» следующие компоненты

  • TDBGrid
  • TDataSource
  • TADOConnection
  • TADOQuery

Итак теперь по компонентам:

TDBGrid находиться на вкладке DataControls, предназначен для отображения данных БД в нашей программе (приложении)

TDataSource находится на вкладке Data Access, предназначен для связи нашей сетки отображения данных, с самой БД

TADOConnection находится на вкладке ADO, предназначен для подключения нашей БД по определенному провайдеру

TADOQuery находится также на вкладке ADO, предназначен для получение нужных результатов из нашей БД.

Ну по компонентам немного прошлись, свойства я их не рассказываю, так как пока что не об этом, но дальше будет интереснее. Далее нам необходимо создать Базу данных в MS Access. А как же без нее, думаю как создать примитивную БД в MS Access труда не составит, я создам БД и таблицу с полями

  • ФИО — строковый тип данных (fio)
  • оценка — числовой тип данных (oz)

И назову ее Student, сохраним нашу БД в нужное место и продолжим дальше, ах да ну и заполните вашу таблицу какими-нибудь данными. А теперь мы «свяжим» все необходимые компоненты, которые находятся на нашей главной форме

TADOQuery в свойстве Connection я «связываю» с TADOConnection из выпадающего списка я выбираю имя данного компонента.

TDataSource в свойстве DataSet я «связываю» с TADOQuery из выпадающего списка я выбираю имя данного компонента

TDBGrid в свойстве DataSource я «связываю» с TDatasource из выпадающего списка я выбираю имя данного компонента.

Вот и все пол-дела сделано!!! Все свойства, с которыми мы связывали компоненты, они все ну красноватого цвета, так что Вы не ошибетесь.

Далее выделяем компонент TADOConnection и в свойстве LoginPromt ставим на False. Это делаем для того, чтобы при подключении к БД у нас не запрашивался пароль, дальше в свойстве ConnectionString нажимаем на кнопку с «…» и появляется окно следующего вида:

В данном окне нажимаем на кнопку «Build…» и появляется коно следующего вида:

В данном окне мы выбираем провайдера, а именно Microsoft Jet 4.0 OLE DB Provaider и нажимаем кнопку «Далее«.

В данном окне мы указываем путь к нашей БД и имя пользователя по умолчанию Admin. Если ваша БД находится в корневом каталоге с программой, то в данном поле достаточно указать ее имя с расширением, а если еще в подкаталоге, то указывается это примерно так BD\mydb.mdb

Почти все закончили осталось только нажать кнопку «Ок» и в свойстве компонента TADOConnection — Mode выбрать из выпадающего списка cmShareDenyNone.

Вот и все подключение у нас организовано теперь нам осталось только отобразить наши данные в таблице. Для этого в событии нашей главной формы OnCreate напишем следующее

procedure TForm1.FormCreate(Sender: TObject);
begin
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT * FROM Student');
ADOQuery1.Active:=True;
end;

Что мы в этом коде делаем, обычный запрос к нашей таблице Student, как мы и называли ее. То есть мы запрашиваем у нее этим запросом все поля с данными и после этого просто активируем наш запрос, чтобы данные отобразились с помощью свойства Active

Исходники с базой данных скачать можно тут

А Вы знаете, вообще сколько существует форматов графики и чем они друг от друга отличаются. Одним из форматом графики, а точнее формат растровой графики является формат bitmap, про который следует прочитать и ознакомиться с ним, а также произвести сравнения с другими форматами графики.

В следующем уроке по базам данных мы поговорим как добавлять, редактировать, удалять и корректировать информацию в Delphi в БД MS Access

Автор статьи - Andrey53

Метки: , , , , , , ,




К записи “Работа с ADO в Delphi. Часть 1” оставлено комментариев: 63.

  1. А где второй урок?

  2. Андрей:

    спасибо)

  3. яка:

    из 7 делфи мона работать с аксессом 2007?

  4. Надежда:

    а почему ссылка с исходниками http://devdelphi.ru/files/student.rar мертвая?

  5. Надежда:

    procedure TForm1.FormCreate(Sender: TObject);
    begin
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add(‘SELECT * FROM Student’);
    ADOQuery1.Active:=True;
    end;

    у меня такой вариант почему-то не заработал:-\

    пришлось создавать отдельную процедуру:

    procedure TForm1.AdoActive(Sender: TObject);
    begin
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add(‘SELECT * FROM Student’);
    ADOQuery1.Active:=True;
    end;

    и вставлять её в код программы уже после создания формы:
    begin
    Application.Initialize;
    Application.CreateForm(TForm1, Form1);
    Form1.AdoActive(Form1);
    end.

    может подскажете где моя ошибка?

    • Andrey53:

      напишите тогда, на событие OnShow формы, потому что так трудно сказать где может ошибка, необходим весь исходник Ваш

  6. […] Теперь давайте настроем немного наши компоненты. Выделяем компонент TADOConnection и свойство LoginPromt устанавливаем в False. Затем, через свойство ConnectionString, подключаемся к нашей БД. Как это сделать, можно посмотреть здесь. […]

  7. […] к нашей БД, как это делать, мы рассматривали в статье, так что заострять внимание на этом, я не буду. Далее, […]

  8. […] к нашей БД, как это делать, мы рассматривали в данной статье, а также необходимо связать между собой компоненты. […]

  9. […] поводу подключения к БД, смотрим статью. Ну, а дальше самое интересное. Нам необходимо связать […]

  10. […] к нашей БД, как это делать, мы рассматривали в данной статье . После этого, как у нас всего готова, необходимо […]

  11. […] к нашей БД, как это делать, я рассматривал в данной статье. Делаем все тоже самое, по […]

  12. Olga:

    как создать многопользовательское приложение?
    как свзять приложение с базаой данных , если оно на другом компе?

  13. Ирина:

    Спасибо огромное!!!!! Это ровно то, что я искала в долбаных учебниках! Мои Вам благодарности ))))

  14. Сергей:

    У меня проблема не создать БД, а влезть в уже существующую. Я уже перепробывал массу вариантов и увы. В данном случае при некоторых изменениях Вашего кода я получаю сообщение «C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\Global.mdf уже существует. Выберите другое имя БД » Но мне нужно влезть именно в эту базу. Да я не сказал, что она типа MDF и поставщика мне пришлось выбрать Microsoft OLE DB Provider for SQL Server. База рабочая т.к. с помощью SQL Servera я в нее влезаю. Я Вас очень прошу помогите. Моя почта vzvzvzsr@mail.ru мой тел 916 142 7292 Сергей наверное Александрович т.к. я уже старый.

  15. Vladimir:

    Прочитал все ваши статьи по ADO с большим удовольствием и принялся за дело как говорится с нуля. Но возникла проблема — кидая компоненты на форму все получается, но я решил использовать DataModule для размещения DataSource, ADOConnection, ADOQuery а на основной форме расположить DBGrid и теперь у меня выскакивает: access violation at address 004bb187 in module ….exe read at address 0000060, соответственно в DBGrid ничего из БД не подгружается(( но стоит только убрать снова DataModule и набросать на форму компоненты — как все снова работает.
    Подскажите пожалуйста в чем может быть проблема?

  16. Баур:

    Добрый день! подскажите пожалуйста не могу разобраться. В Аксесс есть две таблицы. с таблицы «вид работы» у меня отображается поле «наименование дорог» в DBLookUpCombobox1 (у каждого наименование есть свой шифр) вторая таблица «техника» (тоже есть шифры которые совпадают с шифрами с поле «наименование дорог») как мне сделать запрос в DBLookUpCombobox2 чтоб при выборе наименование дороги где шифр допустим 22, выходит техника с шифром 22. или хотя бы какой ни будь пример… помогите пожалуйста.. буду признателен….
    СПАСИБО!

  17. Айгуль:

    спасибо автору)
    все понятно!))

  18. митя:

    здравствуйте, у меня вопрос.
    Можно ли колонку «Описание» из аксесса как-то отобразить в делфи?
    (на всякий случай: колонка описание находится справа от колонок «имя поля» и «тип данных»)

    • Andrey:

      Вот что только нашел

      ADOConnection1.OpenSchema(siColumns, EmptyParam, EmptyParam, ADODataSet1);
      ADODataSet1.Open;
      ADODataSet1.Locate(‘TABLE_NAME;COLUMN_NAME’, VarArrayOf([‘Имя таблицы]’,’Имя поля’]), []);

      и в качестве вывода описания

      showmessage(ADODataSet1.FieldByName(‘DESCRIPTION’).asString);

  19. Виктор:

    Скажите пожалуйста, я создал 2 связанные между собой таблицы в Аксесе и мне нужно их отобразить в Делфи. Для этого мне нужно отдельно Connection и Query кидать на форму или можно использовать теже только поменя где-то значения?
    И ещё вопрос, сохранится ли связь?

  20. topdon:

    Андрей, нужна подсказка!
    Я хочу в dxDBTreeView динамически перенастроить запрос ADOQuery1
    и пересоздать дерево. с этой целью

    With ADOQuery1 do begin
    Close;
    SQL.Clear; <—здесь ругает Нельзя выполнять операцию над
    закрытым dataset!
    Open;
    ShowMessage ('Two');
    SQL.Add('select * from themes');
    ShowMessage ('Tree');
    Active := True;
    end;
    // настройка дерева
    with dxDBTreeview1 do begin
    DisplayField := 'name';
    KeyField := 'id';
    ListField := 'linkid';
    ParentField := 'linkid';
    end;
    Какова же правильная последовательность операций?

    • Andrey:

      а у Вас AdoQuery активрованный? его надо активировать прежде чем выполнять какие-то запросы и делать что-либо с ним.
      AdoQuery1.Active:=True;

  21. […] сейчас интересует ado delphi который мне нужно понять как […]

  22. Святослав:

    Добрый день.
    Подскажите, пожалуйста, вдруг кто сталкивался со следующей задачей:
    В Access 2007 (2010) организована БД. В одной из таблиц с названием «Свод» есть поле «Файлы» типа «Вложение» (подробности о типе — http://office.microsoft.com/ru.....13852.aspx).
    С помощью описания, представленного на этом сайте, удалось построить интерфейс для работы с этой БД, используя провайдер http://www.microsoft.com/en-us.....x?id=13255 для работой с БД. Однако никак не удаётся решить вопрос по скачиванию файлов из БД в соответствии с полученной выборкой. Дело в том, что единственный способ загрузки файлов, найденный мной, использует технологию не ADO, а DBO (http://it-profity.ru/delphi-i-.....tachments/ + unit Dao120Api с сайта http://kadao.dir.bg/). Однако одновременное использование этих технологий невозможно.
    Как быть? Существует ли решение вопроса через ADO?

    • Andrey:

      А почему Вы не хотите использовать Blob поле?

      • Святослав:

        Добрый день. Андрей, на сколько я понимаю Blob-поле — это тип данных СУБД Interbase. А у нас используется БД Access.

        • Святослав:

          И второй момент. Поле типа вложение имеет в себе список файлов. А то же поле типа «Поле объекта OLE» в Access, которое является аналогом Blob, позволяет загрузить в него только 1 файл.

        • Andrey:

          Поле объекта OLE может выступать в MS Access как BLOB-поле

          • Святослав:

            Андрей, а как быть с загрузкой нескольких файлов (через вспомогательную таблицу?). Хорошо я попробую. Но всё же. Существует ли ответ на первоначальный вопрос именно в такой постановке? Без использования Blob?

          • Andrey:

            я так думаю, что с типом Вложение в MS Access можно работать как с BLOB-полем, и вытаскивать оттуда информацию именно как из BLOB-поля

  23. […] данных SQL , но мало кто пробовал использовать связку delphi и access, что тоже довольно интересно, ведь Microsoft access базы, […]

  24. […] Работа с базами данных ado delphi руководство по применению AKPC_IDS += "388,";Popularity: unranked […]

  25. […] к нашей Базе данных. Как это делается я описывал в статье. После того, как мы соединились с нашей Базой данных, […]

  26. bcook:

    Здравствуйте Андрей!

    Подскажите, подключаюсь к DBF — Файлы dBase (получилось)
    (Visual Foxpro Tables ругался)

    Таблица загрузилась в грид, но русский текст абаракадаброй — Tшыър -ы  Tшьюэр,

    Как установить кодовую страницу для правильного отображения?

    • Andrey:

      Здравствуйте, запускаете BDE Administrator, заходите во вкладку Configuration, затем System-INIT и выставляете кодовую страницу, но для DBF-таблиц, советую использовать компонент TDBF

  27. Вероника:

    Очень полезная статья,спасибо большое!Вы даже не представляете как помогли!

  28. свой пример для доступа к базе данных MS SQL описал в сводной статье http://fk-uran.com.ua/programm.....ssbuilder/ .

  29. Катерина:

    Подскажите, а как соединить делфи с удалённой базой? Куда записать IP и порт сервера?

  30. user:

    можно ссылку на второй урок ?

  31. Шынгыс:

    Здравствуйте Админ! У меня маленькая задача который ни как не могу решить. Можете помочь? Есть таблица1 с данными ФИО Дата_рождения Пол Льготы Дата_поступление Курс и отсюда надо вычислить сколько студентов по таким то льготам с такого пола из курсов (1-го, 2-4 и выпущенного) Плииииииз пожалуйста а а а а! Очень срочно! И если можно то откликнитесь в почту

    • Andrey:

      Надо просто обычный запрос SQL написать, что-то типа

      SELECT * FROM Student WHERE pol=’м’ and lgot=’20’

      а количество можно вытащить из RecordCount

  32. Шынгыс:

    ауууу Андреййй

  33. Шынгыс:

    Здравствуйте! Я на Вашу почту отправил пример проекта! Посмотрите?!

  34. Шынгыс:

    Andrey я уже на Вашу почту скинул примерку, посмотрите пожалуйста!

  35. Шынгыс:

    Аууууу господин Админ

Оставить комментарий

Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

*