В. Мәліметтер қорын құрылымдау
Енді МҚ-ны кестелерден құрылымдаймыз. Олардың құрылымы құрылған, яғни құрылымдалған кестелер.
«Материалдар» және «Материалдардың келіуі» кестелері «бірдің көпке» байланысында, яғни Materialy кестесінің бір жазуымен Prihod кестесінің бірнеше жазулары байланыса алады. Байланыс өрісі негізінде екі кестеде де бар жазу Material болады.
Берілген кестелер арасындағы сілтемелік тұтастығын анықтаймыз. Paradox –тағы сілтемелік тұтастық, біріншіден, кестелер арасындағы байланысты, ал екіншіден, каскадты қатынасты анықтайды.
Prihod кестесін (мәзір элементі File | Table | Open) ашамыз және кесте құрылымын өзгерту режиміне кіреміз (Table | Restructure). Пайда болған Table Properties тізімінен Refrential Integrity элементін таңдап, Define батырмасан шертеміз. Пайда болған сұбаттық терезеде (13-сурет), Fields тізімінде Prihod кестесінің жолдары көрсетілген, ал Tables тізімінде - PRIMER мәліметтер қорының кестелері.
13-сурет – .Сілтемелік тұтастылықты құртын терезе
Fields тізімінен Material жолын таңдаймыз да, оң жаққа бағытталған бейнесі бар батырманы шертеміз. Material атауы Child Fields (бағынышты кестенің сыртқы кілтінің жолы) жолына жазылады.
Tables тізімінен Materialy кестесін таңдаймыз да, сол жаққа бағытталған бейнесі бар батырманы шертеміз. Parents Key (кестенің аналық кілті) жолында Materialy кестесінің біріншілік кілттің өрістері көрсетіледі. Біздің жағдайымызда, бұл Material өрісі.
Update rules ажыратып қосқыштары Materialy кестесіндегі байланысқан жолдар немесе Materialy кестесіндегі жазбаларды жою кезінде, Prihod кестесінің каскадты қатынасын анықтайды:
-
Cascade - Prihod кестесіндегі бағынышты жазбалардың каскадты өзгертілуі және жойылуы;
-
Prohibit – Егер берілген жазбаға Prihod кестесінде байланысқан жазбалар бар болса, Materialy кестесіндегі жазбаларды жоюға немесе бағынышты жазбаларды жоюға және өзгертуге тиым салады. Cascade таңдаймыз (18-сурет) және ОК батырмасын шертеміз.
14-сурет – Сілтемелік тұтастылықтын шарттарын анықтау
Аты сұранылады – Paradox-та сілтемелік тұтастылық аталады. Атауды енгіземіз, мысалы Materialy_Prihod_Integrity, ОК батырмасын шертеміз. Енді сілтемелік тұтастылықтың аты тізімге енгізіледі.
Prihod кестесіндегі өзгертулерді еске сақтаймыз (Save батырмасы) және Prihod кестесінің құрылымын өзгерту режиміне (Table|Restructure) қайта кіреміз. Пайда болған Table properties тізімінен Secondary Indexes (біріншілік кілтті анықтау үшін құрылған индекстерінен басқа кестенің индекстері) элементін таңдаймыз. Индекстер тізімінен жаңа Material (Material өрісі бойынша) атауы бар индекс пайда болғанын көреміз. Бұл индекс автоматты түрде құрылған, сыртқы кілтінің нақты емес анықталуымен сілтемелік тұтастылықтың құрылуы кезінде (15-сурет).
15-сурет – Prihod кестесінің сілтемелік тұтастылықты құрғаннан кейінгі индекстер тізімі
Осымен, МҚ құру үрдісі аяқталды, сондықтан қайта құрылымдау режимінен және DBD –дан шығуға болады. Осындан кейін құрылған кестелермен жұмыс істеу үшін, қарапайым қосымшаны құрылымдаумен айналысамыз.
Бөлім бойынша қорытынды
МҚ құруындағы материал құрылымы келесі:
-
Бірінші кестенің құрылымын түрлендіру. Оның мінездемесі келесідей:
Ол мастер кесте болып табылады және оған біріншілік кілт, біріншілік кілтімен біріншілік индексация құрылған.
-
Екінші кестенің құрылымын түрлендіру. Оның мінездемесі келесідей:
Ол бөлшек кесте болып табылады, екіншілік кілт, екіншілік индексация құрылды.
-
Кестелер арасындағы «бірдің көпке» қатынасы орнатылған.
DELPHI-де МҚБЖ құрылуы
МҚБЖ экрандық және есеп формаларынын және МҚ-ға енгізілетін және МҚ-дан шығарылатын мәліметтерді өңдеу процедуралары жиынтығынан құралады. Windows МҚБЖ ортасында МҚЖ бағдарламалауын қосымша деп атайды.
Осымен, жоғарыда бейнеленген «пайдаланушы - жүйе» жүйенің жұмыс сұлбасынан жүйенің жұмыс істеуі үшін, келесі формалар керек:
-
Мәзірге арналған форма;
-
Қорға мәліметтерді енгізуге арналған форма;
-
МҚ қарап шығуға арналған форма;
-
№1 есепке арналған форма;
-
№2 есепке арналған форма;
-
№3 есепке арналған форма.
Жоғарыда МҚЖ бейнелеуінің сыртқы формасы көрсетілген. МҚЖ жұмыстылығын қамтамасыз ету үшін, формалар мен МҚ арасында байланысты орнату керек: экрандық формадан МҚ мәліметтердің өңделуі. Ол келесі пункттерде жасалынады.
Delphi-де МҚБЖ-мен МҚ формаларын байланыстырылуы анықталғанвизуалды емес компоненттер арқылы жүзеге асырылады. Сондықтан экрандық форма мен МҚ арасындағы байланыс орнату үшін, арнайы визуалды емес компонент (контейнер) TDataModule қолданылады. Олар жеке құрылуы керек.
Біздің есебімізге қажетті формалардың тізімін құрамыз:
-
Мәзірге арналған форма;
-
Қорға мәліметтерді енгізуге арналған форма;
-
МҚ қарап шығу формасы;
-
№1 есепке арналған форма;
-
№2 есепке арналған форма;
-
№3 есепке арналған форма;
-
TDataModule комоненті.
Компоненттер мен формалардың орналасуы келесідей болады:
-
TDataModule компоненті;
-
Мәзірге арналған форма;
-
МҚ арналған форма;
-
Қорға мәліметтерді енгізу формасы;
-
№1 есепке арналған форма;
-
№2 есепке арналған форма;
-
№3 есепке арналған форма;
МҚБЖ құруға қажетті формаларды екі тәсілмен құруға болады:
-
Егер олардың саны алдын-ала белгілі болса, онда монитор экранында және IDE Delphi жоба қоймасында (repository) қажетті визуалды және визуалды емес формалар санын алдын-ала енгізуге болады, яғни жобаға қанша форма қажет болса, сонша қосуға болады. File|New Form жарлығы көмегімен визуалды формалар, ал File|New Data Module жарлығы арқылы визуалды емес формалар қосылады. Біздің жүйе үшін, барлығы алты визуалды форма және бір TDataModule компоненті қажет болады.
-
Егер формалар саны алдын-ала белгісіз болса, онда монитор экранында және сәйкесінше, IDE Delphi жоба қорында (repository) жоба үшін қажетті форма ағамды МҚБЖ құруында құрылуы мүмкін. Экранда формаларды орнату File|New Form немесе File|New Data Module жарлықтары арқылы жүзеге асады. Басқаша айтқанда, жобаға әрбір форма қажеттілігі бойынша қойылады.
Біздің жағдайда жоба қорына жаңа формаларды қосу, қосу жарлықтары (File|Add to Project) арқылы жүзеге асады.
Алдымен, экранға қажетті формалар саны шығарылды деп есептейік. Егер формалар жетпесе, оларды қажетті санына жеткіземіз. Ол (File|New Form) әрекетінің қайталуы арқылы жасалынады. Мұндай әрекет қанша форма қажет болса, сонша рет жасалынады және File|New Data Module жарлығы арқылы бір контейнер құрылады.
Енді формалардың құрылымдалу ретін анықтайық. Формаларды құру реті жалпы еркін түрде болып келеді, бірақ біз жоғарыда көрсетілген ретті таңдаймыз.
Берілген формаларды бейнелеу және құру реті МҚБЖ құру үрдісін жеңілдетеді.
МҚБЖ құруын МҚ байланысы үшін, TDataModule контейнерінің құрылуынан бастаймыз. МҚБЖ формаларын жобалауын экрандық МҚ құрамы бейнелетін формадан бастаймыз.
МҚБЖ жобалануы әр формада жекелеп МҚ байланыс жасау жолымен және МҚ алынатын немесе экрандық формаға енгізілетін мәліметтерді өңдеу процедуралардың құрылуы арқылы жасалынады.
Сонымен қатар, әр форма компоненттері арасында байланысты орнату керек. Экрандық формалардың біреуінде жұмысты аяқтау жарлығын ескерген жөн.
Компоненттерді анықтап алып, олардың формада орналастыруын бекіткен соң, олардың МҚ-ға рұқсаты орнатылады және әрбір форма компоненті үшін мәліметтерді өңдеу процедурасы құрылады.
Жоғарыда келтірілген анықтамадан, МҚБЖ МҚ сияқты көптеген компоненттерден құралатынын көреміз. Бұл барлық МҚБЖ компоненттерін құрылымдауды және бағдарламалауды талап етеді. Сондықтан оларды МҚ сияқты белгілі бір орында сақтау керек. Осы мақсатпен, C:\PRIMER каталогында АРР бумасын құрамыз. Бұнда біз құрылымдалған қосымшаларды сақтаймыз.
Жалпы жағдайда, қосымшаларды кездейсоқ жерде сақтауға болады, бірақ МҚ-мен бір бумада сақталуы құрылымдаушыға ыңғайлы жұмыс істеуге көмектеседі.
4.3. МҚБЖ құрылуы
4.3.1. TDataModule контейнерінің құрылуы
Экрандық форма мен МҚ байланысы визуалды емес компоненттер деп аталатын арнайы компоненттермен қамтамасыз етіледі. Бұл элементтер құрылымдау режимінде ғана көрінеді, ал жүйенің жұмыс істеп жатқан режимінде экранда көрінбейді.
Егер МҚБЖ бір экрандық формадан құралса, онда визуалды емес компоненттерді сақтауға арналған контейнер түріндегі арнайы қойма керек емес. Ондай жағдайда, визуалды емес компоненттерді экрандық формада орналастыруға болады. Экрандық формалар көп болған жағдайда, және олардың әрқайсысы МҚ-ға қатынау жасауы керек болса, қатынау келесі түрде жүзеге асады:
Барлық экрандық және есептік форма МҚ үшін қатынау (байланыс) керек. Егер МҚБЖ бірнеше формадан құралған болса, олардың МҚ-ға қатынасы екі тәсілмен жасалады:
-
МҚ-ға әрбір форманың (және оның компоненттеріне) қатынауын басқа формаларға тәуелсіз, автономды түрде жасауға болады.
-
Екінші тәсіл бойынша, МҚ-ға әрбір форманың қатынау жасауды қайталамауды ұсынады, ал барлық экрандық және есептік форма үшін арнайы TDataModule типті компонент арқылы бірыңғай рұқсаттаманы ұйымдастыру. TDataModule типі компонент өз кезегінде МҚ-ға қатынау жасау үшін арналған TTable, TQuery, DataSource визуалды емес компоненттерді кірістіруге болатын контейнерді бейнелейді. Онда МҚ-ға рұқсаты қажетті формалар TdataModule компоненті арқылы рұқсаттаманы алады.
Сонымен, МҚБЖ-мен жұмыс жасау үшін, TdataModule типті компонентті құру керек.
Delphi ортасындағы TdataModule экземплярының жасалуы File|New Data Module мәзір пункті арқылы жүзеге асырылады.
TDataModule комоненті мәліметтер қорымен жұмыс жасау үшін, компоненттер контейнері болып істейді. Delphi компоненттері палитрасында Data Access парағында тышқанмен визуалды емес ТТаblе (16-сурет) компонентінен шертіп, содан соң тышқанмен контейнерде шертеміз. Осыдан кейін, компонент бейнесі контейнерде қалады.
16-сурет – Delphi компоненттерінің палитрасы
TTable (басқа да компоненттерді, мысалы TQuery, TDataSource) визуалды емес болып аталады, себебі мәліметтерді сақтау және мәліметтерге қатынау үшін, ал компоненттердің визализациялануы үшін емес, ол мақсаттар үшін, визуалды компоненттер (TDBGrid, TEdit және басқалар) қолданылады.
Біз TTable компонентін орналастырып болған соң, оның қасиетін орнатамыз. Бұл мақсат үшін, біз формадан сол жақта орналасқан объектілер инспекторын (Object Inspector) қолданамыз. Егер ол көрінбесе, оны F11 пернесін шерту арқылы шақыруға болады. Объектілер инспекторы тышқан арқылы ерекшеленген компоненттің қасиетін орнатуға мүмкіндік береді. Ttable компонентін тышқан көмегімен ерекшеп аламыз.
DatabaseName (МҚ псевдонимі) мәнінің қасиетін пайда болған тізімнен немесе өздігімен теріп PRIMER –ге орнатамыз. TableName мәнінің қасиетін (МҚ кестесінің аты) Materialy.DB орнатамыз, ол пайда болған тізім арқылы таңдалады. Active мәнінің қасиетін True қыламыз. Осыдан кейін, TTable (өздігімен, Ttable1 атына ие) компонентінің Materialy.DB кестесімен байланысы басталады.
TTable және TQuery компоненттері жинақталған мәліметтерді сақтау үшін қызмет етеді. Жинақталған мәліметтердің ұғымы МҚ кестесінің түсінігінен біршама кең болып келеді. Себебі жинақталған мәліметтер құрамына:
-
МҚ-ның көптеген жазбалары немесе жолдары кіруі мүмкін (TTable, Tquery компоненттері);
-
МҚ-ның бірнеше кестелерінен құрылған жазбалар (Tquery компоненті);
DataModule контейнерінде TDataSource компонентін орналастырамыз. Ол визуалды және визуалды емес компоненттер (в данном случае Table1) арасындағы байланыстарытын звено ретінде қызмет етеді. Сондықтан TDataSource компоненттерін мәліметтер көзі деп жиі атайды. TDataSource компонентінің DataSet қасиетін пайда болған тізім арқылы Table1-ге орнатамыз.
TDataModule-ді кез-келген бір атпен (өздігімен ол Unit5.pas) атаймыз. TdataModule бейнеленген Unit модулінің аты осы TdataModule-де орналасқан, МҚ-да және TDataSource-те қолданылатын басқа формалардың барлық Unit модулінің мәтініне қосылады. Ол Delphi ортасының бас мәзірінде File|Use Unit элементінде жүргізіледі.
Ары қарай мәліметтер топтамасының деректерімен жұмыс істейтін визуалды компоненттер dataSource қасиетінде сәйкес TDataModule –ден TDataSource компоненттің атын құрау керек. Сонымен қатар, аты құрама болып келеді: алдымен TdataModule компонентінің аты, содан соң нүкте арқылы - TDataSource компонентінің аты, мысалы TdataModule. TdataSource.
4.3.2. Экрандық формалардың құрылуы, олардың МҚ – на қатынау жасалуы және мәліметтерді өңдеуді ұйымдастыру (қарапайым нұсқасы)
А. МҚБЖ мәзірі үшін, экрандық форма құрастырылуы.
№1 формаға (View|Forms мәзір элементі) көшейік, сұхбаттық терезеден Form1 таңдап, ОК батырмасын шертеміз. Формада Standard парақшасындағы MainMenu компонентін орналастырамыз. Содан соң, мәзірді өңдеу құралын шарықамыз (оны екі тәсілмен жасауға болады):
-
№1 формасының ішінде MainMenu компонентін екі рет шерту;
-
Формадағы компоненттің ерекшеленген кезінде Object Inspector терезесіне көшеміз. Items қасиетін шертіп, батырмасын шертеміз.
Form1.MainMenu1 (бұл MainMenu1 компонентін орналастырғаннан кейін, атау өздігімен шығады) мәзірдің конструкторында тұрып, мәзір пункттеріне (Object Inspector-дегі Caption қасиеті) атауларды береміз «Файл/Ввод/Просмотр/Отчет/Выход». Келесі деңгейге өту үшін <Enter> пернесін шертеміз. Мәзір пункттерінің жеке топтарға визуалды бөлу үшін, Отчет –тен кейін, бірнеше минус (-) таңбаларын қолданамыз, оның атуын қоюға міндетті емес. «Ввод» мәзір пункті үшін, «Название материала/Поступление материала» мәзірастын құрамыз. Ол үшін оны шертіп, тышқанның оң жақ батырмасын шертеміз, пайда болған терезеден Create Submenu пунктін таңдаймыз.
Енді, мәзір құрылып болған соң, әрбір пунктпен мәзір кодын байланыстыруға болады, ол берілген пунктті таңдан соң әрекет етеді. Осы жағдайдың өңдеу процедурасын - OnClick құру үшін, мәзір конструкторында орналасып, мәзір пунктінде тышқанмен екі рет шертеміз. Пайда болған код Түзетушісі терезесінде OnClick оқиғаларды өңдеу процедурасын кодты жазамыз, ол осы пункт таңдалған кезде әрекет етеді. Дәл осындай нәтижеге процедураның өңделу атында тышқанмен шерту көмегімен жетуге болады, ол Object Inspector терезесінің Events парағында орналасқан.
Мысалы, Просмотр пунктіне келесі кодтыенгіземіз:
Form1.Visible := False;
Form3.Visible := True;
Поступление материала мәзір элементі:
Form1.Visible := False;
Form2.Visible := True;
Выход мәзір элементі: Сlose;
File|Save Project As мәзір элементін таңдап, жобаны сақтаймыз. Алдымен, жоба формасының аты сұранылады (бізде бес форма, олардың аттары Form1 … Form4, DataModule5). Формаларды 'Unit*.pas' аттарымен сақтаймыз. Содан соң, жоба аты сұранылады. Жобаны 'appl.dpr' атымен сақтаймыз.
№1 форманың unit модулінің мәтініне модульдердің аттарын Unit2 және Unit3 қосамыз.
Осыдан кейін, қосымшаны орындаймыз. (Delphi ортасынан шықпай-ақ қосымшаны іске қосу үшін, F9 батырмасын басу керек.) Қосымшаны құрып, оны Delphi ортасынан жеке іске қосу үшін, Ctrl+F9 батырмаларын басып, .ехе кеңейтілуімен және атымен құрылған файлды іске қосу. Біздің жағдайда 'appl.exe' файлын іске қосу керек.
Жұмыс істеп жатқан қосымшаны Run|Program Reset жарлығымен тоқтатуға болады.
Б. МҚ құрамын бейнелеу үшін, экрандық форманың құрылуы
1) МҚ –ның бір кестесінің құрамын экрандық формада бейнелеу.
Ең алдымен, қарапайым форманы құрамыз, ол МҚ-ның тек бір ғана кестесіне қатынау керек.
View|Forms мәзір жарлығының элементті таңдау жолымен, №3 формаға көшеміз, сұхбаттық терезеден Form3 таңдап, ОК батырмасын шертеміз. Формада TDBGrid компонентін компоненттер палитрасынан (Data Controls парағы) алып, орналастырамыз. Алдымен TDataModule бейнеленген, №3 форманың unit мәтін модуліне Unit5 модуль атын қосып, TDBGrid компонентінің DataSource қасиетін DataSource1 (бұл жоғарыда бізбен құрылған TdataSource компонентінің аты, Delphi-мен өздігімен аталған болған) мәніне орнатамыз. TDBGrid компоненті мәліметтер жиынының бейнеленуін кестелік түрде көрсетуге арналған.
Формаға TButton (компоненттер палитрасының Standard парағы) компонентін қосымыз, осы компонентке объектілер инспекторын қолданып, CancelButton атауын (Name қасиеті) береміз. Батырманың үстіңдегі жазбасын (Caption қасиеті) Отмена –ға өзгертеміз.
Құрылымдалып жатқан форманың түрі 17-суретте бейнеленген.
17-сурет – Құрылымдау кезеңіндегі форма түрі
Батырманы басқандағы, бағдарлама орындалатындай етіп, батырманы кодпен байланыстырамыз. Осы жағдайды өңдеу процедурасын - OnClick құру үшін, формада орналасып, тышқанмен Отмена батырмасына екі рет шертеміз. Пайда болған OnClick өңдеу процедурасындағы кодты Түзету терезесінде келесі кодты енгіземіз:
Сlose;
Form1.Visible := True;
Қосымшаны іске қосамыз. Ол үшін, Run мәзірінен Run жарлығын таңдаймыз (немесе F9). Файл/Ввод мәзірінен Просмотр жарлығын таңдаймыз.
Жұмыс істеп жатқан қосымшаның сыртқы түрі 18-суретте бейнеленген.
18-сурет – №3 форманың жұмыс істеп жатқан кездегі түрі
Мәліметтер жиынына жазбаларды қосуға TDBGrid-тің өзінен болады.
Жазбаларды қосу үшін, пернетақтадан Insert пернесін шерту керек. Егер мәліметтер жиынының соңғы жазбасында болсаңыз, онда «төмен бағытталған» бағытқа шерту керек. Мәліметтер жиыны жаңа жазбаны қосу режиміне автоматты түрде өтеді. Жазбаны енгізгеннен кейін, оны сақтау үшін меңзерді басқару пернелерімен басқа жазбаға өту жолымен қолдануға болады. Жазбаларды сақтаудан бас тару үшін, Esc батырмасын шерту арқылы жүзеге асады.
Жазбаны өзгерту үшін, ағымды жазбаның көрсеткішін қажетті орынға қойып, керекті жерлерде өзгертулерді енгізу. Мәліметтер жиыны өзгерту режиміне автоматты түрде көшеді.
Жазбаны жою үшін, оны ерекшелеп Ctrl+Del пернелер жиынын шерту керек.
2) МҚ-ның екі кестесінің құрамының бейнеленуі
Енді жұмысты қиындатамыз. МҚ-ның екі кестесінің құрамын бейнелейміз. Оларды екі нұсқамен бейнелейміз:
А) Экрандық формада кестелер арасында байланысты орнатпай кесте құрамын бейнелеу;
Б) Кестелер арасындағы байланысты ескере отырып, берілген кестелерді бейнелеу.
2.1) Экрандық формада кестелер арасында байланысты орнатпай кесте құрамын бейнелеу.
Бір формада екі мәліметтер жиынын (басты және бағыныңқы) басты мәліметтер жиынына қатысты ағымды жазбысы, мәліметтердің жиынындағы бағыныңқы жазбаларына сәйкес келетін жазбалар әрқашан бейнелетіндей етіп, байланыстыруға болатынын көрсетеміз.
PRIMER мәліметтер қорының Prihod кестесімен жұмыс істеу үшін, DataModule5 контейнеріне ТТаblе компонентін (қасиеттер мәні дәл біріншісіндегідей, бірақ TableName қасиеті Prihod.DB кестесіне бағытталады) қосамыз. Формаға TDataSource (оның аты өздігімен TDataSource2 деп аталады) компонентін орналастырамыз. Осы компоненттің DataSet қасиетін Таblе2-ге ауыстырамыз. №3 формада TDBGrid (оның аты өздігімен TDBGrid2 деп аталады) компонентін орналастырамыз, оның DataSource қасиетін DataSource2 деп белгілейміз. (19-сурет). Таblе2 компонентінің Active қасиетін True ауыстырамыз. Осыдан кейін, TTable компоненттері мен Materialy.DB и Prihod.DB кестелері арасындағы шын мәнінде байланыс орнатылады.
19-сурет – Басты және бағыныңқы мәліметтер жиыны бар форманың құрылымдалу кезіндегі түрі
Қарап шығу кезінде материалдар жайлы мәліметтерді (Materialy.DB кестесі) өзгертуге болмайтындай ету үшін, DBGrid1 компонентінің ReadOnly қасиетін True-ға ауыстырамыз.
Қосымшаны іске қосамыз. Prihod.DB кестесіне TDBGrid2 компонентінен бірнеше жазбаларды қосамыз. N_Prih өрісінің мәні автоматты түрде пайда болады (20-сурет).
20-сурет – Басты мәліметтер жиынындағы ағымды жазбамен байланысқан жазба, бағыныңқы мәліметтер жиынында көрсетіледі
2.2) МҚ кестелерінің байланысын ескере отырып, оларды экрандық формаға шығару, яғни олардың арасындағы Master-Detail байланысының орнауы.
Materialy.DB және Prihod.DB кестелері бір-біріне «бірдің –көпке» байланысына сай келетіні бізге мәлім. Біз кестелер арасында сілтемелік тұтастылық анықтағандықтан, Table1 (Materialy.DB) кестесінің жазбасына көрсеткішті орнатқан кезде, Table2 (Prihod.DB) кестесінің тек бір ғана ағымды жазуы пайда болғандай жасауға болады. Бұл Master-Detail мәліметтер жиынының байланыс механизмі арқылы жүзеге асады.
Таblе2 компоненті үшін, объектілер инспекторында Master Source қасиетін DataSource1 мәніне орнатамыз. Master Fields қасиетінің мәніне көшеміз де, батырмасын шертеміз. Пайда болған Field Link Designer терезесінде байланыс параметрлерін орнатамыз. Available Indexes өрісінде ағымды индекс ретінде 'Material' жолы бойынша таңдаймыз. Detail Fields тізіменен Material өрісін таңдаймыз, Master Fields тізімінен Material өрісін таңдап, Add батырмасын шертеміз. Joined Fields жолында 'Material Material' деген өрнек пайда болады (21-сурет). ОК батырмасын шертеміз.
21-сурет. MasterFields қасиетінің мәнін орнату терезесі
Таblе2 компонентінде ағымды индекс (FieldIndexNames қасиеті), 'Material' өрісі бойынша құрылған индексіне ауыстырылған.
Енді Table2 мәліметтер жиынында тек материалдың келіп түсі бойынша жазбалар көрсетіледі. (22-сурет).
22-сурет – Master-Detail байланысы – бағынышты мәліметтер жиынында тек қана бағыныңқы жазулар көрсетіледі
В. Мәліметтеді МҚ-ға енгізу үшін, экрандық форманың құрылуы.
Жұмысты ары қарай жалғастыру үшін, DataModule5 контейтерін дайындаймыз. Delphi компоненттер палитрасынан Data Access парағынан TTаblе визуалды емес компонентін қосамыз. Оның DatabaseName (МҚ псевдонимі) қасиетін PRIMER –ге пайда болған тізімнен немесе қолымын енгізіп ауыстырамыз. Tаblе3-те TableName (МҚ кестесінің аты) қасиетінің мәнін PRIHOD.DB деп аламыз. Содан соң, Active қасиетін True леп аламыз. TDataSource компонентін орналастырамыз, DataSource3 компонентінің DataSet қасиетін Table3 деп белгілейміз. PRIHOD.DB кестесімен байланысы үшін, визуалды емес компоненттері контейнерге міндетті түрде қосу керек, себебі оған ұқсас DataModule контейнердегі компоненттер бір-бірімен байланысқан және кейін оған циклдік қатынау жасалуы мүмкін.
№2 формаға Data Controls компоненттер палитрасынан TDBGrid элементін орналастырамыз. №2 форманың unit мәтін модуліне Unit5 модулінің атын алдын ала қосып, DBGrid компонентінің DataSource қасиетін DataSource3 деп белгілейміз.
Енді Table3 кестесінің мәліметтер жиынында тек TDBGrid торынан ғана емес, басқа да визуалды компоненттер арқылы қатынауға болатындай жасаймыз.
№2 формаға TDBEdit компонентін (Data Controls компоненттер палитрасы) қосамыз. TDBEdit1 компоненті арқылы қатынау жасауға болатын, рұқсаттаманы анықтайық. Ол үшін, оның қасиеттерінің мәндерін - DataSource :DataSource3 деп алып, DataField қасиетін DatPrih деп аламыз. TDBEdit2 компоненті арқылы қатынау жасауға болатын, рұқсаттаманы анықтайық. Ол үшін оның DataSource қасиетін DataSource3 мәніне, ал DataField қасиетін Kolvo деп белгілейміз.
TDBLookupComboBox компонентін орналастырамыз. Осы компоненттің қасиеттерін орнатамыз:
-
DataSource - қасиеті DataModule5.DataSource3;
-
DataFiled - қасиеті Material;
-
List Source - қасиеті DataModule5.DataSource1
-
ListField - қасиеті Material;
-
KeyField - қасиеті Material.
Экрандық формада МҚ басқару батырмаларын қосу.
Экрандық формада МҚ кестелері бойынша навигацияны қамтамасыз ететін, және оның қалпын басқаратын батырмаларды құруға болады.
Ол үшін, қосымшаға бес TButton (Standard компоненттер палитрасының парағы) батырмаларын қосамыз. Осы компоненттердің аттарын объектілер инспекторын қолданып, өзгертеміз. Сәйкесінше InsertButton, EditButton, DeleteButton, PostButton, CancelButton. Осы батырмалардың атауларын (Caption қасиеті) объектілер инспекторын қолданып өзгертейік, сәйкесінше "Добавить", "Изменить", "Удалить", "Запомнить", "Закрыть" (23-сурет).
23-сурет – Ағымды мәліметтер жиынымен жұмыс істеуге арналған, визуалды компоненттері бар форма
Тышқан көмегімен InsertButton батырмасын таңдап, оны екі рет шертеміз. Автоматты түрде кодты редактрлеу терезесіне көшеміз. OnClick қалпына келесі бағдарлама кодын енгіземіз:
procedure TForm2.InsertButtonClick(Sender: TObject);
begin
DataModule5.Table3.Insert;
end;
Insert тәсілі Table1 мәліметтер жиынын жазуды қосу режиміне көшіреді. Өріс мәндерін енгізілуі DBEdit1, DBLookupComboBox1, DBEdit2 компоненттерімен жүзеге асады. Ол үшін, мәліметтер жиыны dsBrowse режимінде болуы керек.
EditButton басқан кездегі өңдеуді анықтайық:
procedure TForm2.EditButtonClick(Sender: TObject);
begin
DataModule5.Table3.Edit;
end;
Edit тәсілі Table1 мәліметтер жиынын жазбаны қосу қалпына келетіреді. Өріс мәндерін енгізілуі DBEdit1, DBLookupComboBox1, DBEdit2 компоненттерімен жүзеге асады. Ол үшін, мәліметтер жиыны dsBrowse режимінде болуы керек.
DeleteButton батырмасынын басылу нәтижесін анықтайық:
procedure TForm2.DeleteButtonClick(Sender: TObject);
begin
IF MessageDlg('Подтвердите удаление записи', mtConfirmation,[mbYes, mbNo],0) = mrYes THEN DataModule5.Table3.Delete;
end;
Егер Table1 мәліметтер жиыны жазбаларды қарап шығу dsBrowse режимінде болса, сұхбат терезесі шақырылады (егер MessageDlg функциясы орындалға болса); егер пайдаланушы Yes батырмасын шертсе, ағымды жазбаның Table1 мәліметтер жиынынан өшірілуі пайда болады.
PostButton басылу нәтижесін қарастырайық:
procedure TForm2.PostButtonClick(Sender: TObject);
begin
DataModule5.Table3.Post;
end;
Егер мәліметтер жиыны жаңа жазбаны қосу немесе түзету режимінде болса, онда Post берілгендер тәсілінің орындалуы жүргізіледі. Ол МҚ кестесіндегі ағамды күйін еске сақтайды. Еске сақталғаннан кейін, мәліметтер жиыны қарап шығу режиміне dsBrowse көшеді.
CancelButton батырмасынын басылу нәтижесін анықтайық:
procedure TForm2.CancelButtonClick(Sender: TObject);
begin
close;
Form1.Visible:=true;
end;
Егер мәліметтер жиыны жаңа жазбаны қосу немесе түзету режимінде болса, онда Cancel берілгендер тәсілінің орындалуы жүргізіледі. Ол МҚ кестесіндегі жазбаның еске сақталуын болдырмайды және мәліметтер жиынын қарап шығу режиміне ауыстырады да мәзір формасына көшеді.
Мәліметтер жиынын жазбаның қосылу немесе өзгерту режиміне ауыстыруға болмайтындай ету үшін, сонымен қатар DBGrid1 компонентінен жоюға болмайтындай ету үшін, DBGrid1.ReadOnly қасиетін True мәніне орнатамыз. Содан соң, қосымшаны іске қосамыз. Жазбаларды өзгертуге немесе басқа жазба жазу үшін, DBEdit1, DBEdit2 компоненттеріне енгізуге және DBLookupComboBox1 компоненті тізіменен мәнді таңдау негізінде қолданылады (24-сурет).
24-сурет – Жаңа жазбаны қосу
Жазбаны өзгерту кезінде де солай болады. Жазбаны жойған кезде, сұхбаттық терезе пайда болады (25-сурет).
25-сурет – Жазбаны жою жөніндегі қолдау
Достарыңызбен бөлісу: |