Компонент аты Қасиеті
Мәні
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 компоненттерін қолданып деректер қоры қосымшасын құру:
Достарыңызбен бөлісу: |