SELECTFam, Name FROM ":Школа:school.db" WHERE

(Fam > 'K') and(Fam < 'Л') ORDER BY Name, Fam

забезпечує вибір інформації про учнів, прізвища яких починаються на букву До.

Запит може бути сформований і записаний у властивість SQL під час розробки форми або під час роботи програми.

Для запису запиту у властивість SQL під час розробки форми використовується редактор списку рядків (мал. 17.18), вікно якого відкривається в результаті клацання на кнопці з трьома крапками в рядку властивості SQL вікна Object Inspector.

Мал. 18. Приклад запиту до бази даних "Школа"

Властивістю SQL є список рядків. Тому щоб сформувати запит під час роботи програми, потрібно, використовуючи метод Add, додати рядки (SQL-инструкции) в список SQL.

Нижче приведений фрагмент коду, який формує запит на пошук інформації про конкретну людину (критерій вибору — вміст поля Fam повинен співпадати із значенням змінної fam).

Withforml.Queryl do begin

Close; // закрити файл — результат виконання

// попереднього запиту

SQL.Clear; // видалити текст попереднього запиту

// записуємо новий запит у властивість SQL

SQL.Add('SELECT Fam, Name, Class1);

SQL.Add('FROM ":Школа:school.db"');

SQL.Add('WHERE');

SQL.Add('(Fam = '" + fam + '")');

SQL.Add('ORDER BY Name, Fam');

Open; // активізуємо виконання запиту

end;

Наступна програма, її текст приведений в лістингу 2, а діалогове вікно — на мал. 19, демонструє можливість зміни запиту, точніше, критерію запиту, під час роботи програми. Програма забезпечує виведення як всього списку учнів, так і його частини. Наприклад, за допомогою виконання запиту виводиться інформація тільки про конкретного учня.

Для проглядання бази даних і результату виконання запиту використовується компонент DBGrid1, який через компонент DataSourcel взаємодіє з компонентом Table1 (при прогляданні всієї бази даних) або з компонентом Query (при прогляданні результату виконання запиту).

Мал. 19. Форма додатку База даних Школа

Лістинг 2. База даних "Школа"

unitschool2_;

interface

uses
Windows, Messages, SysUtils, Classes

Graphics, Controls, Forms

Dialogs,Grids, DBGrids, Db

DBTables, ExtCtrls, DBCtrls, StdCtrls;

type
TForm1 = class(TForm)
Table1: TTable; // таблиця (вся база даних)
Query1: TQuery; // запит (записи БД, що задовольняють критерію вибору)
DataSource1: TDataSource; // джерело даних - таблиця або запит
DBGrid1: TDBGrid; // таблиця для відображення БД або результату виконання запиту
DBNavigator1: TDBNavigator;
DBText1: TDBText;
Button1: TButton; // кнопка запит
Button2: TButton; // кнопка Всі записи
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
private
Private declarations }public
Public declarations }end;

var
Form1: TForm1;

implementation

{$R *.DFM}

// клацання на кнопці Запит
procedure TForm1.Button1Click(Sender: TObject);
var
fam: string[30];
begin
fam:=InputBox('Вибірка інформації з БД',
'Вкажіть прізвище і клацніть на OK.', '');
if fam <> '' // користувач ввів прізвище
then
begin
with form1.Query1 do begin
Close; // закрити файл-результат виконання попереднього запиту
SQL.Clear; // видалити текст попереднього запиту
// записуємо новий запит у властивість SQL
SQL.Add('SELECT Fam, Name, Class');
SQL.Add('FROM ":Школа:school.db"');
SQL.Add('WHERE');
SQL.Add('(Fam = "'+ fam + '")');
SQL.Add('ORDER BY Name, Fam');
Open; // активізуємо виконання запиту
end;

{ *** інший варіант зміни критерію запиту
begin
Query1.Close;
Query1.SQL[3]:='(Fam="'+ fam + '")';
Query1.Open;
DataSource1.DataSet:=Query1;
end;
if Query1.RecordCount <> 0 then
DataSource1.DataSet:=Query1 // відобразити рез-т виконання запиту
else begin
ShowMessage('У БД немає записів, що задовольняють критерію запиту.');
DataSource1.DataSet:=Table1;
end;
end;
end;

// клацання на кнопці Всі записи
procedure TForm1.Button2Click(Sender: TObject);
begin
DataSource1.DataSet:=Table1; // джерело даних - таблиця
end;

// активізація форми
procedure TForm1.FormActivate(Sender: TObject);
begin
DataSource1.DataSet := Table1;
Table1.Active := True;
end;

End.

Процедура TForm1.Button1Click запускається клацанням кнопки Запит.Вона приймає від користувача рядок (прізвища) і записом (додаванням) рядків у властивість SQL формує текст запиту. Потім ця процедура викликом методу Open активізує виконання запиту.

Слід звернути увагу на те, що перед зміною властивості SQL-запрос повинен бути закритий за допомогою методу close (тут треба пригадати, що результат виконання запиту — це файл даних (таблиця), який створюється в результаті виконання запиту).

Процедура TForm1.Button2Click, яка запускається клацанням кнопки Всі записи,встановлює як джерело даних для компоненту DataSourcel компонент Table1, тим самим забезпечуючи перехід в режим проглядання всієї бази даних.

Якщо запит записаний у властивість SQL під час розробки форми додатку, то під час роботи програми критерій запиту можна змінити простій заміною відповідного рядка тексту запиту.

Наприклад, для запиту