Главная страница

Программалауда қазіргі қолданылып жүрген технологиялар. Объектіге бағдарланған программалаудың негізгі қағидалары


НазваниеПрограммалауда қазіргі қолданылып жүрген технологиялар. Объектіге бағдарланған программалаудың негізгі қағидалары
страница5/7
Дата08.02.2016
Размер0.97 Mb.
ТипПрограмма
1   2   3   4   5   6   7

Borland C++ Builder ортасы деректер қорына қатынаудың үлкен мүмкіндіктеріне ие. Деректер қоры тек сақтауға емес, сонымен қатар ақпараттарды таңдау және өңдеуге, маңызды аспектілердің бірі оларға сұраныстар құруға арналған.

C++ Builder-дегі сұраныстар – өзімен бірге деректер жиынын ұсынатын объект. Әдетте сұраныстар құру үшін TQuery компоненті – TDataSet абстрактілі класының тума класстары қолданылады.


TQuery компоненті

TQuery компоненті TTable компоненті сияқты, TDataSet компонентінің барлық қасиеттеріне ие.

TDataSource компоненті Data Controls компоненттері және TQuery компоненті арасындағы өзара әрекеттерді басқарады. Әдетте қосымшада әрбір TQuery компонентіне бір DataSource компоненті болады.

TQuery компонентінің жиі қолданылатын қасиеттері:

Active - берілген сұраныс ашық (true) немесе жабық (false) екенін көрсетеді.

Eof, Bof – бұл қасиеттер, ағымдағы жазба көрсеткіші деректер жиынының сәйкесінше бірінші немесе соңғы жолында болғанда true мәнін қабылдайды, яғни сұраныстың орындалу нәтижесі болатын.

DatabaseName - сұраныс жүзеге асатын каталог аты немесе қашықтағы ДҚ псевдонимі (alias).

DataSource – параметрленген сұраныстар үшін деректер көзін көрсетеді.

Fields – бұл қасиет тек орындалу уақытында қол жетімді (run-time only) және реттік нөмірі бойынша анықталған өрісті модификациялау немесе оқу үшін қолданылады.

Params – құрамында параметрленген сұраныстар үшін параметрлер болады, келесі мысалдағы SomeNo сияқты

Select * from Orders where CustNo=:SomeNo

SQL – жолдық массив, құрамында SQL сұраныс операторының мәтіні бар.

TQuery компоненті экранда көрінетін деректер жиынын құру және анықтау, жолдарды өңдеу, жою және қою үшін SQL операторларын қолдануға рұқсат береді.

RequestLive – егер бұл қасиет true мәнін иемденсе, сұраныс синтаксисінің нәтижесі, қолданушы деректер өзгерісін ДҚ-да сақтай алады. Егер RequestLive false мәнін иемденсе сұраныс нәтижесі read-only күйіне қайтарылады.

TQuery компонентінің келесі әдістері жиі қолданылады:

ExecSQL – SQL-сұраныстарды орындайды. Бұл әдісті деректерді жою немесе өңдеу, қою кезінде қолдану керек. SELECT (деректерді таңдау) операторы орындалғанда Open әдісін қолдану керек. Келесі мысал ExecSQL әдісін қолдануды көрсетеді:

Query1->Close();

Query1->SQL->Clear();

Query1->SQL->Add("Delete emp where empno=1010");

Query1->ExecSQL();

Open - TQuery компонентін ашады. Ол Active қасиетіне true мәнін меншіктеу эквиваленті. Сұраныс нәтижесі деректер жиыны болғанда қолданылады (әдетте мұндай сұраныстар SELECT операторынан басталады). Open әдісін қолдану мысалы:

Query1->Open();

Close - TQuery компонентін жабады. Close шақыру эквиваленті Active қасиетіне false мәнін меншіктеу. Close әдісін қолдану мысалы:

Query1->Close();

TQuery компоненттерінің жиі қолданылатын әдістері:

First, Last, Next, Prior ағымдағы жазба көрсеткішін сәйкесінше бірінші, соңғы, келесі және алдынғы жазбаларға ауыстырады.

Insert, Edit, Delete, Append, Post, Cancel – сұраныс нәтижесін түрлендіреді. Insert әдісі жол сұранысы нәтижесіне енгізуге мүмкіндік береді, мысалы:

Query2->Insert();

Query2->Fields[0]->AsInteger = 100;

