При работе с базой данных пользователя, как правило, интересует не все ее содержимое, а некоторая конкретная информация. Найти нужные сведения можно последовательным просмотром записей. Однако такой способ поиска неудобен и малоэффективен.
Большинство систем управления базами данных позволяют произвести выборку нужной информации путем выполнения запросов. Пользователь в соответствии с определенными правилами формулирует запрос, указывая, каким критериям должна удовлетворять интересующая его информация, а система выводит записи, удовлетворяющие запросу.
Для выборки из базы данных записей, удовлетворяющих некоторому критерию, предназначен компонент Query/
Компонент Query похож на компонент Table, но, в отличие от последнего, он представляет не всю базу данных (все записи), а только ее часть — записи, удовлетворяющие критерию запроса.
В табл. 1 перечислены некоторые свойства компонента Query.
Таблица 1 -Свойства компонента Query
Свойство
Определяет
Name
SQL
Active
Имя компонента. Используется компонентом Datasource для связи результата выполнения запроса (набора записей) с компонентом, обеспечивающим просмотр записей, например DBGrid
Записанный на языке SQL запрос к базе данных (к таблице)
При присвоении свойству значения True активизирует выполнение запроса
Для того чтобы во время разработки программы задать, какая информация будет выделена из базы данных в результате выполнения запроса, свойство SQL должно содержать представленный на языке SQL запрос на выборку данных.
В общем виде запрос на выборку из таблицы данных выглядит так:
SELECTСписок-Полей FROMТаблица WHERE(Критерий) ORDER BYСписокПолей
где:
SELECT — команда выбора записей из таблицы и вывода содержимого полей, имена которых указаны в списке;
FROM — параметр команды, который определяет имя таблицы, из которой нужно сделать выборку;
WHERE — параметр, который задает критерий выбора. В простейшем случае критерий — это инструкция проверки содержимого поля;
ORDER BY - параметр, в соответствии с которым будут упорядочены записи, удовлетворяющие критерию запроса.
// щелчок на кнопке Запрос
procedure TForm1.Button1Click(Sender: TObject);
var
buf: string[30]; // критерий запроса
begin
buf := InputBox('Выборка информации из БД',
'Введите фамилию и щелкните на кнопке OK','');
if buf = '' then exit;
// пользователь ввел критерий запроса
with Query1 do begin
Close; // закрыть рез-т выполнения предыдущего запроса
SQL.Clear; // удалить текст предыдущего запроса
SQL.Add('SELECT Fam, Name, Tel, Email');
SQL.Add('FROM ":adrbook:adrbook.db" ');
SQL.Add('WHERE');
SQL.Add('(Fam ="' + buf + '")');
SQL.Add('ORDER BY Fam, Name');
Open; // выполнить запрос
if RecordCount <> 0
then // отобразить результат выполнения запроса
DataSource1.DataSet := Query1
else
ShowMessage('В БД нет записей, удовлетворяющих' +
#13 + 'критерию запроса.');
end;
end;
// щелчок на кнопке Все записи
procedure TForm1.Button2Click(Sender: TObject);
begin
DataSource1.DataSet := Table1; // источник данных - таблица