Бақылау сұрақтары:
Електен өткізу дегеніміз не?
Өрнек бойынша електен өткізу қалай жүзеге асырылады?
Аралық бойынша електен өткізу қалай жүзеге асырылады?
Аралық бойынша електен өткізу әдістері?
Әдебиеттер: [1].
Дәріс №13. Байланысқан кестелерді қосымшаларда қолдану
Дәріс қысқаша мазмұны
Мәліметтер қорының бөлек кестелерінің арасында байланыс болуы мүмкін, ол кестелердің байланыс өрістері арқылы ұймдастырылады. Байланыс өрісі міндетті түрде индекстелген болуы қажет. Кестелер арасындағы байланыста бір кесте - негізгі кесте, ал екінші кесте – бағынышты кесте болып табылады. Кестелер арасындағы байланысты ұйымдастыруда бағынышты кестеде келесі қасиеттер пайдалынады:
MasterSource – негізгі кестенің мәліметтер көзі;
IndexName – бағынышты кестенің ағымдағы индексі;
IndexFieldNames – бағынышты кестенің ағымдағы индексінің өрісі немесе байланыс өрісі
MasterFields – негізгі кесте индексінің өрісі немесе байланыс өрісі Байланысқан кестелермен жұмысты қойма есебін автоматтандыруға
арналған қосымша мысалын қарастырайық. Қойма есебін ұйымдастыруда екі кесте пайдалынады: тауарлар тұратын Tovar кестесі және әр бір тауардың кірісі мен шығысынан тұратын, яғни тауарлар карточкаларынан тұратын Cards кестесі.
Tovar кестесінің құрылымы
Өріс аты
|
Типі
|
Өлшемі
|
Кілттік өріс
|
Сипаттамасы
|
T_code
|
+
|
|
*
|
Тауардың уникальды коды. Бағынышты кестемен байланыс жасауға қолданылады.
|
T_name
|
A
|
20
|
|
Тауардың аты. Міндетті түрде толтырылады.
|
T_unit
|
A
|
7
|
|
Өлшем бірлігі. Міндетті түрде толтырылады.
|
T_price
|
$
|
|
|
Тауардың құны. Міндетті түрде толтырылады.
|
T_col
|
N
|
|
|
Қоймадағы тауарлар саны.
|
T_note
|
A
|
30
|
|
Примечание
|
Cards кестесінің құрылымы
84
Өріс аты
|
Типі
|
Өлшем
|
Кілттік өріс
|
Сипаттамасы
|
C_number
|
+
|
|
*
|
Тауарлар қозғалысы жазбасы- ның уникальды коды.
|
C_code
|
I
|
|
|
Негізгі кестемен байланыс үшін қолданылатын тауар қозғалысы жазбасының коды.
|
C_move
|
N
|
|
|
Кіріс және шығыс саны.
|
C_date
|
D
|
|
|
Кіріс және шығыс датасы.
|
Кестелер арасында «негізгі-бағынышты» байланысы орнатылады. Tovar кестесі негізгі, ал Cards кестесі бағынышты кесте. Байланысты ұйымдастыру үшін негізгі кестеде байланыс өрісі ретінде S_Code автоинкременттік өрісі алынады. Бағынышты кестеде байланыс өрісі индекстік өріс құрылған C_Code бүтін типті өрісі болып табылады.
Алғашқы кілт
|
|
|
S_code
|
S_name
|
S_unite
|
S_price
|
S_col
|
S_note
|
Ключ
|
|
|
|
|
|
|
|
Индекстік өріс
Сыртқы кілт
|
C_number
|
C_Code
|
C_move
|
C_Date
|
|
Индекс
|
|
|
Байланыс орналастыру үшін Table2 кестесінің MasterSource қасиетінде DataSource1 мәнін қою керек. Сосын Объект инспекторы MasterFields жолында үш нүктелі түймеге басып, байланыс редактор терезесін (Field Link Designer) шығару. Available Indexes (Индекстерді енгізу) тізімінде бағынышты кестенің C_Code индексін таңдау, сонда Detail Fields (Детальдық өріс) тізімінде байланыс өріс (C_Code) аты пайда болады. Бұл тізімнен бағынышты кесте өрісін, ал MasterFields (Негізгі өріс) тізімінде – негізгі кесте өрісін таңдау қажет (сурет). Енді Add түймесін басу, сонда таңдалған өрістер өз ара байланысады, Joined Fields (Байланысқан өрістер) тізімінде C_Code-> S_Code түрінде бейнеленеді.
27-сурет. Кестені қосымшадан байланыстыру
Бақылау сұрақтары:
Кестені байланыстырудың қажеттілігі?
Негізгі кесте деп қандай кестені айтамыз?
Бағынышты кесте деп қандай кестені айтамыз?
Алғашқы кілт, сыртқы кілттер не үшін анықталады?
Әдебиеттер: [1].
Дәріс №14. Реляциялық қатынас жасау әдісі. SQL сұранымдар тілі.
Дәріс жоспары:
SQL тілі туралы түсінік. SQL функциялары.
Кестелермен орындалатын амалдар.
Кестеден мәліметті таңдау. Select операторының негізгі сипаттамалары.
Жазбаларды модификациялау
Дәріс қысқаша мазмұны:
. SQL тілі туралы түсінік. SQL функциялары.
Мәліметтерге ену мүмкіндігінің реляциялық тәсілі жазбалар тобының амалдарына негізделген. Амалдарды орындауға SQL (Structured Query Language) құрылымдық сұраныс тілінің құралдары қолданылады. Delphi қосымшаларында BDE механизмін қолдану барысында мәліметтер жиыны ретінде SQL-сұранысты орындауды беретін Query немесе StoredProc компоненттері қолданылады. SQL құралдарын жергілікті және қашықтағы мәліметтер қорымен амалдар орындауға қолдануға болады.
Программалаудың процедуралық тілінен айырмашылығы: есептеу процестерін басқару инструкциясы (циклдер, тармақталу, басқа операторға өту) және енгізу/шығару құралдары жоқ.
Microsift Access, Visual FoxPro немесе Paradox сияқты МҚБЖ, SQL-де сұраныстарды программалаумен байланысты әрекеттерді өздері орындайды, мысалы Query By Example (QBE) – үлгі бойынша сұраныс, пайдаланушыға сұранысты визуальды құру құралдарын білдіреді.
SQL программалау тілінің толық функционалдық мүмкіндіктерін қамтымағанмен, ол мәліметтерге ену мүмкіндігіне арналған, және оны программаны жасау құралына қосады. Және Delphi жүйесіне ендірілген. Сонымен қатар, SQL командаларымен жұмыс істеу үшін сәйкес құралдар және компоненттер бар.
SQL - құрылымды сұранымдар тілі көмегімен мәліметтер қорына күрделі сұраныстарды құруға болады. Сұраныс – бұл белгілі ақпараттарды алуға талап болып табылады. SQL-сұраныстардың көмегімен:
Қосымшаның орындалу барысында мәліметтер жиынтығының өрісін қолдануға болады;
86
2.
|
Бірнеше кестеден өрістер немесе жазбалар алуға болады;
|
|
3.
|
Күрделі шарттар бойынша мәліметтер жиынтығының
|
өрісін
|
қолдануға болады;
Мәліметтер жиынтығының кез-келген өрісі бойынша сұрыптауға болады;
Мәліметтерді іздеуді ұйымдастыруға болады;
SQL тілінің әртүрлі жүйеге негізделген көптеген диалектілері бар. SQL-ді қолдануға қандай жүйеде жұмыс жасасаңыз, соның сәйкес құжаттарын қараған жөн.
DELPHI тіліндегі қосымшаға SQL көмегімен:
Paradox және dBase кестелерінің – локальді SQL тілі қолданылады;
InterBase локальді серверінің – толығымен сәйкес синтаксис қолданылады;
SQL қашықтықтағы серверінің, SQL Links драйверлері арқылы мәліметтерін қолдануға мүмкіндік береді;
SQL сұраныстың екі түрі бар: статикалық және динамикалық. Статикалық SQL сұраныстар қосымшаны құру барысында жазылады.
Динамикалық SQL сұраныстар коды қосымша орындалу барысында құрылады немесе өзгертіледі.
SQL тілінің операторлары мынадай топқа бөлінеді:
Мәліметтерді анықтау тобы ( жаңа кесте құру, өшіру);
Мәліметтерді басқару тобы ( таңдау, топтастыру );
SQL тілінде қолданылатын негізгі функциялар:
Статистикалық функциялар:
AVG() – орташа мән;
MAX() – ең үлкен мән;
MIN() – ең кіші мән;
SUM() – қосынды;
COUNT() – мәндердің саны;
COUNT(*) – нөлдік емес мәндердің саны;
Жолдармен жұмыс істеуге арналған функциялар:
UPPER(Str) – Str символдық жолды жоғарғы регистрге айыстыру;
LOWER(Str) – Str символдық жолды төменгі регистрге айыстыру;
TRIM(Str) – Str жолының бастапқы және соңғы бос орындарын өшіру;
SUBSTR (Str FROM TO) – Str жолынан, өзі симводардан тұратын, n1 жолынан бастап, n2 жолымен аяқталатын ішкі жолды бөліп алу;
CAST( AS ) – Expression өрнегін Type типіне келтіру;
Дата және уақытпен жұмыс істейтін функция:
EXTRACT(<Элемент> FROM <Өрнек>) – дата және уақыт мәндерінен тұратын өрнектен, сәйкес көрсетілген элементтен мәндер алу; дата және
уақыт элементі ретінде YEAR, MONTH. MINUTE және SECOND элементтерін көрсетуге болады.
87
2. Кестелермен орындалатын амалдар.
Кестелермен келесі амалдарды орындауға болады:
жаңа кесте құру;
кестені жою;
кесте өрістерінің құрамын өзгерту;
индексті құру және өшіру.
Бұл әрекеттер SQL тілінің инструкцияларының көмегімен орындалады.
Кестені құру және жою, құрамын өзгерту
Кестені құру үшін CREATE TABLE инструкциясы қолданылады: CREATE TABLE <Кесте аты>
(<Өріс аты> <мәлімет типі>
. . .
<Өріс аты> <мәлімет типі>);
Файлдың кеңейтілуі бойынша кестенің форматы автоматты түрде, яғни .db
– Paradox кестесі үшін, .dbf dBase кестесі үшін анықталады. Кесте файлы МҚ псевдонимі көрсетілген, МҚ каталогында орналастыру керек.
SQL тілінің көмегімен кесте құру мысалы:
CREATE TABLE Student.dbf
(Numer Integer Name CHAR(15)
Datarogd DATE);
Paradox кестесі үшін PRIMARY KEY сипаттамасын және жақшаның ішіне оның өрістерін көрсетіп, негізгі немесе алғашқы кілтті анықтауға болады. Кілттік өріс өрістер тізімінде бірінші болып орналасуы керек. Негізгі кілтті құрумен жаңа кестеге құруға мысал:
CREATE TABLE Personal.db
(Code AUTOINC Name CHAR(15) Post CHAR(15)
Oklad Numeric(10,2) PRIMARY KEY(Code));
Кестені өшіру үшін келесі инструкция қолданылады: DROP TABLE <Кесте аты>;
Мысалы DROP TABLE ; Дискіден student атты кестеге қатысы бар барлық файлдар өшіріледі.
Кесте өрістерінің құрамын өзгерту өрістерді қосу немесе өшіруді білдіреді және оның құрылымын өзгертуге әкеледі, сонымен қатар кестені басқа
қосымшалар қолданбауы керек. Кесте өрістерінің құрамын өзгерту ALTER TABLE инструкциясының көмегімен орындалады:
88
ALTER TABLE <Кесте аты>
ADD <өріс аты> <мәліметтер типі>,
DROP <өріс аты>,
ADD <өріс аты> <мәліметтер типі>,
DROP <өріс аты>;
Индекс құру және жою.
Индекс мәліметтерге тез ену мүмкіндігін қамтамасыз етеді. Кестемен орындалатын амалдарды тездету үшін, жазбаларды іздеу және жиі таңдау жүргізілетін өрістерге индекс қойылады. Индекс CREATE INDEX операторының көмегімен құрылады. Жазылуы:
CREATE INDEX <Индекс аты> ON <Кесте аты> (<өріс аты>, ... <өріс аты>);
Бір инструкциямен бір индекс құруға болады, сонымен қатар бір индекс бірнеше өрістің құрамына кіре алады.
Мысалы, 2 өріс бойынша индекс құру.
CREATE INDEX
IndNamePost ON personnel. db (Name, Post)
Индексті жою үшін DROP INDEX операторы қолданылады.
DROP INDEX <Кесте аты>.<индекс аты> немесе
DROP INDEX <Кесте аты>. PRIMARY
Егер алғашқы индекс (алғашқы кілт) жойылатын болса индекс атының орнына PRIMARY сипаттамасы көрсет-ді, өйткені алғашқы кілттің аты болмайды.
Мысалы,
DROP INDEX «personnel.Db».indName Post
Кестеден мәліметті таңдау. Select операторының негізгі сипаттамалары.
Мәліметтерді таңдау берілген шарттарды қанағаттандыратын өрістерді және жазбаларды алуды білдіреді. Мәліметтерді бір немесе бірнеше кестеден таңдап алуға болады. Ол SELECT инструкциясының көмегімен орындалады. SELECT - SQL тілінің негізгі операторы.
Жазылу форматы:
SELECT [DISTINCT] <өрістер тізімі> немесе * FROM <Кестелер тізімі>
[Where < таңдау шарты >]
[ORDER BY <сұрыпталатын өрістер тізімі>] [GROUP BY <топталатын өрістер тізімі>]
[HAYING <топтау шарты> ]
89
[UNION <Іштестірілген SELECT операторы>.]
Мәліметтер жиынында жазбалар қайталанбас үшін DISTINCT сипаттаушысы қолданылады. Егер мәліметтер жиынына барлық өрістерді қосу керек болса, онда тек «*» символын көрсетуге болады
SELECT операторында FROM операндысы мен өрістер тізімі міндетті түрде болады. FROM операндында жазбалар таңдалатын кесте аттары көрсетіледі.
Егер тізімде бірнеше кестеден алынған өрістер болсы, онда құрама ат қолданады. Яғни,
<Кесте аты>. <өріс аты> .
WHERE операндысында мәліметтер жиынының нәтижесін таңдау шарты жазылады. Таңдау шарты сипатталатын өрнек логикалық өрнек болып табылады. Оның элементтері өріс аттары, салыстыру амалдары, арифметикалық және логикалық амалдар, жақшалар, LIKE, NULL, BETWEEN, IN және басқа да арнайы функциялар болуы мүмкін.
ORDER BY операндысы мәліметтер жиынының нәтижесінде жазбаларды сұрыптау ретін анықтайтын өрістер тізімінен тұрады. Келісім бойынша әрбір өріс бойынша мәндерінің өсу ретімен орындалады. Кему ретімен сұрыптау үшін DESC сипаттаушысы қатар қолданылады.
GROUP BY операндасы нәтижелік мәліметтер жиынтығынжа жазбалар тобын бөліп көрсету үшін қолданылады, топта барлық өрістері мәндері бірдей жазбалар қарастырылады.
HAVING операндысы GROUP BY операндысымен бірге қолданылады және топтың ішіндегі жазбаларды таңдау үшін пайдаланылады.
SELECT инструкциясы күрделі құрылымнан тұруы және бірінің үшіне бірі орналасуы мүмкін. Инструкцияларды біріктіру UNION операндысының көмегімен орындалады. Мәліметтер жиынының нәтижесі екі инструкцияның WHERE операндысында берілген таңдау шарты орындалу барысында таңдалған жазбалардан тұрады.
Жазбаларды модификациялау
Жазбаларды модификациялау жазбаларды өзгертуден, мәліметтер жиынына жаңа жазба қосудан және бар жазбаны жоюдан тұрады.
INSERT - Жаңа жазбаны енгізу үшін қолданылатын оператор.
Жазылу форматы:
INSERT INTO <кесте аты>[(<Өріс аттары>)] VALUES (<мәндер тізімі>)
Егер өрістер тізімі көрсетілмесе, онда барлық өрістер кіреді деп есептелінеді.
Мысалы:
INSERT INTO (tabnom, fiо, . . . ) VALUES (7,’Аскаров‘, ...);
Кестеге бірнеше жазбаларды енгізуде Insert инструкциясы келесі форматта болады:
INSERT INTO <кесте аты> [( <өріс аттары> )] <оператор SELECT>
Бағандарға меншіктелетін мәндер select операторын қайтратын мәндері болады. SELECT операторы жазбалар жиынын қайтаратын болғандықтан INSERT операторы сонша жаңа жазбаны қосады.
UPDATE – бір немесе бірнеше жазбаларды өзгерту үшін қолданылатын оператор.
Жазылуы форматы: UPDATE <кесте аты>
SET өріс аты1 = мән1
...
SET өріс атыN = мәнN
[WHERE <іздеу шарты>];
Егер WHERE іздеу шарты болмаса, онда кестедегі барлық жазба өзгереді. Мысалы:
UPDATE sotr
SET otdel =’ИСЦ’, staj=staj+2 WHERE fio=’Маратов’;
DELETE – кестедегі жазбалар тобын жою үшін қолданылатын оператор.
Жазылу форматы:
DELETE FROM <кесте аты> [WHERE <іздеу шарты>];
Іздеу шартын қанағаттандыратын барлық жазбалар жойылады. Егер іздеу шарты көрсетілмесе, онда кестеден барлық жазбалар жойылады.
Бақылау сұрақтары:
SQL тілі не үшін қолданылады?
Кестені құру, өзгерту және жою үшін қандай опеарторлар қолданылады?
Кестеге мәліметті енгізу, өзгерту және жою үшін қандай операторлар қолданылады?
Таңдау операторының жазылуы?
Әдебиеттер: [1].
Дәріс №15. Delphi-де есеп беруді ұйымдастыру
Дәріс жоспары:
Есеп берулермен жұмыс. Есеп берудің негізгі компоненті.
Есеп беруде қолданылатын құрама компоненттер.
Есеп берулермен жұмыс. Есеп берудің негізгі компоненті.
Есеп беру – мәліметтер қорына сұраныс нәтижесінде алынатын мәліметтерді баспадан шығаратын құжат.
Есеп берулердің төмендегідей түрлерін атап өтуге болады:
91
Қарапайым есеп беру;
Мәліметтерді топтастыру арқылы құрылатын есеп беру.
«Негізгі – бағынышты» байланысындағы кестелердегі мәліметтерден құралған есеп беру;
әртүрлі есеп берулерді біріктіретін құрама есеп беру.
Delphi-де есеп берулерді құруға мүмкіндік беретін компоненттер жиынынан тұратын QuickReport есеп берулер генераторы қолданылады.
QReport компоненттер палитрасында есеп беруде қолданылатын жиырмадан астам компонент орналасқан. Олардың .шіндегі «негізгі» компонент толығымен есеп беру құрылымына жауап беретін TquickRep болып табылады.
TQuickRep компонентінің негізгі қасиеттері, әдістері мен оқиғалары қарастырайық.
Қасиеттері:
property Bands: TQuickRepBands; - төмендегідей мәндерді қабылдайды:
HasColumnHeader – есеп беру бағандарының тақырыптары;
HasDetail – нақты ақпарат;
HasPageFooter – парақтың төменгі бөлігі;
HasPageHeader – парақ тақырыбы;
HasSummary – есеп берудің төменгі бөлігі;
Has Title – есеп беру тақырыбы.
property DataSet: TDataSet; есеп беру құрылатын мәліметтер жиынын көрсетеді.
property Frame: TQRFrame; есеп беру шектерінің параметрлерін анықтайды:
Color – шектеріндегі сызықтардың түсі; DrawBottom – төменгі сызықты шығару; DrawLeft- сол жақ сызықты шығару; DrawRight- оң жақ сызықты шығару; Draw Top- жоғарғы сызықты шығару; Style – сызық стилін анықтау;
Width – пиксель түрінде сызықтың ұзындығы.
property Page: TQRPage; парақ параметрлерін анықтайды.
property PrinterSettings: TQuickRepPrinterSettings; принтер параметрлерін анықтайды.
property PrintIfEmpty: Boolean; егер True мәні көрсетілсе, мәліметтер болмаса да парақты баспадан шығаруды орындайды.
Әдістері
procedure NewPage; Жаңа параққа көшуді орындайды; BeforePrini немесе AfterPrint оқиғалар өңдегішінде қолданылады және OnPrint, OnStartPage және OnEndPage оқиғаларында қолданылмайды.
procedure Preview; алдын ала көру режимінде қарау. procedure Print; принтерде есеп беру құжатын шығарады. procedure PrinterSetup; принтер параметрлерін баптайды. Оқиғалар
property AfterPreview : TQRAfterPreviewEvent; есеп беруді алдын ала қарағаннан кейін орындалады.
92
property AfterPrint: TQRAfterPrintEvent; есеп беру құжатын баспадан шығарғаннан кейін орындалады.
property BeforePrint: TQRBeforePrintEvent; есеп беруді генерациялау кезінде орындалады.
property OnEndPage : procedure(Sender : TObject); есеп берудің соңғы парағын генерациялау кезінде орындалады.
property OnStartPage : procedure(Sender : TObject); есеп берудің алғашқы парағын генерациялау кезінде орындалады.
Есеп беруде қолданылатын құрама компоненттер.
Қалған компоненттер есеп берудің құрама бөлігін анықтайды:
TQRBand – есеп беру тақырыбын, мәліметтер облысын және орналастыруға арналған аймақ. Есеп беру негізінен төмендегілерді жүзеге асыратын TQRBand, компоненттерінен тұрады:
есеп беру тақырыбының облысы; • парақ тақырыбының облысы; • топ тақырыбының облысы; • есеп беру бағандары тақырыптарының облысы; • мәліметтер облысы; • топталған мәліметтердің қорытынды облысы; • парақтың төменгі облысы; • есеп берудің төменгі.
TQRSubDetail – МҚТ байланыстар негізінде анықталған Master-Detail байланысын жүзеге асыруда бағынышты кестенің мәліметтерін орналастыру облысы;
TQRGroup – есеп беруде топтауды жүзеге асыру қолданылады;
TQRLabel – Статикалық мәтінді есеп беру парағына орналастырады;
TQRDBText – есеп беруде мәліметтер жиыны өрістерін орналастыруға мұмкіндік береді;
TQRExpr - өрнекті есептеу нәтижесінде алынған мәнді шығару үшін қолданылады; өрнекті есептеу алгоритмі осы компоненттің өзінің формулалар редакторының көмегімен құрылады;
TQRSysDate – есеп беруде дата, уақыт, парақ номері, қандай да бір мәннің қайталанып шығарылу санын және т.б. шығару үшін қолданылады;;
TQRMemo – есеп беруде комментарий өрістердің мазмұнын шығару үшін қолданылады;
TQRRich Text – есеп беруде форматталған комментарий өрістерінің мазмұнын шығару үшін қолданылады;
TQRDBRich Text – есеп беруде мәліметтер жиынынан алынған комментарий өрістердің мазмұнын шығару үшін қолданылады;
TQRShape – есеп беруде грфаиктік фигураларды шығару үшін қолданылады;
TQRImage – есеп беруде мәліметтер жиынынан алынған графиктік ақпаратты шығару үшін қолданылады;
TQRChwt – есеп беруге графикті кірістіру үшін қолданылады.
Есеп беру не үшін қолданылады?
Есеп беру түрлері?
93
Есеп беруде қолданылатын компоненттер палитрасы?
Есеп беруде қолданылатын негізгі және құрама компоненттер?
Електен өткізу дегеніміз не?
Өрнек бойынша електен өткізу қалай жүзеге асырылады?
Аралық бойынша електен өткізу қалай жүзеге асырылады?
Аралық бойынша електен өткізу әдістері?
76
Достарыңызбен бөлісу: |