Query2->Fields[1]->AsString =Edit1->Text;

Query2->Post();

Post әдісі Insert, Update немесе Delete операцияларын бекітеді. Cancel әдісі Insert, Delete, Edit немесе Append аяқталмаған операцияларын болдырмайды.

Visual Query Builder

Visual Query Builder (VQB) – SQL-ге негізделген сұраныстар құрудың визуалды құралы болып табылады. Бұл құрал арқылы комплексті сұраныстар құруға болады.

Visual Query Builder –ді TQuery компонетін таңдау арқылы және тышқанның оң жағын басып, пайда болған контексті мәзірден Query Builder опциясын таңдау арқылы шақыруға болады.

Ескерту. Visual Query Builder - Borland C++ Builder барлық версиясының комплектісіне кірмеуі немесе орнатылмаған болуы мүмкін. Бұл жағдайда контекстті мәзірде сәйкес опция болмайды.

Query Builder таңдағаннан кейін экранда Databases диалогтік панелі пайда болады, ол ДҚ таңдауға және онымен байланысты жүзеге асыруға мүмкіндік береді /4.22-сурет/.


4.22-сурет. Деректер қоры псевдоним таңдау
Деректер қорымен байланысқаннан кейін экранда Visual Query Builder терезесі шығады және сұраныста қолданатын кестелерді таңдау диалогтық панелі пайда болады /4.23-сурет/.


4.23-сурет. ДҚ-мен байланысқаннан кейін Visual Query Builder

терезесі және Add Table диалогтық панелі пайда болады.
Visual Query Builder инструменттер панелі кестеде көрсетілген.


Батырма

Міндеттері



New

Жаңа сұраныс құрады.



Open

Сұраныс файлын ашады.



Save As

Сұранысты файлда сақтайды.



Options

Options диалогтік панелін экранға орналастырады, сұраныстың әртүрлі опцияларын орнатуға мүмкіндік береді.



Table

Table диалогтік панелін экранға орналастырады, SQL операторға кестелер енгізуге мүмкіндік береді.



Expression

Expression диалогтік панелін экранға орналастырады, ол есептейтін өріс құруға мүмкіндік береді.



SQL

Генерацияланған SQL- сұраныстың мәтіні бар терезе шығарады.



Run

Выполняет сгенерированный запрос и выводит на экран результаты.



OK

TQuery компонентінің қасиетіне генерацияланған сұранысты меншіктейді және Visual Query Builder жабады.



Cancel

TQuery компонентінің қасиетіне генерацияланған сұранысты меншіктеуді болдырмайды және Visual Query Builder жабады.



Help

Visual Query Builder үшін жүйелік көмекті экранға шығарады.


Add Table диалогтік панелі /4.23-сурет/ Visual Query Builder ашылған кезде немесе диалогтік панелдің сәйкес батырмаларын таңдағанда пайда болады. Ол сұранысқа кестелер енгізеді, ағымдағы ДҚ барлық кестелер тізімін шығарады. Егер Include System Tables опциясын белгілесек, сұраныстар құру үшін берілген ДҚ-ның жүйелік кестелері қол жетімді болады.


4.24-сурет. Visual Query Builder жұмыс бетінде тізімнен

таңдаған кесте пайда болады
Сұранысқа бір немесе бірнеше кесте енгізу үшін келесілерді орындау қажет:

  • Егер Add Table диалогтік панелі экранда жоқ болса, оны экранға шығару үшін инструменттер панелінен Table басылады.

  • Диалогты панелдегі кесте тізімінен кесте аты таңдалады және Add батырмасын басамыз. Таңдалған кесте құрылы сипаттамсы Visual Query Builder терезесінің жоғарғы бөлігінде көрінеді.

  • керекті кестелер сұранысқа енгізілгенше екінші қадам қайталана береді, соңынан Close батырмасы басылады.

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


4.25-сурет. Аралас сұраныс құру
Бірнеше кестелер ақпараттарын араластыру үшін, әртүрлі кестелер қалай байланысатынын анықтау керек. Visual Query Builder көмегімен кестелер байланысына қызмет ететін бағандарды анықтауға болады. осы мақсатта, кестеаралық байланысты жүзеге асыратын, байланысқан кестелердің бірінен баған атын таңдау керек, сосын тышқанның сол жағымен басып және курсорды басқа кестенің сәйкес бағанына алып барамыз. Нәтижесі – суретте көрсетілген.

