Запросы на выборку из БД в Delphi с использованием компонента ADOQuery

MR_smoker

Арбитр
АРБИТРАЖ
ПРОВЕРЕННЫЙ ПРОДАВЕЦ
ЮБИЛЕЙНАЯ ЛЕНТА

MR_smoker

Арбитр
АРБИТРАЖ
ПРОВЕРЕННЫЙ ПРОДАВЕЦ
ЮБИЛЕЙНАЯ ЛЕНТА
Регистрация
20 Июн 2018
Сообщения
1,734
Реакции
632
Репутация
39
Род занятий

Отрисовка документов

В этой статье рассмотрим задачу выборки записей из БД, применив компонент ADOQuery.

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

уже рассмотрено в одной из предыдущих статей. Поэтому здесь на этом останавливаться не будем.
Для работы с запросами в Delphi по технологии ADO используется компонент ADOQuery. Что касается подключения компонента, работа с ним подобна

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

. Ему так же необходимо указать ADOConnection, подключенный к БД (можно так же настроить свойство подключения к БД ConnectionString). Для отображения на форме данных ему так же нужен компонент DataSource, подключаемый к компонентам отображения и управления данными из закладки палитры Data Controls (DBGrid, DBEdit и другие).
В отличие от ADOTable, запрос не содержит свойств для выбора таблицы, которую он будет отображать. Вместо этого он имеет поле SQL, которое должно содержать текст

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

к БД для выбора необходимых данных.
Статический запрос
Для получения содержимого таблицы следует указать следующие поля ADOQuery:
Connection – выбрать из списка настроенное подключение к БД.
SQL – ввести текст любого SQL-запроса, например: "SELECT * FROM mytable".
Active – присвоить значение True.
Если при присвоении свойству Active, сведений об ошибках не было выведено, значит все выполнено правильно и далее можно пользоваться ADOQuery, как обычной таблицей для вывода его данных (вывод осуществляется аналогично таблице через компонент DataSourcе, например, в DBGrid).
Плюс запроса в том, что в нем можно сформировать нужную выборку сразу из нескольких таблиц. Здесь можно так же применить сортировку и группировку данных.
Динамическое изменение запроса во время исполнения программы
Если в процессе работы программы, текст SQL-запроса нужно переписывать, как, например, при указании условия выборки, то можно просто программно управлять режимом исполнения запроса и содержимым его поля SQL.
Для этого применяется следующий код:
MyADOQuery.Active := false; // отключаем запрос, если он был включен
MyADOQuery.SQL.Clear; // удаление предыдущего текста запроса

// новый запрос – код подставляется из поля Edit
mySQL := 'SELECT * FROM myTable WHERE id = ' + myEdit.text;

MyADOQuery.SQL.Add(mySQL); // добавление нового текста запроса
MyADOQuery.Active := True; // включение запроса
Программная работа с результатами запроса
Если результат запроса нужно не просто вывести, а выполнять с ним какую-то работу непосредственно в коде, то обратится к ним через свойство Fields. Например, код:
ShowMessage(MyADOQuery.Fields[0].AsString);
выведет во всплывающем окне содержимое первого поля текущей записи.
Fields[номер поля] – указывает номер столбца в сформированной запросом таблице. Самое первое будет нулевое.
AsString – указывает, что тип возвращаемого значение будет строковый. Аналогично можно указать AsInteger, чтобы получить числовое значение.
Перемещение по записям выполняется аналогично программному переходу в таблицах:
MyADOQuery.First; // переход к первой записи
MyADOQuery.Last; // переход к последней записи
MyADOQuery.Next; // переход к следующей записи
MyADOQuery.Prior; // переход к предыдущей записи
 
Сверху