SQL Surovlar hosil qilish
Zamonaviy ma’lumotlarni boshqarish tizimlari kerakli ma’lumot-larni so‘rovlar yordamida tanlab orlishga imkon beradi. Foydalanuvchi ma’lum qoidalarga asosan so‘rov hosil qiladi, tizim bo‘lsa shu so‘rovga mos keluvchi yozuvlarni ajratib beradi.
Ma’lum talablarga javob beruvchi yozuvlarni ajratib olish uchun Query komponentasidan foydalaniladi.
Query komponentasi xossalari:
Xossa
|
Ta’rifi
|
Name
SQL
Active
|
Komponenta nomi. Datasource komponentasi tomonidan so‘rov natijalarini, yozuvlarni ko‘rishga imkon beruvchi komponentalar, misol uchun DBGrid Bilan bog‘lash uchun ishlatiladi.
SQL tilida yozilgan so‘rov.
Xossaga True kiymati berilganda so‘rovni bajarish aktivlashadi
|
Umumiy holda jadvaldan yozuvlarni tanlash uchun so‘rov quyidagi ko‘rinishga ega bo‘ladi:
SELECT Maydonlar ruyxati FROM Jadval WHERE (SHart) ORDER BY MaydonlarRuyxati
Bu erda ORDER BY – yozuvlarni tartiblash parametri.
Misol uchun:
SELECT Fam, Name FROM ':Maktab:school.db' WHERE
(Class = '10a') ORDER BY Name, Fam
Bu surov "Maktab" ma’lumotlar bazasidan(School.db jadvalidan) 10-a sinfi talabalari ro‘yxatini hosil qiladi.
Misol uchun:
SELECT Fam, Name FROM ":Maktab:school.db" WHERE
(Fam > 'K') and (Fam < 'L') ORDER BY Name, Fam
Bu so‘rov familiyasi K harfidan boshlanuvchi talabalar ro‘yxatini hosil qiladi.
Surov SQL xossasiga forma yaratish yoki dastur bajarilishi jarayonida yozilishi mumkin.
Forma yaratish jarayonida SQL xossasiga yozuv yozish uchun satrlar katori muxarriridan foydalaniladi. Bu muxarrir Object Inspector oynasidagi SQL xossasi katoridagi uch nuktali tugmani bosish natijasida ochiladi.
SQL xossasi satrlar ro‘yxatidan iborat. Dastur bajarilish jarayonida so‘rov hosil qilish uchun Add usulidan foydalanib, SQL ro‘yxatiga qatorlarni qo‘shish lozim..
Buning uchun avval joriy surovni berkitish, satrlar ruyxatini tozalash lozim:
Query1.Close;
Query1.SQL.Clear;
Delphi so‘rovni qayta ishlab, natijani jadval shaklida qaytarishi uchun quyidagi usulni chaqiradi:
Query1.Open;
Quyida konkret shaxs to‘g‘risida ma’lumotni qidirish uchun so‘rov hosil qiluvchi dastur qismi berilgan. Qidiruv sharti Fam maydoni qiymati fam o‘zgaruvchi qiymatiga teng bo‘lishi kerak:
with forml.Queryl do begin
Close;
SQL.Clear;
SQL.Add('SELECT Fam, Name, Class1);
SQL.Add('FROM ":SHkola:school.db"');
SQL.Add('WHERE');
SQL.Add('(Fam = '" + fam + '")');
SQL.Add('ORDER BY Name, Fam');
Open;
end;
Quyidagi dastur hamma o‘quvchilar yoki bir qismi haqidagi ma’lumotlarni so‘rovni bajarish orqali chiqarishga imkon beradi.
Ma’lumotlar bazasida so‘rov natijalarini ko‘rish uchun DBGrid1 komponentasi ishlatilib, DataSourcel komponentasi orqali Table1 yoki Query komponentasi bilan bog‘lanadi.
Dastur formasi:
Dastur matni
unit school2_;
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('Axborot BD', 'familiyani yozing.', '');
if fam <> ''
then
begin
with form1.Query1 do begin
Close;
SQL.Clear;
SQL.Add('SELECT Fam, Name, Class');
SQL.Add('FROM ":SHkola: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('V BD net zapisey, udovletvoryayuщix kriteriyu zaprosa.');
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 protsedurasi So‘rov tugmasi bosilganda bajariladi. U foydalanuvchidan qator (familiya) qabul qilib, SQL xossasiga yozish orqali so‘rov matnini hosil qiladi. Sungra bu protsedura Open usulini chaqirish bilan surovni bajarilishini aktivlashtiradi.
TForm1.Button2Click protsedurasi hamma yozuvlar tugmasini bosish orqali chaqirilib, DataSourcel komponentasini Table1 komponentasi bilan bog‘laydi va butun bazani ko‘rish rejimiga o‘tishni ta’minlaydi.
Agar surov SQL xossasiga formani yaratish jarayonida yozilgan bo‘lsa, dastur bajarilish jarayonida so‘rov shartini so‘rov matni mos 5 katorini almashtirish yo‘li bilan o‘zgartirish mumkin.
Masalan
SELECT DISTINCT Fam, Name, Class FROM ":SHkola:school.db" WHERE
(Class= '10a') ORDER BY Name, Fam
so‘rov matnini o‘zgartiruvchi instruksiya quyidagi ko‘rinishga ega bo‘lishi mumkin:
forml.Query1.SQL[3]:='(Fam="' + fam+ '")'
SHuni e’tiborga olish lozimki SQL xossasi TStrings tipidagi struktura bo‘lib, katorlar nomerlari noldan boshlanadi.
Do'stlaringiz bilan baham: |