Батырма
Міндеттері
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-жаттығу
Деректер модулі.
Алдынғы жаттығуда Data Access беті компоненттерін қосымшаның басты формасына
орналастырдық. Бірақ мұндай жағдай, формада кӛп санды кӛрінбейтін компоненттердің
болуы қолданушы интерфейсін жобалауды қиындатады. Осы мақсатта C++ Builder-де
арнайы деректер модулі - TDataModule типі бар. Осы типтегі компонентті шартты түрде
форма түрі деп қарастыруға болады. мұндай компонент-контейнер Data Access беті
компоненттерін құрамында ұстай алады, ал ӛзі бағдарламаның орындалу уақытында
қолданушыға кӛрінбейді.
Жоғарыда келтірілген жаттығудың басқа нұсқасын деректер модулін қолданып құрып
кӛрейік.
4.34-сурет. Деректерге қатынау компоненттерін
DataModule-ге орналастыру
Қосымша коды:
//----------------------------------------------------
#include
#pragma hdrstop
#include "cust1.h"
#include "custdm1.h" // деректер модуліне сілтеме
//-----------------------------------------------------
#pragma link "Grids"
#pragma resource "*.dfm"
TForm1 *Form1;
//-----------------------------------------------------
__fastcall TForm1::TForm1(TComponent*
Owner): TForm(Owner)
{
}
//-----------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if (DataModule1->Table1->Active)
{
DataModule1->Table1->Close();
Button1->Caption = "Открыть таблицу &клиентов";
}
else
{
DataModule1->Table1->Open();
Button1->Caption= "Закрыть таблицу &клиентов";
};
}
//-----------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
if (DataModule1->Query1->Active)
{
DataModule1->Query1->Active = false;
Button2->Caption = "Открыть таблицу &заказов";}
else
{
DataModule1->Query1->Active = true;
Button2->Caption = "Закрыть таблицу &заказов";
}
}
//-----------------------------------------------------
void __fastcall TForm1::RadioButton1Click(TObject *Sender)
{
DBGrid1->DataSource = DataModule1->DataSource1;
}
//-----------------------------------------------------
void __fastcall TForm1::RadioButton2Click(TObject *Sender)
{
DBGrid1->DataSource = DataModule1->DataSource2;
}
//-----------------------------------------------------
void __fastcall TForm1::RadioButton3Click(TObject *Sender)
{
DBGrid1->DataSource = DataModule1->DataSource3;
}
//----------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
if (DataModule1->Table1->Active)
{
DataModule1->Table1->SetRangeStart();
DataModule1->Table1->Fields[0]->AsString = Edit1->Text;
DataModule1->Table1->SetRangeEnd();
DataModule1->Table1->Fields[0]->AsString = Edit2->Text;
DataModule1->Table1->ApplyRange();
}
}
//-----------------------------------------------
Ӛзіндік жұмысқа тапсырмалар
DataModule және TQuery компоненттерін қолданып деректер қоры қосымшасын құру:
1.
Жоғарғы оқу орнының студенттері туралы мәліметтер.
2.
Автотранспорттық шаруашылық жұмысы.
3.
Компьютерлік фирма жұмысы.
4.
Аэропорт кассасы жұмысы.
5.
Оқытушылардың жүктемесiн есептеу
6.
Автосалон жұмысы.
7.
Поликлиника дәрігерлері туралы мәліметтер.
8.
Кітапхана.
9.
Аэропорт анықтамалық бюросының мәліметтері.
10.
Стоматология.
13 - зертханалық жұмыс.
QReport парағын пайдаланып есеп беруді ұйымдастыру
Әдістемелік нұсқаулар
C++ Builder ортасында есеп беруді құру үшін компоненттер палитрасындағы QReport
беті қолданылады. Бұл компоненттер жиыны кестелерді, сұраныстарды, тізімдерді, мәтіндік
файлдарды, массивтерді C++ Builder дизайнер формасын қолдана отырып есеп беруді
жобалайды және баспаға шығарады.
C++ Builder ортасының Forms объектілер репозитариясы бетінде есеп берудің 3
шаблоны бар:
Шаблон
Сипаттамасы
QuickReport Mailing Labels
Пошталық этикеттер құру шаблоны
QuickReport List
Қарапайым кестелік есеп беруді құру
шаблоны
QuickReport Master/detail
Master/Detail есеп беруін құру шаблоны.
Жаттығу жұмыстары
Қарапайым есеп беруді құру
QuickReport есеп беру негізі кӛлденен сызық (bands) жиынында. Есеп беруді құру
кезінде формаға бірнеше әртүрлі типтегі QRBand (Tpanel мұрагері) компоненттері
орналасады.
Қарапайым есеп беруді құру үшін формаға келесі компоненттерді орналастырамыз
/4.35-сурет/:
TQRBand – бұл компонент есеп берудің бір бӛлігі - мәліметтерді орналастыратын
контейнер болады (мысалға, есеп беру тақырыбы, беттің жоғарға немесе тӛменгі
колонтитулы, топтың жоғарға немесе тӛменгі колонтитулы және т.б. ). TQRBand
компоненттері олардың формада орналасуына байланысты емес, олардың қажетті жерде есеп
беру типтеріне тәуелді баспаға шығарылады. Бұл компоненттің жиі қолданылатын қасиеті
&ndash BandType, «сызық» типі (топтың немесе беттің колонтитулы, мәліметтер «сызығы»
және т.б.). Мүмкін мәндері: : rbTitle &ndash есеп беру тақырыбы, rbPageHeader &ndash
беттің жоғарғы колонтитулы, rbColumnHeader &ndash бағанның жоғарғы колонтитулы, кӛп
бағанды есеп беруде, rbDetail &ndash кестелі мәліметтер сызығы (жолда есеп беру негізі
болатын мәліметтер жинағында неше жол болса, сонша рет қайталанады), rbPageFooter
&ndash беттің тӛменгі колонтитулы, rbOverlay &ndash беттің фоны, әр беттің сол жақ
жоғарғы бұрышында баспаға басылады, rbGroupHeader &ndash топтың тақырыбы,
rbSubDetail &ndash Detail-кестесі үшін кестелі мәліметтер «сызығы», rbGroupFooter &ndash
топтың тӛменгі колонтитулы, rbSummary &ndash есеп берудің соңында баспаға басылады.
Біз құрған компоненттің BandType қасиетіне rbTitle мәнін меншіктейміз.
TQuickReport (бұл компонент форманың есеп беруге айналуына жауапты).
QRBand1 орналасқан TQRLabel (бұл компонент статистикалық мәтінді шығаруға
арналған, және оның Caption қасиетіне болашақтағы есеп берудің тақырыбы мәтінін беруге
болады).
4.35-сурет. Есеп беру тақырыбын құру
Егер QuickReport1 компонентің тышқанның оң жақ батырмасымен басып, контекстті
мәзірден Preview Report опциясын таңдасақ, тақырыбы бар есеп беру беті кӛрінетін кӛру
терезесі пайда болады.
Есеп беруді модификациялау үшін QRBand1 компонентінің BandType қасиетін
rbDetail-ге ӛзгерту керек және формаға Ttable компонентің қосу қажет. Әрі қарай оның
DataBase қасиетіне псевдоним атын орнату қажет, мысалға, BCDEMOS, TableName қасиетіне
кесте атын, мысалға, CUSTOMER.DB, сосын Active қасиетін true ӛзгерту керек. Осыдан
кейін формаға TDataSource компонентін қосу қажет және DataSet қасиетіне алдында
қосылған Table1 компоненті атын береміз, әрі қарай QuickReport компонентінің DataSource
қасиетіне құрылған DataSource1 компоненті атын береміз. Осыдан кейін QRBand1-ге
TQRDBText компонентін қосуға болады, оның DataSource қасиетіне алдында құрылған
DataSource1 компоненті атын береміз және DataField қасиетінің мәніне керекті жолды
таңдаймыз. Егер қажет болса басқа TQRDBText компоненттерін қосуға болады және есеп
беруде кӛрінетін кесте жолдарын басқаша етіп таңдауға болады /4.36-сурет/.
4.36-сурет. Кестелік есеп берудің модификациясы
Егер QuickReport компонентінің контекстті мәзірінен Preview Report опциясын
таңдасақ, модифицирленген кестелік есеп беруді кӛруге болады.
Енді тақырыпты есеп беру және колонтитулды есеп беруді құрып кӛрейік. Ол үшін есеп
беруді құру кезінде TQRBand-тің бірнеше әртүрлі компоненттерін қолданамыз.
Тақырыптық және колонтитулдік есеп беруді құру кезінде жаңа форма құру қажет,
формаға тӛрт TQRBand компонентін орналастырамыз (олар үнсіздік бойынша QRBand2,....,
QRBand5 атын алады) және BandType қасиетіне сәйкесінше rbTitle, rbColumnHeading,
rbDetail және rbPageFooter орнатамыз. Ары қарай формаға TTable компонентін қосу қажет
және DatabaseName қасиетіне BCDEMOS береміз, TableName қасиетіне Customer береміз,
сосын Active қасиетіне true қоямыз. Формаға TDataSource компонентін қосу қажет және
DataSet қасиетіне алдында қосылған Table1 атын береміз және QuickReport компонентінің
DataSource қасиетіне құрылған DataSource1 атын береміз. Сосын есеп беру тақырыбы және
сәйкесінше TQRBand компоненттері бағандары үшін бірнеше TQRLabel компонентін қосу
керек, әрқайсының Caption қасиетіне қажетті мәндерін беру керек.
Сосын QRBand компонентіне үш QRDBText компонентін орналастыру керек, BandType
қасиетіне DetailBand меншіктеп және олардың DataSource қасиетіне DataSource1
меншіктейміз, ал DataField қасиетіне Company, Phone және Fax меншіктейміз. Беттің нӛмірі
кӛріну үшін TQRSysData компонентін (бұл компонент мәліметтер құрамына тәуелсіз, бет
нӛмірі, жыл, уақыт және т.б. арналған) BandType қасиеті rbPageFooter тең TQRBand
компонентіне орналастыру қажет және оның Data қасиетіне qrcPageNumber, ал Text
қасиетіне &ldquoСтр. &ldquo береміз.
Осыдан кейін форма 3-суреттегідей болады.
Қайтадан Preview Report опциясын таңдап, жаңа есеп беру мазмұнын кӛруге болады.
4.37-сурет. Тақырыпты және колонтитулды есеп беру
Ӛзіндік жұмысқа тапсырма
|