В этой статье рассмотрим задачу выборки записей из БД, применив компонент ADOQuery. Подключение и взаимодействие с базой данных уже рассмотрено в одной из предыдущих статей. Поэтому здесь на этом останавливаться не будем.
Для работы с запросами в Delphi по технологии ADO используется компонент ADOQuery. Что касается подключения компонента, работа с ним подобна работе с ADOTable. Ему так же необходимо указать ADOConnection, подключенный к БД (можно так же настроить свойство подключения к БД ConnectionString). Для отображения на форме данных ему так же нужен компонент DataSource, подключаемый к компонентам отображения и управления данными из закладки палитры Data Controls (DBGrid, DBEdit и другие).
В отличие от ADOTable, запрос не содержит свойств для выбора таблицы, которую он будет отображать. Вместо этого он имеет поле SQL, которое должно содержать текст 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; // переход к предыдущей записи
Закрытие формы нажатием Escape в Delphi
Описание компонента Delphi StringGrid
Функция DeleteFile в Delphi, описание и примеры
Антон Сенников
- 16 ноября 2020, 13:19 ↓В статье приведен простейший пример реализации поставленной задачи. Ваше дополнение несомненно позволит программисту выбрать более подходящее решение для своих задач.
Олег
- 12 ноября 2020, 10:39 ↓ADOQ.Parameters.ParseSQL(ADOQ.SQL.Text, True);
ADOQ.Parameters.ParamByName('pID').Value := Value
неведомы?