Кестелердің байланысу критерийін өңдеуге және көруге болады, яғни Visual Query Builder терезесінің жоғары бөлігінде байланысты көрсететін сызықты екі рет шерту арқылы. Осылай Join диалогтік блогы пайда болады /4.26-сурет/:


4.26-сурет. Кестелердің байланысу критерийін таңдау
Сұраныстың сұрыптау критерийін анықтау үшін, Visual Query Builder терезесінің төменгі бөлігіндегі кестеден Criteria жолын қолдану керек.

Criteria жолы SQL операторының WHERE ұсынған сұраныс өрнектерін қабылдайды, кестеде көрсетілген:

Өрнек

Сипаттамасы

=

Тең

>

Үлкен

<

Кіші

!=

Тең емес

Like

Үлгiмен салыстырылатын символдар жолы

Between

Бастапқы мәннен кіші емес және соңғы мәннен үлкен емес

In

Тізім құрамында болады


Есептейтін өріс құру үшін батырмамен инструменттер панеліндегі Expression басамыз. Expression диалогтік панелі пайда болады /4.28-сурет/.



4.28-сурет. Expression диалогтік панелін шақыру
Expression диалогтік панелі сұраныста арифметикалық операцияларды көбейту, бөлулер, қосу, алу, бағандардың аты және avg, count, min, max, sum сияқты құрама өрнектерді қолдануға мүмкіндік береді.

Visual Query Builder-мен генерацияланған сұраныс орындауға болады. Сұраныс нәтижесі Result Window (нәтижелер терезесі) диалогтік панеліндегі экранда көрінеді. Бұл терезе бағандар сұранысы, таңдау критерийі, топтастыру және сұрыптау критерийлері дұрыс анықталғанына көз жеткізуге мүмкіндік береді. Сұранысты орындау үшін, батырмамен инструменттер панеліндегі Run-ды басу қажет. Result Window терезесі пайда болады /4.29-сурет/.



4.29-сурет. Сұраныс нәтижесі Result Window экранында көрінеді



4.30-сурет. SQL Statement терезесіндегі

SQL генерацияланған операторы


Сұраныс мәтінін тексеруге болады, SQL Statement терезесін қарау арқылы. Бүл терезе генерацияланған SQL операторын көрсетеді. Сұраныстар бағаны, таңдау критерийі, топтастыру немесе сұрыптау критерийі өзгергенде және қосқанда SQL Statement терезесі автоматты өңделеді /4.30-сурет/.

Visual Query Builder жұмысын аяқтау үшін инструменттер панеліндегі жасыл белгісі бар батырманы басу керек. Осыдан кейін TQuery компонентінің Visual Query Builder белсенді болған SQL қасиетіне SQL-сұранысының генерацияланған мәтіні меншіктеледі.
Жаттығу жұмыстары
1-жаттығу.
TQuery компонентін қолдану

TTable, TQuery, TDataSource, TDBGrid компоненттерін қолданып қосымша құрып көрейік. Бұл мақсатқа Customer.db және Orders.db кестелерін пайдаланамыз, олар Borland C++ Builder комплектісіне кіретін BCDEMOS деректер қорында орналасқан. Құрылған қосымша Customer кестесінен клиенттер тізімін, Orders кестесінен олардың тапсырыстарын шығару керек, сонымен қатар клиент нөмірі диапазонын таңдауға рұқсат беруі қажет.

Жаңа прект құрамыз және оның басты формасын CUST1.CPP деп, ал жобаны CUST.MAK деп сақтаймыз.

Форма тақырыбын "Контроль заказов" тақырыбына өзгертеміз. Формаға TDBGrid компонентін, екі TGroupBox компонентін, бір Ttable компонентін, екі Tquery компонентін, үш TDataSource компонентін орналастырамыз. GroupBox1 компонентіне үш TRadioButton компонентін және екі TButton компонентін қоямыз. GroupBox2 компонентіне екі TEdit компонентін және бір TButton компонентін қоямыз.


4.31-сурет. CUST қосымшасы формасына

компоненттерді орналастыру
Бұл компоненттерге келесі қасиеттерді орнатамыз:

Компонент аты

Қасиеті

Мәні

Table1

DatabaseName

BCDEMOS

 

TableName

CUSTOMER.DB

 

Active

False

DataSource1

DataSet

Table1

