5.6. Меню конструкторын жабамыз. не Form1 формасында жасалынушы мәзірдің бейнеленуін белгілеп қоямыз.
Барлық пунктілердің жұмыстары толығымен істеп тұрады.
6. Баспа меню пунктісін таңдау кезінде №3 жұмыста істелінген отчетті алдын ала қарауға болады,онда телефон нөмірлері тіркелінген адамдар тізімі шығады.баспа баспа тәртіпте шығарылады.Бұл пунктілер жұмыс істеу үшін
Келесі әрекеттерді орындау керек:
6.1 MyUnitReport файл 2. pas жобаға қосамыз,№3 Және
Түр модулі мәтінінде pas . MyUnitReport . астында оның сақтаймыз
Form 2( түр есептеу нәтижесімен ) қолданылатын жариялау бөлімін
Implementation секциясында модульдерін өзгертеміз.
USES MyExUnitDB3;
Бөлімге
USES MyExUnitDB7;
6.2. Form1 модуль мәтінінде implementation секциясында келесі сөздерді формамен байланысын жазамыз.
USES MyUnitReport ;
6.3. Form1 формасында баспа мәзір пунктің активтейміз және шыққан
OnClick оқиғасында алдын ала қарау тәртібінде есептеу нәтижесінің операторын енгіземіз:
Procedure TForm 1. Print - ptClick ( Sender : TObject );
Begin
Form 2. QuickRep 1. Preview ;
End ;
7. Шығу мәзір пункті үшін,келесі әрекеттерді орындаймыз:
тап осы пункті активтейміз және шыққан өңдеушіде
OnClick оқиғасында жұмыстар аяқтауды қамтамасыз ететін операторды енгіземіз:
procedure TForm1.Exit-ptClick (Sender: TObject);
begin
Close;
end;
8. Туған жылдары немесе фамилиясы арқылы іздеу үшін тағы да екі терезе керек,әрбір терезеде іздейтін сұраныс өрістері құрылады. Оларды құру үшін келесі ірекеттерді орындаймыз:
8.1 Жобаға жаңа форма қосамыз. Форманын размерін тігінен кішірейтіп,жолынан үлкейтіп өзгертеміз. Caption қасиетін «Поиск по фамилии». формасына өзгертеміз. Форманы Search7.pas. файылында сақтаймыз.
8.2 Standart бетінен Label компонентасын еңгіземіз. Caption қасиетін «Введите фамилию искомого человека» өзгертеміз, Font қасиеті арқылы шрифті полужирный тандаймыз (13-сурет).
13-сурет – Тегі бойынша іздеу формасы
8.3 Label1 компонентін формаға еңгіземіз,және Edit компонентінің размерлерін жазықтығы бойынша үлкейтіп, өзгертеміз.
8.4 Additional бетінен BitBtn кнопкаларын тандаймыз. Caption ОК, Kind ке bkOK, ModalResult mrOK қылып Name
OKBtnке өзгертеміз. Label1 «Введите дату рождения человека» деген атын, Label «дата вводится через точку» еңгіземіз (14-сурет).
14-сурет – Туған күні бойынша іздеу формасы
8.6 Form1, Form3, Form4 арасында байланыс орнатамыз Form1 формасында implementation секциясында келесі һрістерді еңгіземіз.
USES MyUnitReport, Search7, Search7-1;
9. фамилиялар арқылы мәзір асты іздеу үшін OnClick оқиғасына келесі жолдарды еңгіземіз:
procedure TForm1.Family1-ptClick (Sender: TObject);
begin
IF Form3.ShowModal = mrCancel THEN Exit;
Form1.Table1.IndexName := ‘FamilyIndex’;
Form1.Table1.SetKey;
Form1.Table1.FieldByName(‘Family’).AsString := Form3.Edit1.Text;
Form1.Table1.GotoNearest;
end;
10. «По дате рождения» пунктімен жұмыс істеу үшін OnClick оқиғасынын түрі мынандай болу керек:
procedure TForm1.Date-ptClick (Sender: TObject);
begin
IF Form4.ShowModal = mrCancel THEN Exit;
Form1.Table1.IndexName := ‘BirthdayIndex’;
Form1.Table1.SetKey;
Form1.Table1.FieldByName(’Birthday’).AsString := Form4.Edit1.Text;
Form1.Table1.GotoNearest;
end;
11. Номерлары арқылы сорттау пунктінде OnClick ті активтендіру үшін келесі жолдарды жазу керек:
procedure TForm1.Number-ptClick (Sender: TObject);
begin
Form1.Table1.IndexName := ‘Number’;
Form1.Table1.SetKey;
Form1.Table1.GotoNearest;
end;
12. Фамилиясы бойынша сорттауда OnClick оқиғасында келесі кодтты жазу керек:
procedure TForm1.Family2-ptClick (Sender: TObject);
begin
Form1.Table1.IndexName := ‘FamilyIndex’;
Form1.Table1.SetKey;
Form1.Table1.FieldByName(‘Family’).AsString := ‘A’;
Form1.Table1.GotoNearest;
end;
13. Run|Run командасы арқылы бағдарламаны іске қосамыз.
14. Қосымшаны шығу батырмасын басып,немесе файл\шығу арқылы жабамыз.
15. Жобадағы барлық өзгертулерді сақтаймыз.
Зертханалық жұмыс №4 «Кітапхана жүйесі» деректер қорын басқару жүйесін құру
Зертханалық жұмыстың мақсаты: «Кітапхана жүйесі» ДҚБЖ алдын ала жобалап, меңгерілген теориялық мәліметтерге сүйеніп жүйені құру.
Теориялық жалпы ережелер
Мәліметтер қорына кіріспе. өрістер. Мәліметтердің жиыны.
"Кітапхана"МҚ демонстрациясы.
Барлық төменде келтірілген мысалдар "Кітапхана " МҚ"-на жатады, оның басқару жүйесі кітаптарды опт түрінде әкелушінің жұмысын автоматизациалау үшін берілген.
Информациондық ағымдарды қорыту.
Кітаптарды көтерме түрінде әкелуші баспасөздер (кітапты әкелетіндер) мен дүкендер (кітапты сатып алушылар) арасында аралық шеп болып келеді. Бұл шептің болуы бірншісі мен екіншісіне де ыңғайлы болып келеді: баспасөз кітапты шығарысымен тираждың барлығын не бір бөлігін көтерме әкелушіге тасымалдайды, осы арқылы ол көптеген дүкендермен байланысты іздеуден құтылады; дүкендер осы арқылы көтерме әкелушіде өзіне тек Ресейде ғана емес, Таяу шет елдердің баспасөздермен шығарылған кітаптарды табады. 1 суретте көтерме әкелуші мен серіктестері арасындағы байланыс бейнеленген.
Сонымен, көтерме әкелуші мен оның әріптестері алмасатын құжаттың екі түрі бар: беру, сатып алу немесе қайтару тіркеме қағаз және төлемдер туралы құжат. Тіркеме қағазы кімге, неше, қандай кітаптар сатылды (сатып алынды) туралы мәліметтер беріледі. Төлемдер туралы құжатта - төлемдер сомасы мен әріптестердің аты беріледі.
Зертханалық жұмысты орындаудың тәртібі
МҚ-ның жобасын жасау.
Біздің МҚ бойынша кем дегенде 5 кесте болу қажет. FIRMS кестеде әріптестер туралы барлық керекті мәліметтер болады. Осы кестеде – әріптестіктердің байланысушыларыдың заңды мекен-жайы, телефоны және әріптестің толық атауы көрсетіледі. Осы кестеде сонымен қатар, әрбір серіктердің жиналған қарызы сақталады, ол көбінесе сальдо деп аталады. BOOKS кестесінде кез келген тасымалдап-жеткізушіге (баспасөзде) немесе айырбастау арқылы бір рет болса да сатып алынған әрбір кітап туралы мәлімет болады. NAKLS кестесі тiркеме қағаздар туралы мәліметтері орналасады, яғни осы кестеде тіркеме қағаздың типі, жібері мерзімі, тауарларды қабылдау туралы мәліметтер сақталады. Осы кестеде өрістердің аралық саны бола алмайтыны анық, сондықтан тіркеме қағазбен байланысты кітап туралы мәліметтерді MOVEBOOK кетесінде сақтаймыз. Оның өрістерінде сәкес тіркеме қағазға, тасымалданған кітаптардың саны мен атаулары жөнінде арнайы сілтемені белгілейміз. PAYMENTS кестеде төлемдер туралы мәлімет болады. Яғни кім және кімге қанша ақша төлейтіні.
Төменде "Кітапхана" МҚ-ның негізгі кестелері берілген.
Кесте 1 – NAKLS кестесі
Өріс аты
|
Қызметі
|
NaklID
|
Салымның униклды идентификаторы. Осы өріс бойынша алғашқы кілтті жасау керек.
|
NDate
|
Тіркеу қағазының құрастыру мерзімі. Осы өріс бойынша салымдарды, олардың келуі бойынша сұрыптау үшін индексті жасау керек.
|
NRetDate
|
Сатылмаған кітаптардың қайтару мерзімі. Уақыты өткен сайын кітаптар қабылданбайды немесе қайтарылған кітаптардың бағасы төмендейді. Айырбастау тіркеу қағаздарында қолданбайды.
|
NType
|
Тіркеу қағазының типі: 0 — жабдықтаушыдан сатып алу; 1 — сатып алушыға сату; 2 — жабдықтаушыға қайтару; 3 — сатып алушыдан қайтарым; 4 — кітаптар айырбас арқылы алынады; 5 — кітаптар айырбас арқылы тасымалданады; 6 — алғытөлем арқылы кітапты сатып алу; 7 — алғытөлеммен кітапты сату
|
NFirm
|
Әріптестің уникалды идентификаторы (FIRMS кестесінің FirmID өрісі)
|
NCoeff
|
жеңілдік\үстеменің өлшемі. FIRMS кестесінің FCoeff өрісінен көшіріледі, себебі бұл өріс уақыт өткен сайын өзгертіледі
|
NSum
|
NCoeff өрісінің мәнін ескергендегі соммасы.
|
|
салымның сомасы
|
NPayedSum
|
Төленген сома. Айырбастау тіркеу қағаздарында қолданылмайды.
|
NRetSum
|
Қайтару сомасы. Айрбастау тіркеу қағаздарында қолданылмайды
|
Кесте 2 – BOOKS кестесі
өріс аты
|
қызметі
|
BookId
|
Кітаптың уникалді коды (алғашқы кілт)
|
BName
|
Кітаптың аты (индекстік өріс)
|
BAuthor
|
Автор(лар)
|
BPublish
|
Баспасөз
|
BYear
|
Шығарылған жылы
|
В Pages
|
Беттер саны
|
BISBN
|
Код ISBN
|
BStand
|
Қаптаманың стандарты (орамадағы кітаптар саны)
|
BQuan
|
Қоймада қалған кітаптар саны
|
В Price
|
Кітапты сатып алу бағасы
|
BOpt
|
Көтерме сатып алу бағасы
|
BRozn
|
Бөлшектік бағасы
|
Кесте 3 – FIRMS кестесі
өріс аты
|
қызметі
|
FirmId
|
Әріптестің уникальі идентификаторы (алғашқы кілт)
|
FName
|
Әріптестің аты (индексті өріс)
|
FAddress
|
Адрес
|
FCity
|
қала
|
FPhone
|
Телефон(дар)
|
FEMail
|
Электронды почтаның адресі
|
FPerson
|
Байланыс адамы (адамдар)
|
FFinDelta
|
Қаржылық сальдо
|
FCngDelta
|
Айырбастау сальдосы
|
FCoeff
|
Жеңілдіктер/үстемелер коэффициенті
|
FRetDays
|
Қайтару күндерінің саны
|
Кесте 4 – MOVEBOOK кестесі
өріс аты
|
қызметі
|
MoveId
|
Уникалды идентификатор (алғашқы кілт)
|
MNakt
|
NAKLS кестесінің NaklId өрісінен салым коды (индексті өріс)
|
MBook
|
BOOKS кестесінің BookId өрісінен кітап коды өрісі (индексное поле)
|
MQuan
|
Кітаптың экземплярының саны
|
M Price
|
Жеңілдіктер/үстемелер мөлшерін ескеруімен бір экземплярың бағасы
|
Кесте 5 – PAYMENTS кестесі
өріс аты
|
қызметі
|
PayID
|
Төлем құжатының уникалды идентификаторы (алғашқы кілт)
|
PFirm
|
FIRMS кестесінің FirmId өрісінің әріптес коды
|
Pout
|
Төлем бағыты: True — серіктеске; False — серіктестен
|
Pdate
|
Төлем мерзімі
|
PSum
|
Төлем мерзімі
|
Кестелер мен өрістердің аттары
Файл-сервердік МҚ-да кестенің аты файл атымен сәйкес келеді. Windows - тың 32-разрядты версияларында орыстілдес аттарына ған рұқсат беретіндіктен, кестелерді КІТАПТАР, ТІРКЕУ ПАРАҚТАРЫ, т.б. деп атау ыңғайлы болушы еді. Бұны жасауға болмайды, себебі кириллицаны SQL-де пайдалануға болмайды.
Өрістерің атында кесте атының бір-екі әріптен құрылған префиксті қоюға пайдалы (NAKLS кестесінде барлық аттар «N» әрпінен басталады, FIRMS кестесінде «F» әрпінен т.с.с.). Бұл сіз өрісті SQL тілінің резервті сөзімен атауынан құтқарады. Өрістер атын мүмкіншілігіңіз бойынша ықшамды етуіңізге тырысыңыз – бұл бағдарламаның кодын және оны құру уақытын қысқарады.
Кестелерді құрастыру .
МҚ-ны құрастырудан бұрын, оның каталогын құрастырамыз - C:\BIBLDATA. Файл-серверлі МҚ кестелерін жасау Delphi құрамына кіретін, Database Desktop (DBD) утилиті арқылы жасалады.
DBD утилиті арқылы кестені жасауға өзгертуге, жазуларды жасау, өзгерту, оларды қарауға болады. Өкінішке орай ол кириллицаны қабаламайы, сонықтан біз орыс тіліндегі жазулармен жұмыс істей алмаймыз. Басқа оның сондай үлкен кемшілігі клиент-серверлік МҚ-да қолдана алмайтынымызда.
Пуск ► Программы ► Borland Delphi 7 ► Database Desktop командасы арақылы DBD қосыңыз. Бірінші істейтініміз, утилитаның жұмыс каталогын жөнге келтіру керек, ол үшін File > Working Directory командасын тандап, шыққан терезеде каталогына сілтемені тандаңыз(1.3 суреті).
NAKLS кестесін жасау үшін File ► New ► Table команасын тандаймыз. DBD Create Table терезесін ашады, онда кесте типін таңдауға болады. Кестенің типі оның көптеген қасиеттерін анықтайды. Paradox 7 типі файл-серверлік кестелері үшін ең жақсысы деп есептеуге болады: ОК батырмасын шертіп Paradox 7 нұқасына қосыламыз. Экранда кесте структурасын құрасытыру және өзгертуге арналған терезе ашылады(1.4 сур.).
Бұл терезенің Field roster кестесінде құрастырылатын кестенің әр бір өрісіне бір жазу сәйкес келеді: Field Name бағанына өріс атын енгізу керек, Туре бағанаына - өрістерде саталынатын мәліметтердің типін анықтайтын типті енгізу керек, Size бағанына - өрістің ұзындығын анықтайтын санды енгізуге керек (өрістің барлық типіне міндетті емес), Key бағанасына – жұлдызша (*) символын, егер бұл өрістің мәні бойынша алғашы кілтті құрастыру керек болса.
Бірінші өрістің NaklId атын енгізіңіз және келесі бағанаға өту үшін табуляция пернесін басыңыз, онда өрістің типі енгізіледі. DBD утилиті бола алатын типтерін көрсету үшін бос орын пернесін басыңыз және онда Autoincrement типін тандңыз. Автоинкриментті типті өрістер бірмәнде жазуды анықтайтын уникальді саны жасау үшін қолданылады: бірінші ажзу үшін - 1 саны , екіншісі үшін – 2, т.с.с. белгілі бір жазуды алып тастағанда ол үшін белгіленген сан жанадан қолданылмайды. Key бағанасына басыңыз. Пробел пернесіне басыңыз, өріс бойынша алғашқы кілтті жасау үшін.
1.5 суретте көрсетілген дей NAKLS кестені толтыруды жалғастырыңыз. Алғашқы 4 өрісі бойынша Required Field флажокты қойыңыз. 4 басқа өріс келесі жазуды енгізген кезде анықталмауы да мүмкін, олар үшін Default value жолында мәнін енгізуге болады: NCoeff өрісі үшін мұндай мән 1 болады, қалғаны үшін 0. NDate өрісі бойынша индексті анықтау керек (кестелерінің терминологиясыеда ол екіншілік деп аталады). Бұл үщін терезенің оң жақ бұрышында Table properties тізімін ашыңыз, Secondary Indexes пункті таңдаңыз және пайда болған Define пернесіне басыңыз. Тересінде Define Secondary Index (1.6 сурет) кестенің өрістер тізімінде NDate өрісті тандаңыз содан кейін он жаққа бағдаршамен пернесіне басыңыз, ол Indexed fields тізіміне өрісті ауыстыру үшін.
Index options топты флажоктар арқылы келесі индекс өзгешеліктерін анықтауға болады:
Unique - индекс уникальді мәндерін сақтайды;
Maintained —индексті өрістер мәндерінің артуы бойынша сортталады.;
Case sensitive — индекс мәтіндік өрістерде әріптер регистіріне сезімтал;
Descending — индексті өрістер кему бойынша топталады.
Біздің жағдайда бұл фажоктар қалпын өзгеріссіз қадырамыз. DBD индекс атын сұрайды(МҚ серверінің көбіндегіндей кестелерінде индекстер есімделеді ) Nakls_date – жолын енгізіңіз, ОК пернесіне басыңыз. Қайтадан пайда болған кестенің структурасын анықтау терезесінде Save as пернесіне басыңыз және содан кейін файл атын енгізіңіз - Nakls .
Жаңа ғана біз NAKLS кестенің структурасын жасадық. өрістер сипаттауын қолданнып сендер өзіңіз көрсетілімді МҚ-ның басқа қалған кестелердің сруктурасын жасай аламыз.
Қойғызу кестесі.
Кестенің қайсыбір өрісне басқа таблицаның өрісімен бітмәнді байланысты орнату керек. Бұл жағдайда BDE бірінші кестенің өрісіне жаңадан енгізілетін жазудың мәні басқа ,бұл кезде қойғызу кестесі еп аталатын, кестенің белгіленген жазудың мәні болатындай етіп бақылауы жүзеге асырады. Мысалы, біздің МҚ-да DBD арқылы MOVEBOOK кестенің MNakl өрісі мен Nakls кестенің NAKLS өрісімен байланысты орнатсақ, MOVEBOOK BDE кестені енгізген немесе редактілген кезде Nakls қойғызу кестенің NaklID өрісінің мәнінің біреуімен сәйкес келмейтін мәндерін қабылдамай қояды.
Байланысты орнату үшін Table properties тізімінде Table Lookup пункті тандау керек және Define кнопкаға басу керек(4 сур.). пайда болған (6 сур.) Fields тізбегінде мәнін баыанатын өріс тандалады, оңға деген бағдаршалы кнопкаға басып сол өрістің аты Field name жолына көшіріледі. Lookup table тізбегінде керекті кесте тандалады және солға бағаршалы кнопкаға басып, осы кестенің алғашқы кілт өрісінің аты Lookup table жолына көшіріледі.
Переключатель бекітілуі:
Just current field — тек байланысқан өрістердің сәйкес келуі тексеріледі;
All corresponding fields — екі кестенің барлық өрітердің сәйкес келуі текскріледі;
Fill no help — Тексерілетін өрісті редактілеген кезде қойғызу кестесі көрсетілмейді;
Help and fill — Тексерілетін өрісті редактілеген кезде қойғызу кестесі көрсетіледі;
Қарапайым бағдарлама мысалы
Бұл бөлімде қиын емес бағдарламаны құрудың мысалында МҚ үшін негізгі бағдарламалау приемарын көрсетеміз. Жмысшы бағдарламаның терезенің түрі 7 суретте көсетілген (проект Chap_01\Nakls\Nakls.dpr).
Негізгі форманы құрастыру.
Жаңа проекті бастап, келесі қасиеттерін өзгертіңіз:
Caption = 'Накладные на книги' Name = 'fmNakls'
Одан кейін моульді арнайы fmNaklsU атындағы бумада сақтаңыз, ал проекті – NAKLS атына.
Формаға екі TPanel панельді қойыңыз, оладың Align қасиеттеріне alBottom мәндерін:оның ең астындағы навигатор батырмалары мен бағарламаны жау батырмасы үшін құрастырыады, ал оның үытінде орналасқан – DBGrid сеткасы үшін, онда кітаптар тізбегі оранласады. Қолданушы панельдің биіктігін өзгерте ала үшін, форманың бос орнына TSplitter бөлу вешкасын орналастырыңызз, оның Align қаситеіне alBottom мәнін ал Beveled қасиетіне - True мәнін және Height қасиетіне – 5. формаға тағы бір панельді орналастырыңыз, оның Align қасиетіне alClient мәнін – бұл панельде салымдар туралы мәліметермен DBGrid сеткасы орналастырылады.
Үстіңгі және ортаңғы паненльдерге TDBGrid компоненттерін орналастырыңыз және олардың Align қасиеттеріне alClient мәндерін қойыңыз.
Ең астындағы панельде Caption қасиетін тазартып, оған МҚ TDBNavigator навигаторының батырмаларын орналастырыңыз және TBitBtn батырмасын. Навигаторы сол , ал батырманы – оң жағына орналастырыңыз. Anchors батырманың қасиеттер тізімін ашыңыз және навигаторды оң жақ шет бойынша түзілеңіз: False -ні akLeft қасиетіне, True -ні akRight қасиетіне. Батырманың қасиетіне мәнін қойыңыз. Барлық жасаған өзегртулеріңізді дискте сақтаңыз.
МҚ псевдонимін құрастыру.
МҚ псевдонимі - бұл жай МҚ аты. Файл-сервердік МҚ-лары үшін МҚ файлдарына жолын ашады.
Database ► Explorer командасы арқылы SQL Explorer утилитасын қосыңыз, ашылға терезенің Databases вкладкасында узелде тышқанның оң жақ батырмамен шертіп контексті мәзірден New командасын таңдаңыз. Standard Нұсқасын таңдаңыз. Ол типті псевонимер файл-сервердік МҚ-лары үшін жасалған.
Одан кейін STANDARD1псевдоним аты пайда болады, Definition вкладкасында ның қасиеттері берілген болады. STANDARD1 атты BIBLDATA атына өзгертіңіз. Енді Definition вклакасына өтіңіз PATH қасиетінің оң жағындағы бос өрісіне МҚ файларына жолын жазыңыз: С: \BIBLDATA. Databases вкладкасында жаңадан құрастырылған псевдонимде тышанның оң жақ батырмамен шертіңіз, Apply командасын тандаңыз. Жаңадан құрастырылған псевдонимді сақтау туралы командасын растаңыз.
Енді сіз егер Databases вклакасындағы шиырылған узелге бассаңыз, ал соданкейін – Tables шиырылған узелнің значегіне бассаңыз, сіз МҚ-ның барлық кестелерін көре аласыз.
Мәліметтер модулі.
Программада бізге TTable 5 компоненті қажет блады және 2 TDataSource компоненті. Оларды бөлек мәліметтер модулінде орналастырамыз.
File ► New ► Others командасын тандаңыз, ол обьектілер сақтаушысын ашу үшін, ашылған терезенің New вкладкасында Data Module белгіде екі рет шертіңіз. Мәліметтер моулінің қасиетіне мәнін қойып, файлда сақтаңыз. Модульді проектімен байланыстыру үшін , панель инструментінің батырмасына басып, жаңа ғана құрастырылған dmNaklsU. файлды тандаңыз.
МҚ-мен кестелерді байланыстыру үшін Delphi компонент палитрасында BDE вкладкасында TDatabase компоненттті қолданыңыз,оған шертіңіз, одан кейін обьектілер ағашының терезесіндегі DM моульдің атында. Обьектілер инспекторы терезесіне AliasName қасиеттер тізімін ашыңыз, BIBLDATA псевдонимін тандаңыз. DatabaseName қасиетінің жолына локальі псевонимнің қайсы бір атын жазыңыз(мысалы ААА) , ол TDatabase компонентін құрастыраы.
Енді обьектілер терезесіне TTable компонетті орнатыңыз(вкладкасы), оны «ААА» псевдониміне апарыңыз. Обьектілер инспекторінің тересінде жаңа DatabaseName компонентің қасиетінде автоматты түрде локальді псевоним аты пайда болады, бірақ компоненттің оң жағынан қызыл белгі болады, ол TTable компоненттің жұмысқа даяр еместігінің белгісі.
TTable Компоненті МТ болып есептеледі. Ол көбінесе файл-сервердік жүйелерінде кез келген бір кестеден мәліметтерге шығу үшін қоолданылады. Компонетті жұмысқа даярлату үшін, ол кестенің атын анықтау тиіс: TableName қасиеттерінің тізбегін ашыңыз және онда NAKLS кестесін тандаңыз. Кейін бізге осы компонеытке көп рет келуіміз мүмкін, сондықтан оның Table1 атын онымен байланысан кестенің атына ауыстырыңыз: Name қасиетінің жоланы NAKLS енгізіңіз.
Компонент палитрасының Data Access вклакасында TDataSource компонентін ерешелеңіз, одан кейін обьектілер ағашында NAKLS компонетке шартіңіз, ол оны МҚ-мен байланыстыру үшін.
Енді негізгі терезенің екінші сеткасында MOVEBOOK кестенің мәліметтерін көрсету үшін екінші параны даярлаймыз: ААА псевдониміне TTable мәліметттер наборын «салыңыз» ал оған – TDataSource мәліметтер источнигін; МТ-ні MOVEBOOK кестесімен байланыстырып, оған атты беріңіз. әліметттер модулінің қалпы осы ауқыттағы 15 сур.көрсетілген.
NAKLS және Move мәліметтер наборы бір біреуге деген реляционды байланысқан: бірінші МТ-де жалғыз(салым) жазуына екіншісіндегі бірнеше жазулары (кітаптар ) сәйкес келуі мүмкін. МТ оларды білу үшін оларды даярлау керек. Мәліметтер модулінің кодының тересінде вкладкасына өтіңіз(батарманы басыңыз ол шығу үшін), тышқан арқылы NAKLS және Move компоненттерін обьектілер ағашының терезесінен Diagram вкладкасына аударыңыз. Ауысу Drag&Drop классикалық әдіс бойынша жүзеге асады: обьектілер ағашы терезесінде компонентке тышқанның сол жақ батырмамен басып тұрып Diagram вклакасына ауысады, одан кейін босатылады. Кестелерді Diagram вкладкасында бірбірнің астынан 11 суретте көрсетілгендей орналастырыңыз.
Кестелер арасындғы байланысты орнату үшін панель инструментінде батырмаға басыңыз тышкан курсорны сызылған курсор қалпында етіп үстіңгі кестенің астыңғы шегіне апарыңыз(сол ауқытта белгі крестикке ауысады) , тышқанның сол жақ батырманы басыңыз, оның басатын қалпында астынға кестенің үатіңгі шебіне дейі сызықты сызыңыз. Экранда байланысконструкторының терезесі пайа болады. (сур.13)
Байланысты орнату үшін, родительская және дочерняя кестелерінде байланыстыратын өрістерді бегілеу қажет. Өрісті ауыстыру үшін Available Indexes тізімін ашу қажет , MOVEBOOK_NAKL индексті тандау қажет. Одан кейін Detail Fields өрісінде MNakl аты пайда болады – оған және Master Fields тізімінде NaklID өріске шертіңіз, одан кейін Add батырмаға басыңыз. ОК басыңыз.
Movebook.DB Кестеге басыңыз және Move МТ-ні ашыңыз: обьектілер инспекторында оның Active қасиетіне True мәнін қойыңыз. Солай Nakls кестесің ашыңыз.
File ► Use Unit Командасы арқылы негізгі терезесінің модулін мәліметтер мулімен байланыстырыңыз. DBGrid1 үстіңгі сеткасы үшін DataSource қасиеттер тізімін ашыңыз және онда DataSource1 пункті тандаңыз – сетка бірден Nakls МТ-ден мәліметтермен толтырылады. Солай астыңғы сеткасын DataSource2 мәліметтер негізімен байланыстырыңыз. DBNavigator1 МҚ DataSource1 навигаторымен источнигімен байланыстырыңыз.
Обьект өрістерін жасау.
Сеткаларында парнерлардың және кітаптар аттарын көрсету үшін басқа кестелерден қосымша өрістерін МТ-ға қосып, МТ-ді кеңейту керек. Ол үшін бағдарламарың прогонын аяқтап, мәліметтер модуліне оралыңыз. Мәліметтер модулі терезесін бейнелеунуі үшін F12 пернесін басыңыз, және терезенің ортасында бір орынға жиналған компоненттер бірін-бірі басып орналастырмауы үшін оларды терезенің жан жағына таратыңыз. Nakls компонентіне екі рет шертіп, өрістерін редактілейтін тересін ашыңыз, контекстік мәзірінде Add all fields командасын тандаңыз – редактор терезесі Nakls кестенің барлық өрістер тізімімен толтырылады. Бұл тізім Nakls МТ-дің әр бір өрісі үшін арнайы өзінің қасиеттерімен, әдістерімен,және оқиғаларымен обьект жасалғандақтың белгісі. Егер сіз өрістерді редактілеу терезесінде кез келген өрісіне шертсеңіз, онда обьектілер инспектрі терезесінде өрістер-обьектісінің қасиеттері мен оқиғалары шығады. Үнсіз келісім бойынша Delphi өріс-обьектісіне атын береді, ол МТ аты мен өріс атының қосындысынан тұрады, енді бағдарламада NaklsNaklID, NaklsNFirm, NaklsNDate және т.б. аттары бар компоненттір пайда болады.
Move МТ үшін өрістер-обьектісін жасаңыз.
МТ-ріне басқа кестелердің өрістерін қосу үшін осы кестлері үшін сәйкесінше МТ-ді істеуіміз қажет: обьект ағаштарының терезесінде DB компонентіне тағы 3 TTable компонетті «салыңыз» ; оның біріншісін FIRMS кестемен байланыстырыңыз, екінші BOOKS атын беріп МТ-ні BOOKS кестесімен, үшіншісін TYPENAKL атын беріп TYPENAKL кестесімен байланыстырыңыз(бүл кесте салым типті кодының разшифрофкасы бар). Тағы да Nakls компонетінде екі рет шерту арқылы өрістері редактілеу терезесін ашыңыз, контекстік мәзірі шақырып, онда New Field командасын таңдаңыз, ол жаңа өрісті жасаушысын шақытту үшін істелінеді.
Жаңа өрістері құрастырушы арқылы МТ-де жаңа өрістерді 3 типтіңбіреуіне жасалуы мүмкін(тип Field type тізіміндегі ауыстырылымдарда анықталады).
Data —өрістер арнайы мәліметтерді сақтайды ; Calculated —есептеленетін мәліметтерді сақтайды; Lookup — өрістер подстановка кестесінің мәліметтерін сақтайды;
Бірінші типті өріс бұл өрістің OnGetText оқиғаны қорытушыда толтырылатын бос бағананың сеткасында бейнеленеді. Есептеленетін өріс OnCalcFields МТ-ің оқиға қорытушыда толтырылады. Подстанвка өрісін толтыру шін мәлімттер басқа МТ-нің керекті өрісінен алнады.
өрісті құрастырушы терезесінің Name жолында жаңа Firm Name өрістің атын енгізіңіз, Туре тізімін ашып , өріс үшін String типті тан даңыз, оның Size өлшемін 40 тең етіп қойып, Lookup переключатель орнатыңыз, Key Fields өрістер тізімін ашып, МТ-де NFirm өрісін таңдаңыз, Dataset тізімінде Firms МТ-ні тандаңыз, Lookup Fields тізімінде – FirmID кілттік өрісті тандаңыз, Result Field тізімінде - FName өрісті тандаңыз. ОК басыңыз.
Nakls МТ-не мәтіндік типті атты өрісті құрастырыңыз, 23 символды ұзындығымен , ол үшін NType кілтік өрісті тандап, оны TypeNakl мәліметтер теруінің TypeID өріспен байланыстырыңыз және қорытынды өріс ретіне осы МТ-ның TName өрісті тандаңыз.
Move МТ үшін 3 атты ауыстыру Name, Author және Publish өрістерін құрастырыңыз, оларды МВоок өрісі арқылы Books МТ-мен байланыстырып, BName, BAuthor, BPublish қорытынды өрістер ретіне сәйкесінше алыңыз. Бұл өрістер кітаптар тізімінде құрамды өрісті форматтау үшін керек болады. өрістердің өлшемдері сәйкесінше – 75, 30 ,40 .
Кестелер. Сұраныстар. Мәліметтерді визуациялау.
SQL - сұраныстарын құрастыру.
SQL -сұраныстарын жасау үшін Delphi ортасынан Database ► Explore командасын немесе негізгі мәзірден Пуск ► Программы ► Borland Delphi 7 ► SQL Explorer командасын орындаңыз. Одан кейін брандмаузер терезесінде BIBLDATA псевдонимін тауып, оның сол жақтағы байланыс батырмасына басыңыз, ол «кітапхана» МҚ-ға шығу үшін жасалады. Бұл МҚ файл-серверік болғандықтан онда тек кестелер сақталады. BIBLDATA байланысты ашып, кез-келген кестенің атыа басыңыз, одан кейін Enter SQL вклакасына өтіңіз.
Үнсіз келісім бойынша берілген сұраныстың шрифтін өзгертіңіз, оны Courier New моноширный шрифтке ауыстырыңыз (View ► Text Font командасы арқылы тандалады). Дайын оған сұранысты орныдау сұраныс панельің оң жағынағы батырмасы арқылы істеуге болады.
Байланысқан кестелер арасынан сұрыптау.
Келесі сұранысты қарастырайық:
SELECT * FROM Nakls, Firms
Егер осы сұранысты орындасақ , онда ешкімге керек емес әр бір салымы кестесінде неше өрістер бар болса, сонша рет қайталанатындай МТ аламыз. өрістері үшін реляционды байланысты ескеру үшін тандау критериін орналастыру керек:
Кестелердің мұндай байанысын кейде олардың деккартық көбейтумен атайды.
WHERE арнайы сөзінен басталатын секциясына танау критериі жасалынады. екі кестені байланыстыру үшін , NAKLS кестесінің әрбір жазуы үшін NFirm өрісінде онымен байланысқан FIRMS кестесіндегі жазудың шифрі бар екенін бегіледік. Қорытыны МТ-де сонша жазу NAKLS кестесінде нешеуі бар болса сонша болады, әрбір жазуына он жағынан FIRMS кестесінің барлық өрістер жазулары қосылады.
Келесі сұраныс 1 сабақтың бағдарламаның DBGridl сеткасында берілген NAKLS МТ-ні қайталайтын МТ-ні құрастырады(18 сурет) :
SELECT
NaklID, NDate, FName, TName, NSum, NPayedSum,
NRetSum, NCoeff, NRetDate FROM
Nakls, Firms, TypeNakl WHERE
FirmID=NFirm AND TypeID=Ntype
Жазуларды сұрыптау.
Жаңағы мысал нақты түрде NAKLS МТ-ні қайталанатындай болуы үшін, NaklID өрісі бойынша жазуларды теруіміз керек. ORDER BY арнайы сөзден басталатын секциясы қолданылады:
SELECT
NaklID, NDate, FName, TName, NSum, NPayedSum,
NRetSum, NCoeff, NRetDate FROM
Nakls, Firms, TypeNakl WHERE
FirmID=NFirm AND TypeID=NType ORDER BY NaklID
Кестелер арасынан байланысты орнатқандай сұрыптауды кезкелген өрістерінен құрастыруға болды.
Қиын тандау критерийлері.
WHERE секциясы арқылы кестелері байланыстырумен бірге, қиын тандау критерийлерді құрастыруымызға болаы. Бұл үшін секцияда NOT, AND, OR түрдегі логикалық операцияларымен байланысқан, оперыторлар саны белгіленеді, мұндағы тильда(~) бегісі қатынастың белгісі:
SELECT
NaklID, NDate, FName, TName, NSum, NPayedSum,
NRetSum, NCoeff, NRetDate FROM
Nakls, Firms, TypeNakl WHERE
FirmID=NFirm AND TypeID=NType AND (NSum>100000 OR NRetSum>0) ORDER BY NaklID
Қатынас опеациясының оң жағынан мәні белгіленеді. Егер ол – мәтінің немесе ауқыт-дата типті болса, ол апострофқа немесе екілік ковычкаға алынуы тиіс. Одан басқа LIKE операциясын қолдана аламыз, ол LIKE операциясынан оң жағындағы мән бүкіл өрісті емес, тек бір бөлігін құрастырса болады.
SELECT BName FROM Books WHERE BName LIKE "Я%" ORDER BY BName
Бұл сұраныс кестеден кітаптің тек «я» әрпінен басталатын
мәндерін алады(20 сурет).
(%) Белгісі оның орнында кезектелген символдар бола алтыны көрсетеді. Келесі сұраныс атында бір рет болса да «Я» әрпі кезесетін кітаптарды тандайды:
SELECT BName FROM Books WHERE BName LIKE "%я%" ORDER BY BName
IN арнайы сөзі арқылы өрістің бола алатын мәндерін тере аламыз. Келесі сұраныс кестенің 1,3,7-ші кітантаптардың аттарын тереді(22 сутер):
SELECT BName FROM Books WHERE BookID IN (. 1, 3, 7)
IN Операциясынан кейінгі жай жақшада бола алатын міндерін жазудың орнына, SELECT операторын орналастыра аламыз. Егер оларға әкелінген кітаптарды төленбеген барлық сатып алушыларың тізімін көру керек болса, келесі сұранысты құрастыра аламыз(23 сурет).
SELECT FName FROM Firms WHERE FirmID IN
(SELECT NFirm FROM Nakls WHERE NPayedSum=O AND NType IN (1, 7)) ORDER BY Fname
Кестелердің псевдонимері және коментарийлер.
Біздің кестелерде өрістердің сәйкес келетін аттары жоқ, бұл кестенің кез келген өрістің аты кесте аттарының бас әріптерінен басталатындықтан. Ал екі не одан да көп кестелердің өрістер аттары сәйкес келгенде нені істеуіміз керек? Егер біз біздің ережені қолданбасақ, яғни префикстарды қоймасақ, онда екі аты пайда болушы едіжәне келесі фрагмент біркелкілікеместікке әәкелуші еді:
SELECT
NaklID, Date, Name, Name, Sum, PayedSum,...
Біркелкілікеместікті жою үшін өрістер аттары, олардың кестелер аттарымен толтырылады.
SELECT
NaklID, Date, Firms. Name, TypeNakl. Name, Sum, PayedSum,...
Қайталанатын кестелер аттары сұраныстың басқа да секцияларыда кездесетіндіктен оларды атауды қысқарту үшін SQL –де кестелерің аттарының орнына оның псевдонимін қолдануға:
SELECT
NaklID, Date, F. Name, T. Name, Sum, PayedSum,... FROM Nakls, Firms F, TypeNakl T..
Псевдоним секциясында кестенің атынан кейін белгіленеді. Сұраныстың кез-келген комментарий болуы мүмкін:
SELECT
/* өрістерінің қайталанатын аттары кестенің псевдонимдерімен толтырылады*/
NaklID, Date, F. Name, T. Name, Sum, PayedSum,... /* псевдонимдер кестенің атынан кейін символдарымен беріледі*/ FROM Nakls, Firms F, TypeNakl T...
Агрегатты функциялар және жазуларды топтау.
Өрістердің аттарының орнына және/немесе олармен бірге SELECT секциясында келесі агрегатты функцияларының бірін қолдануға болады:
AVG —аргументтің ортаңғы мәнін қайтарады;
COUNT —МТ барлық жазуларына аргументтердің кіру санын есептейді;
MAX —аргументтің максимальді мәнін қайтарады;
MIN —аргументтің минимаьді мәнін қайтарады;
SUM —аргуметтің мәнерін қосады.
Агригатты функцияға келгенде аргуметтің орнына МТ өрістерінен құрастырылған керекті мән болуы ммкін. Мысалы, келесі сұраныс сатып алушылардың қарыздарының орташа мәнін шығарады(24сурет):
SELECT AVG(NSum-NPayedSum-NRetSum)
FROM Nakls
WHERE NType in (1, 7)
Әкелінген барлық кітаптардың бағасымен барлық әкелушілердің тізімін келесі сұраныс береді ( 25 сурет):
SELECT SUM(NSum), FName FROM Nakls, Firms
WHERE FirmID=NFirm AND NType in (0, 6) • GROUP BY FName
Толықтай түрдегі агрегатты функцияларымен бірге кестелердің өрістері де бар сұраныстар үшін топты секциялар қажет етеді, онда міндетті түрде барлық секциясында берілген өрістер жазылады.
Агрегатты функцияларды қолданғанда тізімнен қайталанатын өрістер аттарын алып тасталынуы тиіс. Бұл үшін DISTINCT арнайы сөзі қолданылады. Мысалы , төмендегі сұраныс кітаптарды әкелумен байланысқан салымар тізімін қайтарады(26 сурет):
SELECT COUNT(NFirm) FROM Nakls WHERE NType IN (0, 6)
Келесі сұраныс әкелушілер санын қайтарады (27сурет):
SELECT COUNT(DISTINCT NFirm) FROM Nakls WHERE NType IN (0, 6)
Бақылау сұрақтары
Есепті құрудың ретін айтып беріңіз.
SQL-сұраныстарды қалайша жасауға болады?
Бас мәзір дегеніміз не? Оны қалай құруға болады?
Достарыңызбен бөлісу: |