
- •Зертханалық жұмыс №1 (6сағат) байланыспаған кестелермен және локалды деректер базасымен жұмыс жасау
- •6.1. Локалды деректер базасымен жұмыс істеуге арналған қосымша
- •6.1.1. Жұмыстың мақсаты
- •6.1.2. Жұмысты орындауға арналған тапсырмалар
- •6.1.3. Қосымшаны құрастыру процесі
- •6.1.4. Деректер базасының псевдонимін құру
- •6.1.5. Деректер базасы кестесінің жазбаларының құрылымын жасау
- •6.1.6. Негізгі форма мен оның дб-мен жұмыс істейтін компоненттерін жасау
- •6.1.6.1. Негізгі компоненттерді орналастыру мен жөндеу
- •6.1.6.2. Панельдерді орналастыру және жөндеу
- •6.1.6.3. DbGrid компонентін жөндеу
- •6.1.6.4. Есептелетін өрісті құру
- •6.1.6.5. Форманы кестенің өрістер редакторынан алынған терезелермен толықтыру
- •6.1.8. «Деректерді көрсету» ішкі мәзірінің әдістері
- •6.1.8.1. Query компонентінің көмегімен сұрату арқылы таңдау
- •6.1.8.2. Table және Query компоненттерінің фильтрлерімен таңдау
- •6.1.9. Мәліметтерді сұрыптау әдістері
- •6.1.10. Мәліметтерді іздеу әдістері
- •6.1.12. ‘График’ мәзірі командасы әдісі және графиктің бапталуы
- •6.1.14. Проект мысалының листингісі
- •6.1.15. Локальдық мәліметтер қорымен жұмыс үшін тапсырмалар нұсқалары
- •6.1.16. Бақылау сұрақтары
- •6.2. Екі кестені біріктіруге арналған қосымша 1:1
- •6.2.1. Жұмыстың орындалу мақсаты және тапсырмалары
- •6.2.2. Қосымшаны өңдеу процесі
- •6.2.3. Екі кестедегі мәліметтерді біріктіру әдісі
- •6.2.4. Бақылау сұрақтары
- •6.3. Бір типті мәліметтер базасының кестелерінің қосу, ажырату және жасау қосымшасын құру
- •6.3.1. Жұмыстың орындалу мақсаты және тапсырмалары
- •6.3.2. Қосымшаны өңдеу процесі
- •6.3.3. Екі кестенің мәліметтерімен жұмыс жасауға арналған әдіс
- •6.3.4. Бақылау сұрақтары
- •Зертханалық жұмыс №2(4 сағат). Кестелермен байланысқан локальдық мәліметтер базасымен жұмыс
- •7.1. Тәуелді кесте жазбаларының құрылымын өңдеу үшін орнатылған Lockup қасиеті көмегімен кестелерден жіберілетін мәнді таңдауға арналған қосымша құру
- •7.1.1 Программаның орындалу мақсаты және тапсырмалары
- •7.1.2. Қосымшаны өңдеу процесі
- •7.1.3. Екі кестенің деректерімен жұмыс жасауға арналған әдіс
- •7.1.4. Бақылау сұрақтары
- •7.2. Тәуелді кестенің жаңа өрісін құру кезіндегі өрістердің редакторы көмегімен анықталған мүмкін болатын мәндерді таңдауға арналған кестесі бар қосымша
- •7.2.1. Жұмыстың мақсаты, тапсырмасы және орындалу процесі
- •7.2.2. Бақылау сұрақтары
- •7.3. Referential Integrity қасиетінің көмегімен байланысқан кестелерге арналған қосымша
- •7.3.1. Жұмыстың мақсаты және орындалу тапсырмасы
- •7.3.2. Жұмыстың орындалу барысы
- •7.3.3. Бақылау сұрақтары
7.2.2. Бақылау сұрақтары
Мүмкін болатын мәндердің тізімінен өрістің мүмкін болатын мәндерін таңдау үшін жаңа өрісті қалай құруға болады?
Бір-біріне ұқсас екі өрістің біреуін қалай көрінбейтін етуге болады?
7.3. Referential Integrity қасиетінің көмегімен байланысқан кестелерге арналған қосымша
7.3.1. Жұмыстың мақсаты және орындалу тапсырмасы
Жұмыстың мақсаты бағыныңқы (тәуелді) кестенің Referential Integrity қасиеті және мүмкін болатын мәндердің құламалы тізімінің Lookup қасиеті көмегімен кестелер арасында байланыс құру болып табылады.
Негізгі және бағыныңқы кестелердің Dep өрістерінің арасында “бірдің көпке” байланысын орнату.
Жұмысты орындау және бақылау сұрақтарына дайындалу үшін 9.1.4.4, 9.3.2.8. және 9.4.2.4. бөлімдерінің материалдарын қарастыру керек.
Негізгі және тәуелді – екі кестемен жұмыс жасауға арналған қосымшаны жасау. Тәуелді кестенің мүмкін болатын мәндері негізгі кестеден анықталады. Мүмкін болатын мәндердің тізімін құру үшін бағыныңқы кестенің Lookup қасиетін қолдану керек.
Жазбаның құрылымы 7.1.-бөлімнің жазба құрымына ұқсас.
Форма компоненттерінің құрамы және оларды жөндеу 7.1.2.-бөлімінде көрсетілгендермен ұқсас. Тәуелді кестенің жазбаларының құрылымын құру кезінде Table Lookup (таңдау кестесі) қасиетін 7.1.2. бөлімінде көрсетілгендермен ұқсас.
7.3.2. Жұмыстың орындалу барысы
Database Desktop ортасында деректер қоры каталогты ағымдағы етіп орнату керек. Ол үшін Database Desktop жүйесін шақыру керек. Одан File/ Working Directory командасын шақыру. 7.9-суретте көрсетілген директорияны орнатуға арналған терезе пайда болады. Browse батырмасын басу, дискті және деректер қоры бар каталогты таңдау.
7.9-сурет. Database Desktop ортасында ағымдағы каталогты орнатуға арналған форма көрінісі
Dep.db (негізігі) және Pers1.db (бағыныңқы) кестесінің жазбалар құрылымын құру. Pers1 жазбасында Dep2 (типі Referential Integrity болатын осы өріспен байланыстыру үшін Dep2 өрісін міндетті түрде индекстеу керек), Fam, God_R – өрістерін екінші ретті (вторичный) индекстер етіп орнату.
Referential Integrity қасиетінің көмегімен бағыныңқы кестені негізгі кестемен байланыстыру үшін Table Lookup қасиетін орнатқаннан кейін қасиеттер кестесінен Referential Integrity қасиетін таңдау. Paradox 7 Table: Pers1.db формасы (7.10-сурет) пайда болады. Define (байланысты анықтау) батырмасын басу. Referential Integrity формасы (7.11-сурет) пайда болады. Одан екі кестенің байланысын анықтау керек. Бұл байланыстың негізгі қасиеттері 9.3.2.8-бөлімде келтірілген.
Referential Integrity формасындағы Fields терезесінде бағыныңқы кестенің өрістерінің тізімі көрсетілген. Байланыс орнатуды рұқсат етпейтін өріс аттары сұр түспен ерекшеленген. Кестелерді байланыстыру үшін Dep2 өрісін таңдау және оңға нұсқалынған батырманы басу. Child fields өрісінде таңдалынған өрістің аты және оның типі Dep2[12] пайда болады. Table терезесінде деректер қоры бар каталог файлдарының тізімі көрсетілген. Кестелерді байланыстыру үшін негізгі кестені (Dep.db) таңдау және солға нұсқалынған батырманы басу керек. Parent’s key (ата-бабалық кілт) өрісінде кестелерді байланыстыру үшін сәйкес келетін бірінші түскен өрісінің аты пайда болады (Dep1[A12] 7.11-суретте) .
7.10-сурет. Referential Integrity қасиетін таңдауға арналған форма көрінісі
7.11-сурет. Типі Referential Integrity болатын байланысты анықтауға арналған форма көрінісі
Егер негізгі кестедегі бағыныңқы кестемен байланысты кілттік өрістің мәнін өшірсек немесе өзгертсек не болатынын Update rule радиобатырмалар тобы арқылы орнатуға болады. Егер Prohibit (рұқсат етпеу) опциясын таңдасақ, онда операция мүмкін болмайды. Егер Cascade (жазбаларды каскадты түрде кетіру) опциясын таңдасақ, онда:
негізгі кестедегі кілттік өрістің мәнін ауыстырған кезде ол бағыныңқы кестедегі жазбаларда автоматты түрде өзгереді;
егер негізгі кестедегі жазбаны кетірсек, онда осы кілттік өрістің мәнімен байланысты бағыныңқы кестедегі барлық жазбалар автоматты түрде кетіріледі.
Referential Integrity байланысын анықтағаннан кейін ОК батырмасын басу. Құрылған байланыстың атын енгізуге арналған терезе пайда болады (7.12-сурет). Терезеге ат енгізіп, ОК батырмасын басу.
7.12-сурет. Байланыс атын енгізуге арналған терезе көрінісі
Қосымшаны әзірлеу (разработка) ортасында кестелер арасында байланыс орнату үшін бағыныңқы кесте (Table2) үшін келесі қасиеттерді орнату:
MasterSource=DataSource1;
IndexName=Ind_Dep2 (байланыс өрісінің индексі);
Одан кейін MasterFields қасиетінің мәндер облысындағы көп нүктеге басу. Өрістердің байланысын орнатуға арналған Field Link Designer терезесі пайда болады (7.13-сурет).
AvailableIndexes құламалы тізімінен бағыныңқы кестесінің (Ind_Dep2) байланыс өрісінің атын таңдау. Detail Fields терезесінде өрістің аты=Dep2 пайда болады. Осы терезеден Dep2 жолы және MasterFields терезесінен Dep1 жолын таңдау. Add батырмасы іске қосылады. Add батырмасын басу. Joined Fields (байланысқан өрістер) терезесінде Dep2->Dep1 тексті бар жол пайда болады. Add батырмасын басу қайтадан мүмкін емес болып қалады. OK батырмасын басу (7.14-сурет).
Бағыныңқы кестенің MasterFields қасиетінде Dep1 мәні пайда болады.
Кестелер арасындағы Referential Integrity типті байланысты анықтау және орнату аяқталды. MasterFields=Dep1 қасиетінің мәнін (байланысты орнату үшін) қосымшаны әзірлеу этапында қолмен немесе қосымшаны жүргізу кезінде программалық түрде орнатуға болады.
Қосымшаны әзірлеу және жүргізу кезінде байланысты орнату бағыныңқы кестедегі негізгі кестенің Dep1 өрісінің мәнімен Dep2 өрістерінің мәні сәйкес келетін жазбаларды ғана көрсетуді шақырады. Байланыс орнатылған кестелер үшін форма көрінісі 7.15-суретте көрсетілген (MasterFields=Dep1), ал орнатылмаған кестелер үшін – 7.16-суретте (MasterFields=’’, мұндағы ‘’ – бос жол).
7.13-сурет. Таңдалған байланыс өрістері байланысының дизайнерінің көрінісі
7.14-сурет. Таңдалған байланыс өрістері байланысының дизайнерінің көрінісі
7.15-сурет. Байланыс орнатылған кестелер үшін форма көрінісі
7.16-сурет. Байланыс орнатылмаған кестелер үшін форма көрінісі
Қосымшаны әзірлеу және жүргізу кезінде байланыс орнатылмаса мәліметтерді IndexName немесе IndexFieldName қасиеттерінің көмегімен сұрыптауға болады. Бұдан кейін Table2.MasterFields қасиетінің көмегімен кестелер байланысын қайтадан орнату үшін аталған қасиеттердің мәндерін алып тастау:
Table2.MasterFields:=’Dep1’ үшін байланыс орнатылады;
Table2.MasterFields:=’’
Форма модулінің тексті 7.3-листингіде келтірілген.
7.3-листинг. Referential Integrity типті байланысы бар кестелерге арналған форма модулінің тексті
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls, DBCtrls, Grids, DBGrids, DB,
DBTables;
type
TForm1 = class(TForm)
Table1: TTable; // - негізгі кесте
DataSource1: TDataSource; // - негізгі кесте үшін
DBNavigator1: TDBNavigator; // - “ “ “ “
DBGrid1: TDBGrid; // - “ “ “ “
Table2: TTable; // - бағыныңқы кесте
DataSource2: TDataSource; // - бағыныңқы кесте үшін
DBGrid2: TDBGrid; // - “ “ “ “
DBNavigator2: TDBNavigator; // - “ “ “ “
BitBtn1: TBitBtn; // - ВЫХОД
Button1: TButton; // - кестелердің байланысын орнату
Button2: TButton; // - кестелердің байланысын жою
Table1Dep1: TStringField; // - подразделение
Table1Proisv: TBooleanField; // - тип подразделения
// - бағыныңқы кесте үшін
Table2Num: TAutoIncField; // - жазбаның нөмірі
Table2Dep2: TStringField; // - Table2DepN бөлімінің аты
Table2Fam: TStringField; // - фамилия
Table2Nam: TStringField; // - аты
Table2Par: TStringField; // - әкесінің аты
Table2Year_b: TSmallintField; // - туған күні
Table2Sex: TBooleanField; // - жынысы
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private { Private declarations }
public { Public declarations }
end;
var Form1: TForm1;
implementation {$R *.dfm}
// заполнение выпадающего списка с наименованиями подразделений
procedure TForm1.FormCreate(Sender: TObject);
begin
DBGrid2.Columns[1].PickList.Clear; // - тізімді тазарту
with Table1 do begin // - Table1-ге қосылу
First; // - Table1-дің бірінші жазбасына өту
while not EOF do
begin // - PickList тізімін толтыру
DBGrid2.Columns[1].PickList.Add(FieldByName('Dep1').Value);
Next; // - Table1-дің келесі жазбасына өту
end; // while
end; // with
end; // - әдістікі
// установить связь между таблицами
procedure TForm1.Button1Click(Sender: TObject);
begin
Table2.MasterFields:='Dep1';
end;
// отменить связь между таблицами
procedure TForm1.Button2Click(Sender: TObject);
begin
Table2.MasterFields:=' ';
end; end.