DBGrid1

DataSource

DataSource1

Query1

Database Name

BCDEMOS

 

SQL

select * from orders

 

Active

False

DataSource2

DataSet

Query1

Query2

DatabaseName

BCDEMOS

DataSource3

DataSet

Query2

Button1

Caption

Открыть список &клиентов

Button2

Caption

Открыть список &заказов

RadioButton1

Caption

Клиенты

 

Checked

True

RadioButton2

Caption

Заказы

GroupBox1

Caption

 

GroupBox2

Caption

 

Button3

Caption

Установить &диапазон

Edit1

Text

 

Edit2

Text

 

Label1

Caption

Начало:

Label2

Caption

Конец:

RadioButton3

Caption

Заказы клиентов


Button1 батырмасына OnClick оқиғасын құрамыз:

void __fastcall TForm1::Button1Click(TObject *Sender)

{

if (Table1->Active)

{

Table1->Close();

Button1->Caption = "Ioe?uou nienie &eeeaioia";

}

else

{

Table1->Open();

Button1->Caption= "Cae?uou nienie &eeeaioia";

}

}

Енді осы батырманы басқанда Customer кестесі бірде ашылады, бірде жабылады, сонымен қатар батырмадағы жазу өзгеріп отырады.

Button2 батырмасына OnClick өңдеуші оқиғасын құрамыз :

void __fastcall TForm1::Button2Click(TObject *Sender)

{

if (Query1->Active)

{

Query1->Active = false;

Button2->Caption = "Ioe?uou список &caeacia";

}

else

{

Query1->Active = true;

Button2->Caption = "Заe?uou список &caeacia";

}

}

Button2 батырмасын басқанда Query1 сұранысы бірде ашылады, бірде жабылады, құрамында тапсырыстар тізімі бар:

RadioButton1 және RadioButton2 радиобатырмаларына OnClick өңдеуші оқиғасын құрамыз:

void __fastcall TForm1::RadioButton1Click(TObject *Sender)

{

DBGrid1->DataSource = DataSource1;

}

//------------------------------------------------------------------------

void __fastcall TForm1::RadioButton2Click(TObject *Sender)

{

DBGrid1->DataSource =DataSource2;

}

Енді осы радиобатырмалар көмегімен клиенттер тізімі және тапсырыстар тізімі арасында ауысуға болады.

Button3 батырмасына OnClick өңдеуші оқиғасын құрамыз:

void __fastcall TForm1::Button3Click(TObject *Sender)

{

if (Table1->Active)

{

Table1->SetRangeStart();

Table1->Fields[0]->AsString = Edit1->Text;

Table1->SetRangeEnd();

Table1->Fields[0]->AsString = Edit2->Text;

Table1->ApplyRange();

}

}

Енді Edit1 және Edit2 өңдеу өрістері және Button3 батырмасы көмегімен клиенттер нөмірі диапазонын таңдауға болады, яғни олар туралы мәліметтер DBGrid1 көрінуі үшін.

Сосын Visual Query Builder арқылы Query2 компонентінің SQL қасиетін орнатамыз. Деректер қоры аты ретінде BCDEMOS таңдаймыз және сұранысқа CUSTOMER және ORDERS кестелерін енгіземіз. Ары қарай кестелер арасында байланыс орнатамыз.

Сұранысқа келесі өрістерді енгіземіз:

  • Customer.CustNo

  • Customer.Company

  • Orders.OrderNo

  • Orders.AmountPaid




4.32-сурет. Аралас сұраныс құру үшін Visual Query Builder қолдану
Енді сұраныс нәтижесін сатып алушы нөмірі бойынша сұрыптаймыз және Visual Query Builder –ден шығамыз.

Объектілер инспекторын қолданып, Query2 компонентін таңдаймыз және Active қасиеті мәнін true теңестіреміз.

RadioButton3 радиобатырмасына OnClick өңдеуші оқиғасын құрамыз:

void __fastcall TForm1::RadioButton3Click(TObject *Sender)

{

DBGrid1->DataSource= DataSource3;

}

Қосымшаны компиляциялаймыз. Қос деректер жиынын ашу үшін. батырмамен "Открыть список заказов" басамыз. Радиобатырмаларды қолданып, олардың арасында ауысып көреміз.


4.33-сурет. Дайын қосымша осылай көрінеді

2-жаттығу

1   2   3   4   5   6   7