Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Аршын апай.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.52 Mб
Скачать

Тәжірибелік жұмыс №3. Сұрауларды құру. Іздеу және фильтрация.

Енді бағдарлама Access МҚ – ның кестесінен жазуларды олардың кестеге енгізілу тәртібімен шығарады. Егер қолданушы кесте жазуларын сұрыптаудың, мысалы бағана атауы бойынша тышқан батырмасын шерткеннен кейін, тәртібін белгілеу және өзгерту мүмкіндігіне ие болса, қолайлы болушы еді. TRxDBGrid компоненті Grid-тың бағана атаулары батырма ретінде қолданыла алатындығын анықтайтын TitleButtons қасиетіне ие. Оның мәні = False. True мәнінде бұл қасиетті бекітуде мұндай батырманы басуды өндеу үшін және атауда батырма қасиеттерін бекіту үшін OnTitleBtnClick оқиғаны қолдануға болады .

Қадам 1 – tRxDbGrid бағана атауларының батырмаларымен жұмыс

  1. RxDBGrid1 компонентін қысқаша болуы үшін DBGrid1 (Name қасиетін өзгерту) атауын өзгерту.

  2. Объектілер инспекторында DBGrid1 үшін True мәнінде TitleButtons қасиетін белгілеңіз.

  3. unMain модуліне төменде қара шрифтпен көрсетілген екі ауыспалының хабарламасын қосыңыз:

……………………………

var

fmMain: TfmMain;

NameSortField:string; Desc:boolean;

implementation

……………………………

NameSortField ауыспалысы әрі қарай сұрыптау өткізілетін кесте өрісін анықтау үшін, ал Desc өсу немесе кему сұрыптау тәртібін анықтау үшін. қолданылады.

  1. fmMain формасы үшін төменде көрсетілген оқиға өндеуші OnCreate құрыңыз:

procedure TfmMain.FormCreate(Sender: TObject);

begin

NameSortField:=DBGrid1.Columns[0].FieldName;

Desc:=False;

end;

  1. DBGrid1 компонентінің төменде көрсетілген OnGetBtnParams және OnTitleBtnClick оқиғалар өндеушілерін құрыңыз: procedure TfmMain.DBGrid1GetBtnParams(Sender: TObject; Field: TField; AFont: TFont; var Background: TColor; var SortMarker: TSortMarker; IsDown: Boolean);

begin

if (Field <> nil) and (Field.FullName = NameSortField) then begin

if Desc then SortMarker:=smUp

else SortMarker:=smDown;

end;

end;

procedure TfmMain.DBGrid1TitleBtnClick(Sender: TObject; ACol: Integer; Field: TField);

begin

if (Field <> nil) then begin

if NameSortField=Field.FullName then Desc:=Not(Desc)

else begin

Desc:=False;

NameSortField:=Field.FullName;

end;

end;

end;

  1. Бағдарламаны орындау үшін іске қосыңыз және бағаналар атауларында батырмалардың жұмысын тексеріңіз – бағананың жаңа атауын шерткенде батырма осы бағана атауында пайда болуы қажет, ол орналасқан бағана атауын шерткенде батарма өзінің сыртқы түрін өзгерту керек.

Қадам 2 – мқ – на sql- сұрауының бағдарламалық өзгеруі

  1. Процедура атауын форма классын бейнелеу Public бөліміне орналастырыңыз:

  1. Төменде көрсетілген процедураны құрыңыз және басқа да қосалқы бағдарламалардың хабарламалары жанында unMain модулінің interface секциясында оның атауын орналастырыңыз:

procedure TfmMain.NewQuerySQL;

Var strSql:string;

begin

DataSource1.Enabled :=False;

With ADOQuery1 do begin

if Active=True then Active:=False;

SQL.Clear;

strSQL:= 'SELECT * FROM Страны ORDER BY Страны.'+NameSortField;

if Desc then strSQL:=strSQL+' DESC;' else strSQL:=strSQL+';';

SQL.Add(strSQL);

Active:=True;

end;

DataSource1.Enabled :=True;

end;

  1. Сізбен құрылған оқиғаларды өндеушілерде NewQuerySQL процедураны шақыруды қосыңыз:

procedure TfmMain.DBGrid1TitleBtnClick(Sender: TObject; ACol: Integer;

Field: TField);

begin

if (Field <> nil) then begin

if NameSortField=Field.FullName then begin

Desc:=Not(Desc);

end else begin

Desc:=False;

NameSortField:=Field.FullName;

end;

end;

NewQuerySQL;

end;

procedure TfmMain.FormCreate(Sender: TObject);

begin

NameSortField:=DBGrid1.Columns[0].FieldName;Desc:=False;

NewQuerySQL;

end;

  1. Бағдарламаны орындау үшін іске қосыңыз және бағаналардың сұрыпталуы ойлағандай іске асып жатқанына көз жеткізіңіз.

  2. МҚ – на сұрауды орындау уақытында бағдарлама қолданушының әрекетіне жауап бермейді және оны ол туралы ескеру керек. Rx кітапханасында осыны істеуге көмектесетін ShowSplashWindow арнайы функция бар. Бұл функцияның суреттелуін кітапхана бойынша анықтамада оқыңыз, содан кейін unMain модулінің мәтініне төменде қара шрифтпен бөліп көрсетілген жолын орналастырыңыз:

var

fmMain: TfmMain;

NameSortField:string;Desc:boolean;

implementation

uses SplshWnd;

{$R *.DFM}

procedure TfmMain.NewQuerySQL;

var strSQL:string;Splash: TForm;

begin

Splash := ShowSplashWindow(Application.Icon,

'Загрузка данных. Подождите, пожалуйста...', False,

Application.MainForm);

try

DataSource1.Enabled :=False;

With ADOQuery1 do begin

if Active=True then Active:=False;

SQL.Clear;

strSQL:= 'SELECT * FROM Страны ORDER BY Страны.'+NameSortField;

if Desc then strSQL:=strSQL+' DESC;' else strSQL:=strSQL+';';

SQL.Add(strSQL);

Active:=True;

end;

DataSource1.Enabled :=True;

finally

Splash.Free;

end;

end;