Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Зертханалық жұмыс 15-16 и 17-18.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
329.91 Кб
Скачать

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-сурет – Жазбаны жою жөніндегі қолдау