Delphi және мәліметтер қоры

Кіріспе 3
1 Мәліметтер қорын жобалау және ақпараттық жүйелер 4
1.1 Деректердің шамадан тыс қайталануы және аномалиялар 4
1.2 Ақпараттық жүйелерді жобалау 6
2 Delphi ортасында мәліметтер қорына рұқсат алу механизмдері 14
2.1 ADO провайдерлері 17
3 Мәліметтер қорын құру және басқару 20
3.1 Мәліметтер қоры кестелерін құру және басқару 20
3.2 Мәліметтер қоры кестесімен жұмыс 30
3.3 Клиенттік қосымшада жоғарғы мәзір құру 36
3.4 Мемо.өрістер, бағандарды жөндеу және деректерді іздеуді ұйымдастыру 40
3.5 Сұраныс құру 44
3.6 Есеп құру 52
4 Delphi7 ортасында локальды деректер қорын қолданып ақпараттық жүйелер құру 65
4.1 «Кадрлар бөлімі» ақпараттық жүйесінің жобасы 65
4.2 Мәліметтер қоры өзгерісін журналға тіркеу 89
5 Серверлік мәліметтер қоры және interbase серверімен танысу 95
5.1 INTERBASE локальды сервері 95
5.2 Индекс құру 99
5.3 Delphi7 және мәліметтер қоры серверлері 100
5.4 Генераторлар мен триггерлер 106
Қортынды 109
Әдебиеттер тізімі 110
Қосымша А 111
        
        ҚАЗАҚСТАН РЕСПУБЛИКАСЫ БІЛІМ ЖӘНЕ ҒЫЛЫМ МИНИСТРЛІГІ
С. АМАНЖОЛОВ АТЫНДАҒЫ
ШЫҒЫС ҚАЗАҚСТАН МЕМЛЕКЕТТІК УНИВЕРСИТЕТІ
Б.А. Кабланбекова, Б.М. Кабланбеков
Delphi және мәліметтер ... ... ... ШҚМУ ... 002 ... ... 12
С.Аманжолов атындағы ШҚМУ әдістемелік кеңесімен
баспаға ұсынылған
№5 хаттама 22 ... 2010 ... ... Б.К., ... ... ... доцент
Тұрғанбаев Е.М., физика-математика ғылымдарының кандидаты, доцент
Сыздыкпаева А.Р., техника ғылымдарының кандидаты
К 12 ... Б.А., ... Б.М. Delphi және ... ... ... - ... С.Аманжолов атындағы ШҚМУ баспасы, 2011. - 145 б.
ISBN 978-601-80142-1-5
Оқу ... ... ... жүйелер мамандықтарының мемлекеттік
стандарты мен типтік бағдарламасына сәйкес жазылды.
Құралда Delphi7 ортасында мәліметтер қорына рұқсат алу механизмдері,
ADO провайдерлері, Delphi7 ... ... ... ... ... жүйелер құру, серверлік мәліметтер ... ... ... ... ... ... мағлұматтар және әртүрлі мысалдар мен олардың
бағдарламалары келтірілген.
Жоғарғы оқу орындарының 5В011100-«Информатика», 5В070300-«Ақпараттық
жүйелер» мамандығы студенттеріне курстық жұмыс, ... ... ... ... ... ... ... ұсынылады.
ОӘЖ 002 (075.8)
ҚБЖ 32.973я73
ISBN 978-601-80142-1-5
© ... Б.А., ... Б.М., ... |3 |
|1 ... ... ... және ... жүйелер |4 ... ... ... тыс ... және аномалиялар |4 ... ... ... ... |6 |
|2 Delphi ... ... ... рұқсат алу механизмдері |14 |
|2.1 ADO ... |17 |
|3 ... ... құру және ... |20 ... ... қоры кестелерін құру және басқару |20 ... ... қоры ... ... |30 ... ... қосымшада жоғарғы мәзір құру |36 ... ... ... ... және ... іздеуді |40 |
|ұйымдастыру | ... ... құру |44 ... Есеп құру |52 |
|4 Delphi7 ... ... деректер қорын қолданып ақпараттық |65 |
|жүйелер құру | ... ... ... ... ... ... |65 ... Мәліметтер қоры өзгерісін журналға тіркеу |89 |
|5 ... ... қоры және ... ... ... |95 |
|5.1 INTERBASE локальды сервері |95 ... ... құру |99 |
| Delphi7 және ... қоры ... |100 ... ... мен ... |106 ... |109 ... ... |110 ... А |111 ... ... 5В011100-«Информатика» мамандығының ... ... қоры және ... жүйелер» және 5В070300 -
 «Ақпараттық жүйелер» мамандығының студенттеріне жүргізілетін ... ... ... негізінде жазылды. Оқу құралында «Мәліметтер
қорын жобалау және ақпараттық жүйелер», «Delphi ортасында ... ... алу ... ... ... құру және ... ... локальды деректер қорын қолданып ақпараттық жүйелер ... ... қоры және ... ... ... тақырыптары
қарастырылып, әрбір тақырыпқа қысқаша теориялық ... және ... ... ... ... техника мен технологияның дамып, маңызы
артқан XXI-ғасыр заманында мәліметтер қоры адамзат ... ... ... ... ... Ал ... қоры қазіргі таңда кез келген сферада
қолданылып жүргені бәрімізге мәлім. Бұл туралы тұрақты анықтама жоқ, себебі
бұл ұғымның ... ... аясы кең ... ... Мәліметтер
қорын деректер қоры деп те айтады. Екеуінің ... бір. ... ... ... қоры сөзінің орнына деректер қоры сөзі де ... ... қоры – бұл ең ... ... ... ... бағдарламасын жасауды қамтамасыз ететін кітапханасының күшті қоры
құрылып, ол әмбебап интерфейс арқылы жүзеге асырылады. ... қоры ... ... ... ... қолдануға болатын ақпараттың электрондық
жинақтамасын айтады.
Қазіргі қолданбалы программаларды дайындау технологияларының өте
мықтылығына қарамастан, егер программаның ... ... ... ... ... кезеңіне барынша назар аударып, әбден
пысықтамаса, соңында оны жөндеуге көп ... ... ... Егер
программа құрылымы, жобасы дұрыс келістірілмеген болса, программаға
жаңа ... ... ... ондағы кемшіліктерді жөндеу үлкен қаржы
шығынына да ұшыратуы мүмкін. ... ... ... ... ... ... қойылымы
2. Мәселелердің шешілу тәртібін анықтау
3. Алғашқы мәліметтерді таңдау
4. Мәліметтер құрылымын анықтау
5. Қолданбалы программа дайындау
6. Программаның ... ... ... ... локальды мәліметтер қорын қолданып ... ... әрі ... әрі ... Осы ... ... қорын
қолдана отырып ақпараттық жүйелерді құру және ... ... оның ... ... ... ... құралында келтірілген әр мысалдың Дельфи тілінде жобалық пішіні
жасалып, бағдарламалары құрылуы оның ... ... ... ... МӘЛІМЕТТЕР ҚОРЫН ЖОБАЛАУ ЖӘНЕ АҚПАРАТТЫҚ ЖҮЙЕЛЕР
Мәліметтер қоры қандай да бір пәндік ... яғни адам ... ... ... тұратын мәліметтерді сақтау және қолдану үшін құрылады.
Мәліметтер қорының қосымшалары қандай да бір ... ... ... үшін ... ... ... деп мәліметтерді алу, оларды
қолданушыға ... ... ... ... өңделген мәліметтерді қайтадан
мәліметтер қорына қайтару сияқты процестерді айтады.
Мәліметтер қорын жобалау келесі пункттерден тұрады:
1. Мәліметтер қорының ақпараттық ... ... ... ... үлгілейтін шынайы әлемнің объектілерін – пәндік
аумақты талдау. Бұл объектілерден мағыналарды ... және ... ... ... “деталь” мағынасының мінездемесі
“атауы”, “түсі”, “салмағы” т.б.) және олардың тізімін құрастыру.
3. Мағыналар мен ... ... ... ...... ... ... және олардың бағандары (атрибут-өріс)
анықталуы керек. (Paradox, dBase, FoxPro, Access, ... Sybase, ... Oracle және ... ... ... ... түрде анықтайтын атрибуттарды
анықтау
5. Мәліметтердің ... ... ... ... ... Объектілер арасында байланыс орнату. Кестені қалыптандыру.
7. Мәліметтердің қауіпсіздігін қамтамасыз ететін сұрақтарды жоспарлау
Мәліметтер қорын құру ... ... ... ... ... – ол
құрылатын қордың қатынастарында қайталанулар санын азайту арқылы жобалауды
дұрыс бастау. Егер жоба ... ... ... ... онда оны әрі ... келгенде бөгеттер саны азаяды.
1. Деректердің шамадан тыс қайталануы және аномалиялар
Деректердің шамалы (қарапайым) және шамадан тыс ... ... ... МҚ-н ... кезінде бөгет жасамайды. Мысалы: ҚТ
(Қызметкер және Телефон) деген қатынас бар болсын (1- ... Бір ... ... ... ... ... ... мүмкін.
1-кесте- Қызметкерлер және Телефон қатынасы
|Қызметкер есімі |Телефоны |
|Алия |525458 ... |525458 ... |525458 ... |562651 ... 525458 ... бірнеше адам үшін қайталануы қарапайым қайталану
болып табылады.
ҚТБ-қатынасы (Қызметкер, телефон, бөлме) бар болсын.
2-кесте- ... ... ... қатынасы
|Қызметкер есімі |Бөлме |Телефоны |
|Алия |111 |525458 ... |111 |525458 ... |111 |525458 ... |112 |562651 ... - ... телефон, бөлме қатынасы
|Қызметкер есімі |Бөлме |Телефоны |
|Алия |111 |525458 ... |- |- ... |- |- ... |112 |562651 ... ... шамадан тыс қайталануы бар. Одан ... үшін ... қор ... «-» ... ... болады, ол да қайталанады, оған
жадыдан орын бөлінеді және программалау кезінде осы таңбаны ескеру ... ... ... ... ... ... ... Одан құтылу үшін 4-5-
кестелердегідей ТБ(Телефон-Бөлме) және ҚБ(Қызметкер-Бөлме) ... ... - ... ... ... |
|525458 |111 |
|562651 |112 ... - ... ... есімі |Бөлме |
|Алия |111 ... |111 ... |111 ... |112 ... ... ... ... бөлек жазылады да басқа қатынасқа бөлмеде
тұратындардың аты-жөні жазылады. Бұл қатынастың тиімділігі ... ... ... ... ол туралы деректерді МҚ-нан өшірсек те, ... ... ... ... ... ... процесті қатынастарды
қалыптандыру дейді.
Деректердің шамадан тыс қайталануы картеждерді өңдеу кезінде қиындықтар
туындатады, оларды қатынасты ... ... ... Олар ... өшіру, жаңадан толтыру, жөндеу кезінде бөгет жасайды.
Аномалия дегеніміз МҚ-да деректерді өңдеуді қиындататын, ... ... 3 түрі ... ... өшіру
3. жаңадан қосу
Жөндеу аномалиясында деректің бір мәнін жөндеу үшін ... ... ... оған ... ... жазуларды өзгерту
керек болады. Мысалы: 2-кестеде 111-бөлменің телефоны өзгерсе, ... ... ... да қарап шығу керек, сосын осы ... ... ... ... ... ... ... қатынастан қандай да бір деректі өшірген уақытта осы
дерекке қатысы жоқ қажетті бір ... өшіп ... ... ... ... ... ... өшірсек, бөлменің нөмірі мен ... ... ... Ал ол ... ... ... ... ьөлменің бос
екендігі, оның телефоны неше екендігі туралы дерек сақталмайды.
Жаңадан қосу аномалиясы ... ... ... ... жаңа
деректерді осы қатынасқа енгізуге болмайды, әйтпесе жаңадан жазу ... ... тағы да ... ... ... ҚТБ ... жаңадан
бөлменің нөмірі мен телефонды қосу мәнсіз, ол бөлмеде біреудің ... ... Бұл ... ... ... ... ... болып
отыр, оның мәні толмайынша кестеге жаңа жазу енгізу мүмкін емес.
2. Ақпараттық жүйелерді жобалау
Ақпараттық жүйелерді үйренген кезде ... ... ... ... ... қорын жобалау және құрастыру өнерлілікті, іскерлікті
талап етеді. Қолданушының талаптарын ... оны ... ... ... ... ... ... болып табылады. Ал осы
шығармашылық процесті толық-қанды және ... ... ... көмегімен
физикалық тұрғыдағы мәліметтер қорына айналдыру – инженерлік процесс болып
табылады. Екі ... те бас ... ... ... ... Деректер қорын қолдану арқылы үлкен ақпараттық жүйе де
құруға болады. Ақпараттық жүйені құрмас бұрын онда ... ... ... ... ... жүйенің үлгісін жасап алған дұрыс.
Ақпараттық жүйені ... ... ... ... ... ... төменде келтірілген.
Концептуалдық жобалау -  программада қарастырылатын негізгі мәселелер
мен функциялар анықталып, ... ... ... ... мен ... ... ... - ER–диаграмма негізінде реляциялық ... ... ... ... ... ... қоры
кестелері арасындағы байланыс түрлерін анықтау.
Физикалық жобалау -   мәліметтер қорын басқару жүйелері ... ... ... тілі ... ... ... (ММТ). Физикалық модельдеудің соңғы этабында ЭЕМ жадысында мәліметтер
қоры файлдары және іздеу структурасы файлдары пайда болады.
Пәндік аймақты модельдеу ... ... ... ... ... даталогиялық және физикалық жоспарлау, концептуальды
жобалау. ... ... ... кез ... ... ... байланысты. Пәндік аймақ дегеніміз сол еңбек саласындағы негізгі
объектілер жиынтығы болып табылады. Жұмыс ... ... ... үрдісінде
қарастырылып жатқан ақпараттық жүйедегі негізгі объектілер олардың
қасиеттері және ... ... ... ... ... ... ... жұмысы барысында құрылған инфологиялық
модель негізінде даталогиялық модель құрылады.
Оның инфологиялық модельден айырмашылығы ... ... ... ... ... Әрі қарай физикалық модель жасалады. Бұл жұмыс
кезеңінде ақпараттық жүйеде қолданылатын мәліметтер қандай ... ... ... түрлерін талап ететіні анықталады.
1-cурет - Инфологиялық модельдің негізгі бөлшектері
Мәліметтер қорының концептуалды жобалануы.
Мәліметтер қорын жобалаудағы ... ... ... ... бөлігі үшін мәліметтердің концептуальді моделін құру ... Оның ... ... бір ... ... ... ... ұсыныс моделі толық құрылады; содан соң олар мәліметтердің
коңцептуальді моделіне интегралданады.
Осы орайда келесі мысалды қарастырайық. «ШҚМУ ... ... құру ... ... 1-кезең. Концептуальды жобалау кезеңі.
Бұл кезең жалпы мәні бар, жауапты және программистен, мәліметтер қорын
әрі қарай ... ... ... ... этап ... ... ... шолу және жалпы жобаны құрастыру жасалады, бұл кезеңде
кәсіпорынның ... оның бір ... ... дәрежелі интегралданған
негізі қарастырылады.
Бұл кезеңнің ... ... ... және ... ... ... жаңа мәліметтер қорында мүмкін болатын
ақпараттарды өңдеу жұмыстарын анықтау, ақпараттық объектілерді және олардың
арасындағы байланысты анықтау, ... ... ... моделін тұрғызу
және талдау нәтижелерін құжаттандыру.
1 2-кезең. Заттық аумақтың сипаттамасы.
Мәліметтер қорын құрастырудың алдында заттық аумақты қарастырып ... ... ... ... ... ... ... ШҚМУ. Ішкі жүйесі
– студенттер мәліметтер қоры. Автоматизациялауға студенттер ... ... ... ... жатады. Заттық аумақтың атрибуттар
(өрістер) жиыны 6-кестеде келтірілген.
6-кесте-Заттық аумақтың атрибуттар ... ... ... ... |
|1 |2 |3 |
|1 ... ... |Fio |
|2 ... ... |data |
|3 ... |Naz |
|4 ... |fakult |
|5 ... |Spez |
|6 ... |Kurs |
|7 |Топ |Group |
|8 ... |Adres |
|9 ... ... ... ақы ... |N_dog |
| ... | ... |Ақы төлеу түрі ... ... |Ақы ... |Summ ... |Жанұялық жағдайы |Sem_pol ... ... |Lgota ... ... түрі ... ... ... |Obshag ... ... тұру ... ... ... ... ... мерзімі |Data_viezda ... ... ... |N_kom ... ... ... нөмірі |N_bilet ... ... ... ... ... бөлімі ШҚМУ студенттері туралы деректерді сақтау
және есеп жүргізу ... ... ... ... ... студентке
қайталанбас нөмірі бар билет береді, ол нөмір тек қана бір ... ... ... ... оқуға ақы төлеу үшін ... ... ... нөмірі болады, ол да тек бір студентті анықтайды.
Сонымен қатар студенттерге ақы ... ... ... беру кезінде
жеңілдіктер қарастырылады.
4-кезең. Заттық аумақтың шектеулері және мүмкіндіктері.
Бұл заттық ... ... ... ... мен ... қолдануға
болады:
1 Студенттік билеттің нөмірі 5 символдан тұрады, онда топ коды ... ... ... Ақы ... келісімінің нөмірі 5 символдан тұрады, онда ... әрпі және ... ... ... ... ... былай анықталады:
- алғашқы төленген ақы сомасы ескеріледі
- жазғы және қысқы ... ... ... ... жағдайы ескеріледі
4 Жатақхана тек қана басқа қаладан келген студенттерге беріледі және
ескерерлік себептер ... ... ... ... ... ... тұрғызу.
ER-диаграмманы тұрғызу үшін заттық аумақтың объектілерін, атрибуттық
құрамын анықтау ... ... ... ... келесі (кестелер)
мағыналар анықталады:
1 Студент (fio, data, naz, adres, ... ... (fakult, spez, kurs, group, N_bilet, ... Ақы (N_dog, ... summ, lgota, ... Жатақхана (N_bilet, obshag, srok_proj, data_viezda, N_kom)
Алынған мағыналық кестелер арасында келесі байланыстар ... ( ... ... ( ... ... ... ... аламыз.
2–сурет-ER-диаграмма
2 6-кезең. Логикалық жобалау кезеңі.
Бұл кезеңде қандай да бір таңдалынып алынған МҚБЖ құралымен өңделетін
модель ... ... ... ... ...... форматы және оларға қолдануға болатын амалдар
құрамы.
Деректердің иерархиялық, желілік, реляциялық модельдері бар.
Кез келген модельде 3 негізгі компонент болады:
1 ... ...... ... сипаттайды.
2 деректер структурасына қолданылатын амалдар
3 толықтылықты шектеу – формальды түрде сипатталған деректер структурасы
негізінде заттық аумақтың сәйкестігін қамтитын ... ... ... ... ... ... ... онда
байланыс орнату және жаңа байланыстарды орындау, кез келген деңгейдегі
деректерді қолдану кесте түрінде жеңіл ... ... ... ... ... ... бар, ол деректерді модельдеу құралы
ретінде қолданылады. Қатынасты ... ... ... жолдары картеж деп аталады, ол бір ... ... ... ... ... ... ... атаулары атрибуттар деп
аталады. Мәні бірмәнді анықталатын атрибут кілттік деп аталады. Егер картеж
бірнеше абрибуттар мәндерінің ... ... ... онда ... ... деп ... ... біреуі әрқашан алғашқы және оның
мәні жаңаланбайды, ... ... ... ... деп ... ... ... бейнелеу үшін кілттердің көшірмелері қолданылады.
Толықтылықты шектеу.
Мұнда 2 негізгі талап бар:
1 Сілтемелер толықтылығы – ... ... ... ... (РМҚ) ... ... ... қалыптандырылған қатынастар
картеждері түрінде көрсетіледі. Бұл кезде анықталған қатынастар арасындағы
байланыстар функционалды тәуелділік (ФТ) ... ... ... ... арасындағы ФТ-ті бейнелеу үшін аналық ... ... ... ... ... ... ... Негізгі қатынас кілтінің көшірмесі болып табылатын ... ... деп ... ... ... ... ... қатынастағы әрбір кілттің әрбір мәні үшін негізгі қатынаста ... ... ... кілті бар картеж сәйкес келуі керек.
2 ... ... – кез ... ... ... ... ... басқа картежінен ерекше болуы керек, (яғни кез келген қатынаста
алғашқы кілт ... ... егер бұл ... ... онда ... бір ... ... қарама - қайшы деректер сақталуы мүмкін.
Берілген мәліметтер қорының ... ... ... сәйкес
кілттері мен атрибуттары бар қатынастар түрінде қөрсетуге болады:
Студент ... ... ... ... ... ... |N_bilet|N_dog |... |
Ақы қатынасы -
|N_dog |Forma_opl |summ ... ... ... ... |N_kom |
2 ... ... деп қарастырылып отырған қатынаста қажет емес функционалдық
тәуелділіктен (ФТ) құтылу үшін ұсақ ... ... ... ... ФТ ... атрибуттары арасындағы семантикалық байланысты
анықтайды. ФТ ұғымы 2 немесе одан көп ... ... Егер ... ... А ... ... ... Б атрибутының 1 мәні сәйкес
келсе, онда Б атрибуты А атрибутынан ФТ ... А ... Б ... ... ... ... толық деп аталады, егер Б атрибуты кез келген А тура ішкі жиыннан
функционалды тәуелсіз болса, яғни А+С(Б ФТ ... және А(Б ... С(Б ... ... ... деп аталады, егер А(С және С(Б ФТ бар С атрибуты бар
болса, және ол мына С(А ... ... ... ... одан көп атрибуттар өзара байланыссыз болады, егер осы
атрибуттардың бірде біреуі басқа атрибуттардан ФТ ... ... ... ... ... ... керек:
1 атрибуттар арасында қажетсіз ФТ болмауы керек.
2 атрибуттарды топтау деректердің минималды қайталануын, ... ... мен ... ... етуі ... талаптарды қанағаттандыру қатынасты қалыптандыруды білдіреді.
Ұсынылып отырған жобада қатынастар 3-ші қалыпты формада, себебі барлық
кілттік емес атрибуттар алғашқы ... ... ... ФТ жоқ.
3 Деректердің даталогиялық моделі.
Бұл кезеңде қатынастың атрибуттық құрамы толық ашылады (7-10 кестелер):
деректер типі, ұзындығы тағайындалады.
7– кесте - ... ... ... типі |Символ саны |
|Fio ... |20 ... ... ... түрде |
|Naz |Мәтін |10 ... ... |25 ... ... |+ |
8 – ... - ... ... ... типі |Символ саны ... ... |50 ... ... |7 ... ... |Автоматты түрде |
|Group ... |5 ... ... ... ... |
|N_dog |Мәтін |5 |
9 – ... - Ақы ... ... типі ... саны |
|N_dog ... |5 ... ... |20 ... ... |Автоматты түрде |
|Lgota ... |3 ... ... |50 |
10 – ... - Жатақхана қатынасы
|Атрибут ... типі ... саны ... ... |5 ... ... |3 ... ... |Автоматты түрде ... ... |15 ... ... |4 ... ... ... логикалық моделі қатынастар схемасы түрінде
тұрғызылады. Ақпараттық объектілердің реляциялық мәліметтер моделі ... ... ... ... аномалия жоқ, кестелер қалыптандырылған болып
саналады. Енді мәліметтер қорынбасқару жүйесін ... ол ... ... ... ... ... көлемді мәліметтерді сақтау, өңдеу және іздеу үшін компьютерде
арнайы бағдарламалар бар. Мұндай ... ... ... басқару
жүйелері деп аталады.
Мәліметтер қорын басқару жүйесі (МҚБЖ) – бағдарламалық жабдық, ... ... қоры ... оны әрі қарай бағдарламалық басқаруға
болады, соның негізінде ақпаратты ... ... ... ... іздеу
жүйесі дегеніміз – мәліметтер қорының жиынтығы және оларға қызмет көрсетуші
бағдарламалар. Қолдану түріне ... МҚБЖ ... және ... деп ... Дербес МҚБЖ бір компьютерде жұмыс
3-сурет - Реляциялық мәліметтер қоры кестелерінің байланыс ... ... ... ... ... құруды қамтамасыз етеді.
Дербес МҚБЖ-не Paradox, dbase, FoxPro, Acces және т.б. ... ... МҚБЖ ... ... ... ... ақпараттық
жүйелерді құруға мүмкіндік береді. Көп қолданушы ... Oracle, ... ... SQL, Server, Informix және т.б. жатады.
2-БӨЛІМ. DELPHI ОРТАСЫНДА МӘЛІМЕТТЕР ҚОРЫНА РҰҚСАТ АЛУ МЕХАНИЗМДЕРІ
Delphi7 бағдарламалау ... ... ... ... ... бар: ... Informix, IB Server, BDE, ODBC және де ... ... ... ... ... өтейік.
BDE және ODBC механизмдері
Delphi көмегімен құрылған және файл-серверлік мәліметтер қорымен жұмыс
істеуге арналған бағдарламалар арнайы BDE (Borland Database Engine ... ... ... ... машинасы) бағдарламалар
кітапханасына негізделеді. BDE әр ... ... ... деңгейлі DLL
кітапханасының жиынтығын ұсынады. BDE Delphi-ді орнатып жатқан ... ... ... және ... ... ... BDE ... көптеген кестелерімен жұмыс атқара алады, мәселен,
файл-серверлік (dBase, Paradox, FoxPro, Clipper), ... ... (Inter Base, ... SQL Server, Oracle және т.б). ... SQL тілінің өзінің интерпретаторы бар, яғни соның арқасында
тек мәліметтер қорының ... ғана ... ... ... ... де сұраныс құра алады.
Компьютерде BDE орнатылмаса және тіркелмесе Delphi-де жасалған және BDE
механизмін ... ... бір ... қоры ... жалғастыра алмайды.
Бұл жағдай бағдарламаны таратуды қиындата түседі, ... ... BDE ... жиынтығын да бірге жіберу керек болады.
BDE механизміне ұқсас ODBC (Open Data Base ...... ашық ... ... ... де қолданылады. ODBC драйверлері
де BDE механизмінің функцияларын, яғни төмен деңгейлі мәліметтер ... ... және ... ... ... фирмасының өңдеуімен жасалынған МҚБЖ мүмкіндіктерінің өзара
байланысы болып табылады. Ол ... ... МҚБЖ мен ... ... ... ... ODBC қызметі - қосымшалардан
таңдалып алынған ақпарат бойынша сұраныстар қабылдау және оларды ... ... ... ... .
ODBC механизмінің негізгі тағайындалуы: қосымшаларды абстрогирлейді,
яғни сол арқылы серверлік мәліметтер қоры кез келген клиенттік қосымшаларға
ашық, қол ... бола ... ... ... ... оның ... өңдеудегі
қарапайымдылығы және МҚБЖ-ның кез келген қорына қатынау мүмкіндігінің ... ... ... ... ... ... ал
SQL Server-дің мүмкіндіктерін пайдаланып, сервер бөлігін тағайындауға
болады.
Негізгі кемшілігі ... ... ... ... ... ... ... табылады. Клиент-сервер жүйесінде бұл олқылық
сұранысты клиент-компьютерінен ... ... ... ... BDE мен ODBC- ден ... ... қарастырылып отырған ADO
механизмі қолданылады.
ADО механизмі.
Delphi-де мәліметтер ... ... Borland Database Engine ... ... ... ... сияқты Microsoft ActiveX Data Objects (ADO)
технологиясын да ... ... яғни бұл ... СОМ ... ішінде OLE DB интерфейсіне негізделген.
ADO технологиясы әмбебаптылығының арқасында ... ... ие ... Енді OLE DB ... ... ... ... жүйесінің барлығында бар десек те болады. Сондықтан
да осы жолмен мәліметтерге қатынау үшін тек ADO ... ... ... мәліметтер қоры мен ADO орнатылған кез ... ... ... ... ... палитрасында мәліметтерге ADO ... ... ... ... қосымшасын жасай алатын компоненттер
жиынтығынан тұратын ADO парағы бар.
Microsoft ActiveX Data Objects (ADO) МҚ ... ... ... ... ... ADO ... мен OLE DB ... әр типті мәліметтер негізіне бірегей қатынау әдісін ... ... ADO-ны ... ... корпоративті SQL серверде сақталатын
мәліметтерге де, ... ... де, ... ... да бірдей
қиындықты операцияларды қолдана береді. ADO арқылы кез ... ... SQL ... ... сұрақ туындауы мүмкін: бұл сұранысты деректер көзі қалай атқара
алады?
МҚ серверлерін көп ойлап қажеті жоқ, SQL ... ...... ... ... ... электронды кесте, электронды почта және т.б.
үшін ADO механизмі мен OLE DB интерфейсі шақырылады. OLE DB ... ... ... ... ... СОМ объектілер
жиынтығы мен объектілер арасында деректер алмасуды қамтамасыз етіп отыратын
арнайы деректер көзінің функциялары мен интерфейстерді ұсынады.
ADO ... ... кез ... ... көзі ... қоры,
электронды кесте, файл), мәліметтер провайдерінің көмегімен қосымшаға
қатынасатын мәліметтер ... деп ... ... минимальді
компоненттер құрамына байланыс объектісі, деректер тобының ... ... ... ... ADO ... тек ... OLE DB объектілерін ғана емес, қосымша
мен деректер объектілерінің өзара қатынасын реттейтін ... ... ... ... ... мен интерфейсті ашып әрі
кеңейтеді. Объектілер жиынтығы мен сәйкес провайдер кез ... ... ... ADO ... ... ... мүмкін. Осы кезде–ақ
мәліметтер ұғымы кеңейе ... яғни ... емес ... деректерге
объектілер жиынтығы мен интерфейсті өңдеп ... ... ... ... ... ... жүйелік реестрдегі
ADO негізі
4–сурет-Мәліметтерге ADO арқылы қатынау схемасы
ағаштық құрылымдар немесе CASE – ... ... және т.б. ... ... ... ... ... болып табылатын СОМ
стандартты интерфейстеріне негізделгендіктен бағдарламалық кодтың көлемін
азайтып, МҚ қосымшаларын ... ... мен ... ... ... ... DB ... объектілерді келесі типтерге бөледі:
Тізімдеуші (Enumenator) ... ... ... ... да тізімдеуіштерді
іздестіреді. ADO провайдерлерінің функционерленуін ... етіп ... көзі ... (Data Source Object) ... ... ... бір деректер қоймасына жүгінетін объектілер ... ... ... ... ... инкапсулирлейді;
Команда (Command) өзінің бұйрық мәтініне ие және оның ... ... ... SQL ... мқ кестелік ұсынысы және т.б.
болуы мүмкін;
Қатарлар ... (Rowset) - ADO ... ... ... ... ... жиынтығы;
Объект қатесі (Error) ерекше жағдай жайлы ақпаратты қамтиды.
Өзін өзі бақылау сұрақтары
1. Дельфи ортасында деректер қоры кестесіне қалай қатынауға болады.
2. Рұқсат алу ... ... ... InterBase механизмі қалай жұмыс істейді?
4. BDE механизмі қалай жұмыс істейді?
5. ODBC механизмі қалай жұмыс істейді?
6. ADO механизмі қалай жұмыс істейді?
2.1 ADO ... ... ... ADO ... ... ... деректер
көзімен (SQL сервермен, жергілікті МҚБЖ –мен, файлдық жүйемен және т.б.)
байланыстырады. Әр ... ... ADO ... ... ... ... қоймасының қайда орналасқанын және оның мазмұнын
«біледі», сұранысы бар мәліметтермен ... ... ... оны қайтару
мақсатында ақпаратты интерпретациялайды.
Операциялық жүйеде ... ... ... ... ... орнатқан кезде мүмкін болады.
Microsoft ActiveX Data Objects инсталляциясы кезінде операциялық жүйеде
келесі стандартты провайдерлер ... ... Jet OLE DB Provider ОАО ... ... ... ... байланыс орнатады;
-  Microsoft OLE DB Provider for ... Indexing Service ... ... Indexing Service Internet-ресурстарына тек оқу қатынасын
орнатады;
-  Microsoft OLE DB Provider for ... Active ... ... ... ... ... орнатады (Active Directory
Service);
-  Microsoft OLE DB Provider for Internet ... ... ... Internet ... Server, ... ресурстарды қолдануға мүмкіндік береді;
-  Microsoft Data Shaping Service for OLE DB мәліметтердің иерархиялық
жиынын қолдануға ... ... ... OLE DB Simple Provider OLE ... тек ... қолдайтын деректер көзіне қатынау ұйымдарына арналған;
-  Microsoft OLE DB Provider for ODBC drivers ODBC ... ... ... ... ... осындай жат нұсқалар байланысын пайдалану қиындыққа әкеледі. ODBC
драйверлерінің өзі ақырын ... ... ... ... ... ... OLE DB Provider for Oracle Oracle серверімен қатынас
орнатады.
ADO-ны Dеlphi-де жүзеге ... ADO ... ... ... ... ... ... ADO беттерінде, VCL-де компоненттер жиыны ретінде
орналасқан. Компоненттер жұмысын қамтамасыз етіп тұрған барлық ... ... ... және ... файлдарында
көрсетілген.
ADO компоненттері.
TADOConnection компоненті тізімдеуіштің, деректер көзінің ... ... ... бар ... ... ... ... командалары  TADOConnection компонентінде
жасақталған.
Қатарлар тізімін TADOTable, TADOQuery, TAOostoredProc компоненттерінің
көмегімен алуға ... ... ... ... қоймасындағы
мәліметтерге қатынас орната алады. Осыдан ... ... ... ... ... Inprise ... сәйкес жазбалар жинтығы
деп айтсақ та болады.
ADO компоненттерінің әдістері мен қасиеттері МҚ қосымшасына қажет барлық
функцияларды ... ... ADO ... ... ... ... ... компоненттеріне аса ерекшеленбейді. Бірақ, қажет кезінде өңдеуші
сәйкес ADO объектілері ... ADO ... ... ... ... ... ... сілтемелер компоненттерде болады.
ADO деректер көзімен байланыстыратын механизмдер.
ADO мәліметтеріне қатынайтын компоненттер ... ... ... ... ... ... Яғни, стандартты ADO мен Delphi әдістері.
Бірінші жағдайда, деректер көзіне ... ... үшін ... ... ... Ал, ... жағдайда, байланысты
кеңірек басқаратын және мәліметтерге біруақытта бірнеше компоненттермен
қатынасатын ... ... ... ... ... ADO ... байланысатын ақпаратты
сақтауға арналған. Мұнда үтірлі ... ... ... ... Ең аз ... ... провайдерлері мен қашықтатылған сервер
атаулары болуы керек:
Connectionstring:='Remote Server=ServerName;Provider=ProviderName';
Қажет жағдайда қашықтатылған провайдер жолы :
Connectionstring:='Remote Provider=ProviderName';
және провайдерге ... ... ... ... ... көзіне қатынайтын әр компонент Соnnectionstring қасиетінде
байланыс параметрлеріне сұраныс қоя ... өз ... ... ... ... ... ADO компоненттері бар болса, бір ... көп ... ... ... ... да ADO механизміне
байланысты арнайы ... ... ... ... ... ... Сонымен қатар бұл компонент Соnnectionstring қасиеті ... да аша ... және де ... ... ... қосымша
мүмкіндіктерін ұсынады. Бұл байланыс түрімен жұмыс істейтін компоненттер
TADOConnection компонентіне property ... ... ... қосылады. Ал бұл қасиет ADO деректерін инкапсуляциалайтын әр
компонентте болады.
Бұл технологияны қолданып, ... ... іс ... ... ... өзі бақылау сұрақтары
1. Провайдер деген не? Атқаратын қызметі?
2. ADO провайдерлері деген не?
3. Қандай стандартты провайдерлер бар?
4. ADO-ны ... ... ... ... ADO ... ... не? ... ата.
6. ADO деректер көзімен байланыстыратын механизмдері қандай?
3-БӨЛІМ. МӘЛІМЕТТЕР ... ҚҰРУ ЖӘНЕ ... ... қоры бір ... ... ... тұрады.
Келесі қадамда белгілі бір ... ... ... ... ... ... ... таңдау керек. Ол үшін көбіне локальды
ДББЖ алынады (Мысалы: Paradox7). Мәліметтер қорын жеке қапшықта (каталогта)
сақтау ... ... ... ... деп аталатын бүркеншік атаумен беруге
де болады. ... ... ... жолдың жазылуын, ізделу уақытын
қысқартады.
Мысалы: vkgu каталогын оның ішінде Primer алиасын құру ... ... ... ... TOOLS – ... ... ... болған терезеде TOOLS – ALIAS MANAGER – NEW
командасын ... ... ... атауын енгіземіз,
деректер қорының атауы мен қапшық атауы бірдей бола береді,
сондықтан Primer деп ... Осы ... ... типі ... ... – STANDART
деп көрсетеміз.
4. Осы терезедегі BROWSE ... ... ... ... ... ... ... ... ... BDE-ге ... ... пе? Сұрағына «ИӘ» деп ... ... қоры ... құру және ... кесте құру.
File – New – Table командасын орындаймыз.
1. Кесте форматын таңдау үшін TableType жолында Paradox7 дегенді ... ... ... ... ... ... ... анықтаймыз. Кестенің құрылымы кестеге
енетін өріс атауларын (FieldName), типтерін (Type), өріс ... (Size), ... ... (Key) ... ... Бұл ... ... атаулары латын әріптерімен теріледі. Ал өріс типтері
келесідей мәндер ...... ... ұзындығы 255 символға дейін .
Number – нақты тип, -10307 нен +10308 дейін.
$(Money) – ақшалық тип, алдыңғы тип сияқты.
Short – ... ... тип, -32768 ден +32767 ...... тип, ... ден ... дейін.
#(BCD) – жоғарғы дәлдіктегі нақты тип.
Date – дата типі.
Time – ... ... – дата және ... типі.
Memo – ұзақ мәтіндік тип, ұзындығы 255 символдан артық.
Formatted Memo – форматталған мәтіндік тип (һаріп – ... ... ... ...... ... (Object Linking and ... – осы технологияны ұстанатын
ақпаратар типі.
Logical – логикалық тип.
+(Autoinctement) – ... ... ... мәні 1-ге өсіп ...... ... ... деректер типі.
Кілттік өрістің атауы тізімде бірінші орналасып соңына ID әріптері
тіркеледі де Key бөлігінде жұлдызшамен ... ... ... ... ... Field – ... түрдегі өріс.
Minimum Value – минималды мәні (сандық әрістер үшін).
Maximum Value – максималды мәні (сандық әрістер үшін).
Default Value – ... ... атап ... жағдайда шығатын мән.
Picture – енгізу маскасы.
Кестені сақтау үшін Save As ... ... ... терезеде файл атауын
(мысалы student.db), алиас атауын (мысалы vkgu) ... де ... ... жолы ... ... ... Бағаналардың тағайындаулары:
– Fields Name - өріс аты;
– Type - өріс ... Size - өріс ... ... ... ... - '*'жұлдыздан құралады, егер өріс алғашқы кілттің құрамына енсе.
Кестені құру шеберін қолдану
Деректер қоры кестесін құру үшін Database Desktop (DBD) ... ... ... ... ... ... ... жұмысшы псевдонимі утилитін орнатамыз. Бұл псевдоним
өздігінен «үндемей» (по ... ... ... ... Егер ... ... онда DBD жұмыс істеген сайын псевдонимді көрсетіп
отыру керек, бұл уақытты көп алады.
Жұмысшы псевдонимін ... үшін бас ... ... ... ... ... және Aliases түсетін тізімінде псевдоним атын
PRIMER-ді таңдау, одан кейін Ok батырмасын басу ... ... ... қоры (ДҚ) кестесінің структурасын анықтау
терезесі пайда болады (5-сурет).
Кесте құрылымын ... ДҚ ... құру үшін бас ... File | ... Table ... таңдау керек. Create Table ... ... ... ... ... ... ... және Ok батырмасын
басамыз . ... ... ... ДҚ ... ... терезесі көрінеді.
"Student" кестесіне енгізілетін өрістерді анықтаймыз. FieldName бағанасына
FIO өрісін енгіземіз. Өріс типін ... үшін Type ... ... немесе бос орын (пробел) пернесін басыңыздар. ... ... ... өріс ... ... үшін типтер тізімі шығады (6-сурет).
FIO өрісінің типін Alpha деп таңдаймыз және Size - өріс ... 20 ... ... осылайша n_bilet өрісін енгіземіз. Бұл студенттердің ... ... ... Key бағанына жұлдызшаны қою арқылы осы өрісті
алғашқы кілт құрамына енетінін ... ... ... кілтпен
индекстеледі. Кілттік өріс тізімде бірінші тұруы керек, сондықтан тышқанның
5–сурет - Database Desktop ... ДҚ ... ... ... тістеп алып, тізімнің басына көтереміз.
6–сурет - Өріс типін таңдау
Student кестесінің басқа ... ... ... ... өз ... орындай аласыздар. Әрбір өрісті мәндермен міндетті
түрде толтыру талабы сақталауы керек. Бір ... ... өріс деп ... оны ... Required Field ... ... қою ... сонда бұл
өріс экранда әрі-бері жылжымай әрқашан көрініп тұрады. ... ... ... қою үшін мына қасиеттерді пайдаланамыз:
- Minimum value - өрістің ең минималды ... ... Maximum value - ... барынша үлкен мәнін анықтайды
- Default value – өріс мәнін үндемей өзі анықтайды
7-сурет-Materialy кестесінің құрылымын анықтау
Picture – өрістің ... ... ... Шаблон құру үшін
Assist батырмасын басу керек.
Төменде келтіріліп отырған қатынастарды қолдана отырып және ... ала ... өз ... ... aki, ... құрыңыздар:
мамандық қатынасы
|Атрибут |Деректер типі |Символ саны |
|Fakult |Мәтін |50 ... ... |7 ... ... ... түрде |
|Group |Мәтін |5 ... ... ... ... ... ... |5 ... қатынасы
|Атрибут ... типі ... саны ... ... |5 ... |Мәтін |20 ... ... ... ... ... ... |3 ... ... |50 ... қатынасы
|Атрибут ... типі ... саны ... ... |5 ... ... |3 ... |Мерзімдік |Автоматты түрде |
|Srok_proj ... |15 ... ... |4 ... ... және есте ... ... ... ... Database ... (DBD) ... ... Содан соң С:\PRIMER каталогында student.db файлы құрылады ... ... ... кесте құрылымын өзгерту.
Егер ДҚ бар кестелерге өзгерістер енгізу керек болса, File|Open|Table
меню элементін ... ... ... ... ... терезеден кесте атын
таңдап Ок батырмасын басу ... ... ... көрсетіледі. (9-суретте
student кестесінде жазулар жоқ ... ... біз оған ... ... ... ... ... кестені жаңа жазбамен толтырғымыз келсе F9 батырмасын
басуымыз керек.
Кесте құрлымын ... ... ... меню ... ... кесте құрлымын анықтайтын диалогты терезе көрсетіледі.
Кестені индекстеу.
Кесте деталі болып табылатын екінші ... ... ... ... Ол кестенің құрылымы «мамандық» қатынасымен
анықталады (11-кесте).
11-кесте - «мамандық» ... ... ... ... типі ... саны |
|Fakult |Мәтін |50 ... ... |7 ... |Бүтінсан |Автоматты түрде |
|Group ... |5 ... ... ... түрде |
|N_dog |Мәтін |5 ... ... ... ... ... ретінде Number өрісін кілттік өріс
деп тағайындаймыз. 10-суретке көңіл аударсаңыздар, бұл кестеде де «student»
кестесінде ... өріс ... ... N_bilet ... бар, ... ... Бұл ерекшеліктен N_bilet өрісінің сыртқы кілт, яғни «student» кестесі
мен
10-сурет-Mamandik кестесінің құрылымы
«mamandik» кестесін байланыстырушы кілт ... ... ... Тағы ... - N_bilet ... типі ... ... тура осы өрістің
«mamandik» кестесіндегі типі бүтінсандық. Бұдан шығатыны: ... ... да, типі де ... ... ... ... болуы мүмкін, бірақ
мәндері сәйкес келуі - тиістілік шарты. Бұл арада сыртқы ... ... ... ... себебіміз - «mamandik» кестесінде оның қабылдайтын мәндері
қайталануы мүмкін. Егер біз ... ... ... де ... деп берсек,
оның мәні қайталанбайды, ол мынандай жағдайда тиімсіз: егер қандай да бір
студент 2 ... ... ... алып жатса, 1-ші мамандығы ... 2-ші ... ... ... ... ... делік.
Ескерту.
Өте сирек кездесетін жағдай, бірақ мұны Сіздерге қарапайым түрде ... ... ... үшін ... ... және ... жағдайда
кестелерді байланыстыру дәрежесі «Бірге-көп» болып анықталады. Тағы бір
ескеретін жағдай, ... ... ... ... ... ... ... яғни басшы кестедегі бір деректі өзгерткенде
бағынышты ... ... де ... ... ... ... керек.
Ол студент өзіне студенттік билет алсын, бірақ ол ... екі ... ... да, ... билет бір-ақ рет берілсін, сонда «student»
кестесіндегі билет нөмірі «mamandik» кестесінде 2 рет қайталанып тұр ... Бұл ... N_bilet ... ... ... үшін ... ... түрде бір студент тек қана бір мамандықта оқитын шарт
қойылса, онда «mamandik» ... N_bilet ... ... ... деп
бере беруге болады. Онда «student» кестесі мен «mamandik» кестесі - ... тек қана бір ... ... ... ... ... мұндай жағдайда кестелерді байланыстыру дәрежесі «Бірге-
бір» болып анықталады.
10а-сурет-Байланыстырылатын «student», «mamandik» ... екі ... ... үшін ... ... ... керек.
Байланыс дәрежесінің келесі түрлері бар екенін білесіздер:
- бірге - бір;
- бірге - көп;
- көпке – бір;
- көпке – ... ... ... мен ... ... ... ... байланыстырылатын болса, онда екі кестенің біреуін басшы кесте
деп, ... ... ... деп ... ... ... ... – басшы кесте, себебі студенттердің ең негізгі деректері сонда
сақталып тұр, ал «mamandik» кестесі – ... ... Ол үшін біз ... ... қалтырып, бағынышты кестенің структурасын ашамыз (құрал-
жабдықтар тақтасындағы Restructure пернесін басу ... да, ... сол жақ ... ... ... Table ... ... Indexes командасын таңдаймыз. Осыдан кейін диалогты терезе (11-
сурет) ... ... Indexes ... ... құру ... Define батырмасын басамыз. Ашылған диалогтық
терезенің Fields тізімінде бағынышты ... ... ... ... ... кіретін өрістерді анықтау
Бұл терезедегі Indexed Fields бөлігіне біз қай ... кілт ... ... ... сол ... ... (яғни Fields тізімінен
N_bilet өрісін белгілеп, Indexed Fields ... ... үшін оң ... (->) басу ... ... ОК батырмасын шертеміз. Сонда сыртқы кілт
бойынша индекс құрылып, оны сақтау үшін атау сұрайды (13-сурет). ... ... кілт ... ... ... ... ... қате шығарады. Біз
мысал үшін индекс атауын nb деп енгіздік, сосын ОК батырмасын шерту арқылы
сақтаймыз.
Құрылған индексті осы ... ... ... ... егер оны ... Modify – ... ... Erase – индексті өшіру пернелері белсенді
болады (14-сурет). Барлық өзгерістерді ... үшін Save ... ... «student» кестесі мен «mamandik» кестесі ... ... ... ... онда екі ... біреуін басшы кесте
деп, екіншісін бағынышты кесте деп ... ... ... ...... кесте, себебі студенттердің ең негізгі деректері сонда
сақталып тұр, ал «mamandik» кестесі – ... ... Ол үшін біз ... ... ... ... ... структурасын ашамыз
13-сурет-Индексті сақтау терезесі
(құрал-жабдықтар тақтасындағы Restructure пернесін басу арқылы) да,
структура ... сол жақ ... ... ... Table ... Referential Integrity командасын таңдаймыз (14а- сурет).
14-сурет-«mamandik» кестесі үшін анықталған индекс
Сілтемелі толықтылықты сақтау
Есептің қойылымынан белгілі болғандай ... ... мен ... ... ... қатынаста, олай дейтініміз «student» кестесіндегі
бір жазбаға «mamandik» кестесінен екі не одан көп ... ... ... ... ... 2 ... де бар N_bilet ... болып табылады. Кесте
мәліметінің бүтінділігін қарастырайық. Paradox–те ... ... ... ... өзгеріске ұшырағанда оған байланысты екінші
кестедегі деректердің өзгеруін бақылайды.
14а-сурет-Сілтемелік толықтылық командасын таңдау терезесі
Сілтемелік ... ... әрі ... ... үшін ... сұлама тізімінде Refrential Integrity элементін таңдаймыз ... ... ... ... қай өрістердің деректері бір ... ... ... ... ... ... (15-сурет).
15-сурет-Сілтемелік толықтылықты құруға арналған терезе
Бұл терезенің Fields бөлімінде ... ... ... ... ал Table бөлімінде басшы кестенің атауы көрініп ... ... ... сол ... ... ... басамыз, сосын сол
жақ шеттегі тізімнен N_bilet кілтін белгілеп, оң жаққа сілтеу ... ОК ... ... ... сақтаймыз, ол үшін құрылатын
сілтемелік индекске атау енгізіп, ОК ... ... ... ... Cascade командасы қосылса – ... ... ... ... ... орындайды; Prohibit - негізгі ... жою ... ... өрісіне өзгерісті шектеуді орындайды. Cascade
16-сурет-Сілтемелік толықтылық шартын анықтау
таңдап Ok пернесін басамыз.
Өзін өзі ... ... ... қоры структурасы деген не?
2. Дельфи ортасында деректер атрибуты немесе өрістерінің қандай типтері
бар?
3. ... қоры ... ... не? Ол қалай құрылады?
4. Деректер қоры кестесі қалай құрылады?
5. Индекс деген не? Оның ... ... бар? ... ... ... Сілтемелік толықтылық деген не? Байланысқан кестелер қалай
индекстеледі?
7. Деректер қоры структурасын қалай жөндейді?
8. Кестелерді жазулармен қалай толтырады?
2. ... қоры ... ... ... ... Ttable ... ... Осы объектіні белгілеп ObjectInspector терезесінде
компонент қасиетін көрсетеміз:
1. Мәліметтер қорының ... ... ... ... ... Ttable ... ... түсетін кестені көрсету TableName
жолында жазылады (Мысалы: student.db).
3. Осы кестеге программа арқылы қатынасу керек болса Active ... деп ... ... кейн ... ... компонент көрсетілген
мәліметтер қоры кестесіндегі деректермен байланысады. Бірақ байланысты
бірден тура осылай ... ... ... ... көзі деп аталатын
TdataSource компонентін де қолдануға ... ... ... көзі ... ... кейін белгілі бір кестемен DataSet қасиеті
арқылы байланысады.
Мәліметтерді өңдеуге қолданылатын компоненттер.
1. Деректер кестесі деп аталатын DBGrid ... қоры ... ... ... ... жаңа жазу ... ... ол үшін программалық код ... ... жоқ, ... ... ... ... деп аталатын панельде
орналасқан TDGrid ... ... ... ... ... көзін көрсету керек.
2. Навигатор компоненті DBNavigator
Бұл компонент кестенің жазуларын навигациялау үшін ... жазу ... ... ... білдіреді. Бұл компонент 10 батырмадан
тұрады:
1) First – бірінші жазуға жылжу
2) Prior – ... ... ... Next – ... ... жылжу
4) Last – соңғы жазуға жылжу
5) Insert – көрсеткіш орналасқан жазу орнына жаңа жазу қою
6) Delete – ағымдағы жазуды ... егер ... ... True ... ... ... ... хабарламасы шығады.
7) Edit – ағымдағы жазуды жөндеу
8) Post – ... ... ... ... Cansel ... ... ... Refresh – мәліметтер ... ... оқып ... ... Деректер тақырыбы (надпись) компоненті DBText:
Ұзақ мәтін сақталған өріс жазуларын көрсету, өзгерту үшін қолданылады.
Tlabel ... ... ... қасиетінде деректер көзі
көрсетіледі, DataField қасиетінде қолданылатын өріс ... ... ... ... ... ... өзгерту, көрсету үшін қолданылады. Алдыңғы компонентке
ұқсас. Қосымша ... ReadOnly ... True десе ... ... қабылдамайды.
5. Бейне компоненті DBImage:
Мәліметтер қорында сақталған бейнелерді, суреттерді экранға шығаруды
орындайды. Егер AutoDisplay қасиеті True десе ... ... ... ... көрінеді. Егер ол қасиет көрсетілмеген болса LoadMemo әдісін
шақыру арқылы орындауға ... ... ... қою, көбейту, ... Picture ... ... ... тізімін қолдану компоненті DBComboBox:
Бұл компонент ашылған тізімнен (сұламалы) деректі таңдау, қолдануды
орындайды. Енгізу облысындағы ... ... ... ... ... ... ... жоқ элементті енгізуге мүмкіндік ... ... ... тек ... ... Style ... ... тізімге енетін элементтердің бейнелену стилі көрсетіледі.
7. Деректер жалаушасы (флажок) ... ... ... ... екі ... бірін қабылдайтын өрістердің
мәндерін көрсетуге болады. ... ... мән ... Өрістің
қандай жағдайда тұрғанын және оның мәнін өзгертуге көмектеседі.
8. Мәліметтерді топтап ауыстырып-қосу (группа ... ... ... ... ... ... ... көрнекі түрде шығаруды
орындайды. Әр мәнге ... қосу ... ... ... ... қосу атауларының тізімі Items қасиетіне енгізіледі, оның типі
Tstrings болады. Тізімге сәйкес ... Values ... ... ... ... ... экранға екі түрде шығаруға болады: торкөз түрінде, жеке өрістер
түрінде. Мысалмен көрсетсек: «student» кестесін торкөз түрінде шығару ... ... ... ... түрінде шығару қалыбы
Ол үшін қалыпқа DataAccess қатпарынан DataSource1, BDE қатпарынан table1,
DataControls қатпарынан DBGrid1, DBNavigator компоненттерін орналастырамыз.
Table1 компонентін ... ... ... Primer деп ... ... ... кесте атауын көрсету үшін TableName қасиетіндегі
тізімнен Student.db атауын таңдаймыз, кесте активті болсын Active қасиетін
True деп ... ... DBGrid1 ... белгілеп, деректер
көзіне қосу үшін dataSource қасиеттеріне TdataSource1 деп, DataSource1
компонентін белгілеп, DataSet ... Table1 деп ... ... ... ... бір ... шығаруды қарастырайық. Ол
үшін қалыпқа Ttable, TdataSource ... ... ... сияқты компоненттердің тиісті қасиеттерін көрсетеміз:
1) Мәліметтер қорының атауы DataBaseName - Primer ... ... ... ...... деп.
3) Кесте активті болсын Active - True деп.
4) TdataSource1 ді белгілеп, DataSet қасиетін - Table1 деп.
DataControl панелінен ... DBGrid ... ... ... компоненттерін, бір DBText, бір DBMemo (студенттерге қосымша
мағлұмат шығару үшін) ... ... да ... DBEdit ... ... ... ... деп, шығарылатын өрістерді көрсету үшін DataField жолында
тиісінше өріс атауын ... ... ... ... N_bilet, ... Naz, Data ... ... структурасына өзгерістер енгізейік. Ол үшін осы
кестені ашып, структурасына еніп, ... ... ... ... ... ... ... сақтау үшін Graphic типті Photo
өрістерін құрып, кестені сақтайық.
Сосын ... ... ... DBMemo, DBImage ... ... да,
олардың dataSource қасиетін белгілеп dataSource1 деп, шығарылатын өрістерді
көрсету үшін DataField жолында тиісінше өріс ... ... ... ... мысалымыз бойынша олар Kharacter, Photo деген атаулар
(17а-сурет).
17а-сурет-Student.db кестесіндегі жазбаларды бір-бірден шығару қалыбы
Dialogs панелінен OpenPictureDialog1 ... ... ... ... ... ... оқиғасына программалық код
жазамыз:
Begin
If OpenPictureDialog1.Execute then begin
Table1.Edit;
DBImage1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
Table1.Post;
End;
Бағдарламаны орындауға жіберіп, орындалу режимінде мінездеме ... ... ... ... ... ... DBNavigator тақтасындағы
Post пернесін басу арқылы базаға сақтаймыз.
Өзін өзі бақылау сұрақтары
1. Деректер қорымен жұмыс ... ... ... ... бар?
2. DВGrid компоненті не үшін қолданылады? Қасиеттері қандай?
3. DBNavigator компоненті не үшін қолданылады? Қасиеттері қандай?
4. DBText компоненті не үшін ... ... ... DBEdit ... не үшін қолданылады? Қасиеттері қандай?
6. DBImage компоненті не үшін қолданылады? Қасиеттері ... ... ... не үшін ... ... ... ... компоненті не үшін қолданылады? Қасиеттері қандай?
9. DBRadioGroup компоненті не үшін қолданылады? Қасиеттері қандай?
10. Деректер қоры кестесін экранда көру, жөндеудің ... ... ... ... Table компоненттері қалай аталады? Қандай қасиеттері бар?
Көп кестелік байланыс орнату.
Төмендегі ... ... ... ... ... орнату керек
болсын.
1. Студент(студенттік билет нөмірі, студенттердің аты-жөні, туған мерзімі,
т.б.)
2. ... ... ... ... ... топ шифры, т,б,)
3. Факультет(факультет нөмірі, факультет атауы, деканның аты-жөні)
4. ... ... ... ... ... меңгерушісінің аты-жөні,
факультет атауы, мамандық нөмірі)
5. Оқытушылар(оқытушылар нөмірі, оқытушылар аты-жөні, ... ... ... ... староста аты-жөні)
Кілттік атрибуттар бола алатын өрістер қалың һәріппен боялған. ... ... ... ... ... ... терезесінде
әр кесте үшін Restructure ... ... ... ... ... яғни Key ... * мәнін қою керек, Save батырмасын
басамыз. Барлық кестенің ішінде басшы кесте ретінде ... ... ... ... осы ... ... ... табылады. Олардың
байланыс атрибуттарын анықтаймыз (18-сурет).
DataBaseDesktop терезесінде әр кесте үшін Restructure ... ... ... ... Ол үшін ... терезесінде
тұрып, байланысқа түсетін атрибутты белгілеп, Table Properties = ... – Define – ... ... ... ... атрибутты белгілеп,
терезенің оң жақтағы Indexes Field бөлігіне сүйреп апарып – ОК, ... ... ... ... ... байланыс сызбасы
Дельфиде жаңа жоба құрамыз (19-сурет). Оған қажетті компоненттерді әр
кесте үшін орнатамыз: Table, DataSource, DBGrid, DBNavigator.
Әр компоненттің ... ... ... қасиеттері:
DataBaseName – Primer
TableName – student
Active – True
Datasource1 компонентінің қасиеттері::
DataSet - Table1
19-сурет-Кестелер арасындағы байланыс ... ... ...... ... қасиеттері::
DataBaseName – Primer
TableName – mamandik
MasterSource – DataSource1 (себебі бұл кесте 1-ші, яғни ... ...... ... шыққан терезеде байланысатын кестелердің
атрибуттарын белгілеп, Add - ОК
IndexName – nb (индекстік файл атауын көрсетеміз)
Active – ... ... ... - ... ... қалған кестелерді байланыстырып, жобаны орындауға жібереміз
(F9- Run). Өзгертулерді, жобаны толық сақтаймыз.
Өзін өзі ... ... ... ... ... ... ... түрлері бар?
3. Байланысты қалай орнатуға болады?
4. Басшы кесте деген не?
5. Бағынышты кесте деген не?
6. Кілттік өріс деген не?
7. Кілт бойынша ... ... ... қай ... ... ... емес өріс ... байланыс орнатылса байланыстың қай ... ... ... көмектесетін өрістерге қандай шектеулер бар?
10. Индекстік өріс пен кілттік өріс ... ... ... ... Клиенттік қосымшада жоғарғы мәзір құру
Қандай да бір қосымша құру кезінде оның ... ... ... қолдану тиімділігін жоғарылату үшін қосымшаның жоғарғы мәзірі болғаны
дұрыс. Ол бірнеше пункттерден тұрса, тіпті жақсы. Біз үш ... бар ... құру ... ... Ол үшін ... ... ... таныс компоненттерден басқа (компоненттердің қасиеттерін де
білесіз) мына компоненттерді қойыңыз:
BDE қатпарынан Table1 ... ... ... ... ... ... ... компоненті, Items Menu…пернесін басып, Form1.MainMenu1
терезесінде жоғарғы мәзір пункттері мен ішкі ... ... ... ... ... ... ... туралы) деп жазайық.
Қалыпта пайда болған жоғарғы мәзірдің ішкі мәзірі АШУ – ... ... ... ... ... Dialog ... Servers ... мәтіндік редакторға экспорттау ... ... ... ... ... бар ... ... мәтінді жазу үшін Memo1 қойып, Lines ... ... ... ... ... туралы қысқаша деректерді енгізіңіз.
Қалыпта ол қажет болғанға дейін көрінбей тұруы үшін ... кез ... ... ... 2 рет ... ашылған терезеде мына кодты тереміз:
Form1.Memo1.Visible:=False;
Енді мәзірдің ішкі пункттерін анықтаймыз. Ол үшін ... ... АШУ ... 1 рет шерту керек, ашылған терезеде мына кодты тереміз:
if OpenDialog1.Execute then ... ... үшін мына ... тереміз:
Table1.Active:=False;
DataSource1.DataSet.Close;
Шығу пункті үшін мына кодты жазамыз:
close;
Анықтама пункті үшін мына кодты тереміз:
Form1.DBGrid1.Visible:=False;
Form1.DBNavigator1.Visible:=False;
Form1.Memo1.Visible:=True;
Word-қа экспорттау пернесіне мына кодты жазамыз:
procedure TForm1.Button1Click(Sender: ... ... := ... ... EmptyParam,
EmptyParam );//2
WordDocument1.ConnectTo(form1.WordApplication1.ActiveDocument);
//------------------
WordApplication1.Options.CheckSpellingAsYouType:=False;
WordApplication1.Options.CheckGrammarAsYouType:=False;
//-------------------
WordApplication1.ActiveWindow.View.TableGridlines := true;
WordApplication1.Selection.PageSetup.LeftMargin := 40;
WordDocument1.Tables.Add( form1.WordDocument1.Range,
form1. Table1.RecordCount + 1, 5 , EmptyParam, EmptyParam );//2
WordDocument1.Tables.Item(1).Columns.Item(1).Width := ... := ... := ... := ... := ... := ... := ... аты-жөні';
WordDocument1.Tables.Item(1).Cell(1,3).Range.Text := 'Мекен жайы';
WordDocument1.Tables.Item(1).Cell(1,4).Range.Text := 'Туған жылы';
WordDocument1.Tables.Item(1).Cell(1,5).Range.Text := 'Телефоны';
//********************************
Table1.First;
i := 1;
while not(Table1.Eof) do begin
inc(i);
WordDocument1.Tables.Item(1).Cell(i,1).Range.Text :=
Table1.FieldByName('N_bilet').AsString;;
WordDocument1.Tables.Item(1).Cell(i,2).Range.Text :=
Table1.FieldByName('FIO').AsString;;
WordDocument1.Tables.Item(1).Cell(i,3).Range.Text :=
Table1.FieldByName('Adres').AsString;
WordDocument1.Tables.Item(1).Cell(i,4).Range.Text :=
Table1.FieldByName('Data').AsString;
WordDocument1.Tables.Item(1).Cell(i,5).Range.Text :=
Table1.FieldByName('Telephone').AsString;
Table1.Next;
end;
WordApplication1.Selection.WholeStory;
WordApplication1.Selection.Font.Size := ... := 'Times New ... := ... := ... ... ... мына ... жазамыз:
procedure TForm1.Button1Click(Sender: TObject);
var XLApp,Sheet,Colum:Variant;
index,j:Integer;
begin
XLApp:= CreateOleObject('Excel.Application');
XLApp.Visible:=true;
XLApp.Workbooks.Add(-4167);
XLApp.Workbooks[1].WorkSheets[1].Name:='Есеп';
Colum:=XLApp.Workbooks[1].WorkSheets['Есеп'].Columns;
Colum.Columns[1].ColumnWidth:=20;
Colum.Columns[2].ColumnWidth:=20;
Colum.Columns[3].ColumnWidth:=20;
Colum.Columns[4].ColumnWidth:=20;
Colum.Columns[5].ColumnWidth:=20;
Colum:=XLApp.Workbooks[1].WorkSheets['Есеп'].Rows;
Colum.Rows[2].Font.Bold:=true;
Colum.Rows[1].Font.Bold:=true;
Colum.Rows[1].Font.Color:=clBlue;
Colum.Rows[1].Font.Size:=14;
Sheet:=XLApp.Workbooks[1].WorkSheets['Есеп'];
Sheet.Cells[1,2]:='Студенттер туралы мәліметтер';
Sheet.Cells[2,1]:='Студенттік билет нөмірі';
Sheet.Cells[2,2]:='Аты-жөні';
Sheet.Cells[2,3]:='Мекен жайы';
Sheet.Cells[2,4]:='Туған жылы';
Sheet.Cells[2,5]:='Телефоны';
index:=3;
Table1.First;
for i:=1 to ... ... j:=1 to ... ... ... орындауға берсеңіз, жоғарғы мәзірдің ... ... ... ... ... ... бағдарламадан шығуға, бағдарлама
туралы дерек алуға ... ... ... ... ... ... ... процессорға экспорттауға болатынын, әр ... ... ... ... Бұл ... ... ... кезінде аса қажетті болып саналады.
Өзін өзі бақылау сұрақтары
1. Клиенттік қосымша деген не?
2. Клиенттік қосымша қалай құрылады?
3. Жоғарғы мәзір ... не? Ол ... ... ... ... ... ... бағдарламалайды?
5. Фотосуреттер қалай базада сақталады?
6. Мәтіндік редакторға кестедегі деректерді ... ... ... ... не үшін ... Оның ... қасиеттері бар?
8. Кестелік процессорға кестедегі деректерді қалай экспорттайды?
9. ... ... нені ... ... ... байланыс қалай орнатылады?
3.4 Мемо-өрістер, бағандарды жөндеу және деректерді іздеуді ұйымдастыру
Деректер қорымен ... ... ... ... ... ... бар. Онда ұзақ ... тұратын деректерді сақтау ыңғайлы.
Сонымен қатар құрылған кестенің баған ... ... ... ... ... немесе орысшаға аударып жазу керек. Ал DataBaseDesktop терезесінде
деректер қоры кестесінің өріс атаулары латынша болғаны дұрыс. Себебі ... ... ... ... ... ... өріс атаулары
орыс немесе қазақ әріптерімен жазылса, оны Дельфи ортасы танымайды, қате
деп қабылдайды. Сондықтан кез ... ... құру ... ... негізгі атаулар (кесте атауы, атрибут атауы, кілт атауы, индекс
атауы т.б.) латын ... ... ... ... ... деректер қоры
кестесінен деректерді іздеу маңызды амалдардың бірі. Себебі ... да ... ұйым ... ... ... ... ... деректі
іздеу ең жиі кездесетін операция. Іздеудің бірнеше түрі бар: кілт ... ... ... іздеу, белгілі бір өріс бойынша қарапайым іздеу, т.б.
Соның ішінде ... ... ... Оны ... ... ... Ол ізделінді бір ғана жазуды тауып береді. Егер бірнеше жазуды бірақ
іздеу ... ... онда ... ... ... ... ... мәліметтер бойынша жұмыс жасау үшін 21-суреттегідей қалып
құрыңыз. Қалыпта көрініп тұрғандай кестелерге қажетті өрістерді ... ... ... ... студенттердің фотоларын тағайындап
алыңыздар. Қалыпқа қажетті компоненттерді тағы да өздеріңіз ... ... ... Біз ... ... ... және
қасиеттерін білеміз деп есептеп, бұл кезеңді қарастырмаймыз.
Деректерді іздеуді ұйымдастыру үшін ... ... ... ... қасиетін Primer деп, TableName қасиетін
student деп ... ... ... ... ... компонентін белгілеп, DataSet қасиетін Table1 деп көрсетіңіз.
DBMemo1 компонентін белгілеп, DataSource ... ... ... ... ... ... ... деп көрсетіңіз.
Деректерді кесте түрінде ... ... DBGrid1 ... Сосын DBGrid1 компонентін белгілеп, DataSource ... деп ... ... ... қойып, DataSource
қасиетін DataSource1 деп көрсетіңіз. Егер деректерді экранда бір ... ... онда ... қажетінше DBEdit, Label, DBRadioGroup,
DBChekBox, т.б. компоненттерді орын ... ... ... ... ... ... ... қажетінше DBEdit1 компонентін белгілеп,
DataSource қасиетін DataSource1 деп, DataField қасиетін тізімнен FIO деп
көрсетіңіз. ... ... ... де тура ... ... ... ... DataSource қасиетін
DataSource1 деп, DataField қасиетін тізімнен Pol деп ... ... ... ... деп ... ... ... басу
арқылы ашып, терезеде «Ер, Әйел» деген мәндерді енгізіп, ... ... ... ... ... үшін ... ... жіберіп, навигаторлық
тақтаның көмегімен бірінші жазуды белгілеп, «мінездеме» жазу үшін ... ... ... ... ... ... ... навигаторлық тақтаның «сақтау» пернесін басу керек, дәл солай басқа
да ... үшін ... ... ... белгілі бір жазуларды таңдау қажет болса ... ... ... ... ... ... операциясы мына әдіспен орындалады:
21-сурет-Мемо-өрісті толтыру, бағандарды жөндеу, іздеу жобасы
Function.Locate(const KeyFields: string; const ... ... ... : ... ... ... ... өрістер атаулары алынады.
«Іздеу» деп аталатын Button1 пернесін 2 рет ... мына ... ... ... ... Edit1.Text, [LoPartialKey,
LoCaseInsensitive]);
end;
end.
[LoPartialKey, LoCaseInsensitive] параметрлері – аты-жөні бойынша іздеу
кезінде регистрге көңіл ... ... ... ... енгізбеуді
қарастырады.
Егер іздеуді аты-жөні өрісімен емес басқа өріс арқылы жүргізу керек
болса, оның орнына ... ... ... ... бір ... қарастырайық. Қандайда бір фирманың клиенттері ... ... ... ... ... ... ... керек
болсын.
Form1 қалыбында тақырыптары «адам есімі бойынша іздеу», «телефон
номері бойынша ... ... ... ... болатын үш TradioButton
компоненттерін, «Іздеу шарты» деп ... Tlabel ... ... Tedit ... «Іздеу» деп аталатын
Tbutton компонентін ... ... ... ... ретпен жазамыз:
1 кілттік өріс
2 іздеуге жататын дерек қайдан алынады
3 іздеу параметрлері:
LoCaseInsensitive – бас ... ... ...... кілт
«Іздеу» компонентіне программалық код жазамыз:
Var
KeyField:string;
Begin
If RadioButton1.Checked=treu then Begin
KeyField:= ‘ClientName’;
End;
If RadioButton2.Checked=True then begin
KeyField:=’Phone’;
End;
If RadioButton3.Checked=True then begin
KeyField:=’Adress’;
End;
Table1.Locate(KeyField.Edit1.Text, [LoCaseInsensitive.LoPartialKey]);
End;
Қосымшаны ... ... ... іздеудің нәтижесін көріңіз.
Студенттер мәліметтер қорында іздеу операциясын әртүрлі әдіспен орындап
көрсетіңіз.
Егер деректер базасын қарау ... DBGrid ... ... ... ... ... базадағы сияқты ағылшын әріптерімен жазылып
тұрады, ол құжатты принтерден шығарғанда көрнекілік ... да ... ... үшін ... ... ... белгілеп, тышқанның оң жақ пернесін басу
ColumnsEditor командасын орындау керек, сонда ... ... ... Add New – өріс ... ... ... басу ... болған 0 – Tcolumn сөзін белгілеу керек. Қасиеттер терезесіне көшіп,
23-сурет-Бағандар қасиетін тағайындау терезесі
келесі мәндерді тағайындау:
FieldName – кестедегі 1-ші өріс ... Title – Caption – 1-ші ... ... ... жаңа ... Font - ... Aligment – ... 1-ші
өрістің тақырыбы өзгерген соң осы ... ... ... ... ... ... керек.
Фильтр – сүзу.
Деректер кестесі жазуларынан белгілі бір шартты ... ... алу ... ... ... деп ... Қандай да бір
жазуларды кестеден уақытша жасыру керек болса, фильтр қолдануға болады ... ... А ... ... студенттердің тізімін сүзіп алу
керек болса, ол үшін Table1 компонентін белгілеп, оның Filter ... деп ... ... ... – А ... кейін кез келген
символдың болуын ... ... ... белсенділеу үшін Filtered
қасиетін True деп ... ... алып ... ... болса, онда Filtered қасиетін False деп
көрсетеміз.
23а-сурет-Фильтр ... көру ... ... ... ... ... керек болса, бірнеше әдісі
бар, соның бірі қалыпқа қосымша бір Button1 компонентін қойып, ... ... оны бір рет ... ... мына ... ... OnClick ... код жазамыз.
Begin
If RadioButton1.Checked=true then begin
Table1.Filter:=’FIO='''+Edit1.Text+'*'+'''';
End;
If RadioButton2.Checked=true then begin
Table1.Filter:=’Adres='''+Edit1.Text+'*'+'''';
End;
If RadioButton3.Checked=true then ... ... өзі ... ... Мемо ... деген не? Олар қалай толтырылады және базаға сақталады?
2. Кесте бағандарын қалай қазақшалауға ... ... ... не? Оның неше түрі бар? Олар ... іске ... Деректерді сүзу деген не?
5. Сүзуді орындаудың неше амалы бар?
6. Query1 компоненті не үшін ... Оның ... ... ... ... ... құру
Сұраныс құру компоненті query деп аталады. Бұл компоненттің екі түрі
бар: Tquery – BDE ... ... ... ... ... ... ADOQuery – ADO қатпарында орналасқан, деректерге
рұқсатты ADO технологиясымен ... Query ... ... ... ... ... құруға көмектеседі. Сұраныс құруда
Structured Query Language (SQL) тілінің маңызы зор. SQL ... ... ... Tquery ... SQL ... жазып көрсетуге болады немесе бағдарламада орындау үшін ... ... ... SQL ... ... ... ... табылады. Ол
бірнеше кестеден берілген шартты қанағаттандыратын жазуларды алып шығарады.
Оператордың жазылуы келесідей:
SELECT өрістер ... FROM ... ... SELECT FIO, Adres FROM ... тіліндегідей Select, From сөздері SQL тілінің резервтегі
кілттік қызметші ... ... ... SQL ... ... жазу ... құру үшін Query1 компонентін қойып, Query1 ... ... ... Primer деп, SQL ... ... жазамыз. Сұранысты орындау үшін Query1 ... ... үшін Active ... True деп көрсету керек, сонда мысалдың
нәтижесінде екі өрістен тұратын ... ... ... деп ... ... ... ... барлық өрістерді енгізу керек болса, * символын
көрсетеді. Мысалы:
Select * From ... ... ... ... үшін Where ... сөзінен кейін
Паскаль тілінде шартты өрнекті көрсету ... ... мына ... =, >=, =12000 and
stipendia 0 then
begin
Form1.USER := ADOQuery1.FieldByName('kod').AsInteger;
Form1.Show;
Visible := False;
end
else
begin
Application.MessageBox('Логин ... ... кате ... ... := ... ... енгізуден бас тарту үшін тағы бір BitButton пернесін қойып,
Kind қасиетіне bkCancel ... ... ... кейін «Кадрлар бөлімі» деп аталатын форма ашылады.
Бұл формада көріп отырғанымыздай ... ... үш ... тағайындалған (46-
сурет).
Соның біріншісі – «Бөлім» деп аталады, ... ... ... ... ... ... ... мүмкіндік береді. ADOQuery1
компонентін белгілеп, Filter қасиетіне bolim='Администрация' деп, Filtered
қасиетіне false мәнін ... де, ... ... ... шерту оқиғасына мына кодты жазамыз:
Form1.ADOQuery1.Filtered:=true;
t:=ADOQuery1.RecordCount;
Form1.Caption:='Кадрлар болімі - ... ... ... ... неше адам ... ... есептеу
келтірілген.
Қызметкердің фотосын шығару үшін OpenDialog1, ... ... ... оны екі рет ... оқиғасына мына кодты жазамыз:
procedure TForm1.DBImage1DblClick(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
ADOQuery1.Edit;
DBImage1.Picture.LoadFromFile(OpenDialog1.FileName);
end;end;
46-сурет-«Кадрлар бөлімі» ... ... ... ... ... негізгі және маңызды болып есептелетін алты
объектіні атап көрсетуге болады. Олар: «Фильтрлеу», «Іздеу», «Жұмысқа
қабылдау», ... ... және ... парақ» объектілері.
Осылардың әрбіреуіне жеке тоқталайық. «Фильтрлеу» объектісі қызметкердің
«Аты-жөні», «Туған күні», ... ... ... ... ... «Жынысы» критерийлері бойынша сұрыптап береді. «Іздеу»
объектісінен бір ... ... ... ... ғана ... ... беріледі. Ол әрекетті ... ... үшін ... шерту оқиғасына келесідей бағдарлама коды пайдаланылды:
procedure TForm1.Button1Click(Sender: TObject);
var s:string;
begin
if ComboBox1.Text'Таңдау жасау' then
begin
if ComboBox1.Text='Аты-жоні' then s:='atiJoni';
if ComboBox1.Text='Туганкуні' then ... ... then ... ... then ... ... then s:='telui';
if ComboBox1.Text='Уялытелефон' then s:='telsot';
if ComboBox1.Text='Кызметі' then s:='kizmeti';
ADOQuery1.Locate(s,Ed_poisk.Text,[loCaseInsensitive,loPartialKey]);
end else ShowMessage('өріс таңдаңыз');
end;
«Фильтрлеу» пернесін шерту оқиғасына мына кодты жазамыз:
procedure ... ... ... ... ... ... then ... RG_Filtr.Items[RG_Filtr.ItemIndex]='Мекен ... ... ... ... then
pole:='tugankuni';
if RG_Filtr.Items[RG_Filtr.ItemIndex]='Кызметі' then ... ... then ... ... then ... RG_Filtr.Items[RG_Filtr.ItemIndex]='Жануялык жагдайы' then
pole:='januialikjag';
if RG_Filtr.Items[RG_Filtr.ItemIndex]='Жынысы' then pole:='jinisi';
ADOQuery1.Filtered:=false;
ADOQuery1.Filter:=pole+'='+ap+Ed_filtr.Text+ap;
ADOQuery1.Filtered:=true;
end
else ShowMessage('Шарт танданыз');
end;
Фильтрді алып тастау үшін мына кодты жазамыз:
procedure TForm1.Button3Click(Sender: TObject);
begin
ADOQuery1.Filtered:=false;
end;
47-сурет-Жеке парақ үлгісі
Қызметкер жұмысқа ... ... оның жеке ... да ... ... ... - жеке ... жасау бұл бағдарламаның жұмысына енеді
(47-сурет).
Бас мәзірдің екінші пункті – «Іс-қимыл» бөлігі, ... ... ... және ... ... статистика әрекеттері жүзеге
асырылады. «Жұмысқа қабылдау» бөлігінің формасы ... деп ... оның ... ... ... ... ... қабылданған
қызметкерлер туралы деректерді базаға сақтауды ұйымдастыру ... ... ... «Іс-қимыл» пунктінің «Жұмысқа қабылдау» командасын шерту оқиғасына
мына кодты жазамыз:
frm_Prin_Rab.Show;
form1.Enabled:=false;
Form11.enabled:=false;
«Жұмысқа қабылдау» қалыбындағы бос орындар сәйкесінше ... ... ... ... ... мына кодты жазамыз:
Form1.ADOQuery1.First;
Form1.ADOQuery1.Append;
Form1.ADOQuery1['atiJoni']:=Ed_fio.Text;
Form1.ADOQuery1['mekenjai']:=Ed_adres.Text;
Form1.ADOQuery1['telui']:=Ed_tel.Text;
Form1.ADOQuery1['telsot']:=Ed_sot.Text;
Form1.ADOQuery1['tugankuni']:=Ed_god_rozh.Text;
Form1.ADOQuery1['kizmeti']:=Ed_dolzh.Text;
Form1.ADOQuery1['bilimi']:=CB_obraz.Text;
Form1.ADOQuery1['azamattik']:=Ed_grazh.Text;
Form1.ADOQuery1['ulti']:=Ed_nacia.Text;
Form1.ADOQuery1['januialikjag']:=CB_Sem_pol.Text;
Form1.ADOQuery1['Staj']:=Ed_stazh.Text;
Form1.ADOQuery1['jinisi']:=CB_pol.Text;
if CB_child.Checked then Form1.ADOQuery1['balalari']:=true ... ... ... ... ... ... ... автоматты түрде
сол адамның мәліметтерін пайдалана отырып, келісімшартты даярлап ... ... ... ... ... ... ... Ол
үшін осы формадағы «Келісімшарт (баспаға)» пернесін шерту оқиғасына мына
кодты жазамыз:
Form4.QRL_fio.Caption:=Ed_fio.Text;
form4.Label1.Caption:=frm_Prin_Rab.Ed_dolzh.Text;
Form4.QRM_rab.Lines.Clear;
Form4.QRM_rab.Lines.Add('"Жумысшы"');
Form4.QRM_rab.Lines.Add(Ed_fio.Text);
48-сурет- «Жұмысқа қабылдау» бөлігінің формасы
Form4.QRM_rab.Lines.Add('Мекен-жай: '+Ed_adres.Text);
Form4.QRM_rab.Lines.Add('Телефон: ... ... ... ... ... шығару» командасын басқанда белгіленіп
тұрған қызметкер жұмыстан шығарылды деп есептеліп, осы ... ... ... ... ... сақталады (50-сурет). Жұмыстан шыққан қызметкерге
жарлық шығару үшін «Өкімдер» - «Жұмыстан босату» командасын орындау керек.
Бұл формадағы ... ... ... оқиғасына мына кодты жазамыз:
form6.QRLabel22.Caption:=form14.ADOQuery1['atijoni'];
form6.QRLabel25.Caption:=form14.ADOQuery1['kizmeti'];
form6.QRLabel23.caption:=form14.Edit1.Text;
form6.QRLabel29.caption:=form14.ADOQuery1['atijoni'];
form6.QRLabel30.caption:=form14.Edit1.Text;
form6.QuickRep1.Preview;
end;
50-сурет-Жұмыстан босату өкімі формасы
Бұл кодтың орындалуы үшін 6-форма құрып, оған ... ... ... ... ... ... бұйрығының үлгісі
Жұмыстан шығару туралы өкім шығарылғаннан кейін қызметкер туралы деректі
кестеден өшіруге болады, ол үшін «Жұмыстан ... ... ... ... ... ... мына ... жазамыз:
procedure TForm14.Button2Click(Sender: TObject);
begin
with dm.GetTempQuery do
try
Close;
SQL.Text := 'DELETE FROM sapar WHERE fionom = ' +
ADOQuery1.FieldByName('kod').AsString;
ExecSQL;
finally
Free;
end;
ADOQuery1.Delete;
Form10.ADOQuery1.Active := False;
Form10.ADOQuery1.Active := True;
end;
«Іс-қимыл» ... ... ... ... мекеменің
қызметкерлерінің орташа жас мөлшері, білімдері және қанша ер адам мен ... ... ... ... ... ... ... амалдарды орындау үшін «Есептеу» батырмасына мына кодты жазамыз:
52-сурет-«Статистика» пішіні
procedure TForm13.Button1Click(Sender: TObject);
var bilimi,otd:string; t,i,s,d,dd,s1:integer;p:string;ddd:real;
begin
s1:=0;
Form13.ADOquery1.First;
i := 1;
while not(form13.ADOquery1.Eof) do ... ... ... ... end;
end;
Мұндағы mes_f функциясы қызметкерлердің туған датасынан тек қана ... ... ... Оны ... бас жағына жазып қою керек:
function mes_f(d:String):string;
var i:word;f:boolean;
begin
mes_f:='';
i:=0;
f:=false;
repeat
if d[i]='.' then begin
mes_f:=d[i+1]+d[i+2];
f:=true;
end;
i:=i+1;
until f;
end;
Бас мәзірдің үшінші бөлігі «Анықтама» деп ... ... біз ... бөлімі және осы бағдарлама жайлы ақпарат алатын ... ... ... ... ... ... ... мен құқықтары,
жауаптылықтары мен мақсаттары, құрылымы мен ... ... ... ... ... көрсетілген (53-сурет).
53-сурет-«Кадрлар бөлімі» жайлы анықтама
Бұл форматтағы файлдарды оқыту үшін «Анықтама» пунктіндегі «Кадрлар
бөлімі жайлы» командасына мына ... ... ... TObject);
begin
ShellExecuteA(Application.Handle,nil,'index.htm',nil,nil,SW_SHOWNORMAL);
end;
«Анықтама» пунктіндегі «Бағдарлама жайлы» командасына мына кодты жазамыз:
procedure TForm1.N4Click(Sender: TObject);
begin
AboutBox.ShowModal;
end;
Бағдарлама жайлы мәтінді AboutBox формасына ... ... ол ... ... ... File – New – Other – Forms – ... ... ... Сосын пайда болған терезеде фото қоюға, мәтін
жазуға ... ... «ҚР ... ... ... мына ... TForm1.N9Click(Sender: TObject);
begin
ShellExecuteA(Application.Handle,nil,'index1.htm',nil,nil,SW_SHOWNORMAL);
end;
Бұл код орындалу үшін ҚР Еңбек кодексін htm форматпен сақтап қою керек.
Ал, жобаның екінші формасында күнтізбе орнатылған (54-сурет). Бұл ... ... ... ... кезде қолмен енгізіп жатуымызды қажет
етпейді. Үнсіздік келісімі бойынша күнтізбеде ағымдағы мерзім ... ... ... күнтізбеден таңдап аламыз да «ок» пернесін басқан
кезде автоматты түрде кестеге толтырылатын болады.
54-сурет-Күнтізбе
Бас мәзірдің 4-ші ... ... деп ... онда ... ... ... , «Еңбек демалысынан босату», «Тағайындау туралы»,
«Тәртіптік жаза беру ... ... ... ... ... ... ... «Жұмысқа қабылдау» командасына мына кодты жазамыз:
55-сурет-Жұмысқа қабылдау өкімінің үлгісі
procedure TForm1.N12Click(Sender: TObject);
begin
form6.QRLabel21.caption:=form1.DBEd_fio.Text;
form6.QRLabel18.Caption:=form1.DBEd_dolzh.Text;
form6.QRLabel7.caption:=form1.DBEd_dat.Text;
form6.QRLabel4.Caption:=form1.DBEd_fio.Text;
form6.QRLabel6.Caption:=form1.DBEd_dat.Text;
form6.QuickRep3.Preview;
end;
Бұл команда орындалуы үшін 6-форма құрып, оған Жұмысқа қабылдау өкімінің
үлгісін ... ... ... пунктінің «Жұмыстан босату» командасына мына кодты жазамыз:
procedure TForm1.N13Click(Sender: TObject);
begin
form14.Show;
end;
Сонда 14-формадағы қызметтер ... ... ... демалысынан шақыру» командасына мына кодты
жазамыз:
procedure TForm1.N16Click(Sender: TObject);
begin
form6.QRLabel68.caption:=form1.DBEd_dolzh.Text;
form6.QRLabel69.caption:=form1.DBEd_fio.Text;
form6.QRLabel70.caption:=form1.Edit1.Text;
form6.QuickRep4.Preview;
end;
Бұл код орындалуы үшін 6-формада «Еңбек демалысынан ... ... ... керек 56-сурет.
56-сурет-«Еңбек демалысынан шақыру» өкімінің ұлгісі
Егер қызметкерді ... ... ... ... ... ... «Тағайындау» командасына мына кодты жазамыз:
57-сурет-Қызметке тағайындау өкімінің үлгісі
procedure TForm1.N17Click(Sender: TObject);
begin
form6.QRLabel77.caption:=form1.DBEd_fio.Text;
form6.QRLabel80.caption:=form1.DBEd_dat.Text;
form6.QRLabel82.caption:=form1.DBEd_dolzh.Text;
form6.QRLabel85.caption:=form1.DBEd_dat.Text;
form6.QuickRep5.Preview;
end;
Бұл код орындалуы үшін 6-формада «Тағайындау» ... ... ... (57-сурет). Егер қызметкерлер жұмыс тәртібін бұзған жағдайда оған
тиісті шара қолдану үшін ... ... ... жаза ... мына ... ... TForm1.N18Click(Sender: TObject);
begin
form6.QRLabel97.caption:=form1.DBEd_dolzh.Text;
form6.QRLabel98.caption:=form1.DBEd_fio.Text;
form6.QRLabel104.caption:=form1.Edit1.Text;
form6.QRLabel105.Caption:=form1.DBEd_fio.Text;
form6.QuickRep6.Preview;
end;
Бұл код орындалуы үшін 6-формада «Тәртіптік жаза беру» өкімінің үлгісін
жасап қою керек (58-сурет).
Бас мәзірдің ... ... ... деп ... онда ... «Іс ... ... «Еңбек демалысына жіберу», «Вакансиялар»
деп аталатын командалар бар.
58-сурет-Тәртіптік жаза беру өкімінің үлгісі
Егер қызметкерге ... да бір ... үшін ... берілсе,
«Бұйрықтар» пунктінің «Ескерту жариялау» командасын қолданады, ол үшін мына
код ... ... ... код ... үшін 7-формада «Ескерту жариялау» бұйрығының үлгісін
жасап қою керек (59-сурет).
59-сурет-Ескерту жариялау бұйрығының үлгісі
«Бұйрықтар» пунктінің «Іс ... ... ... мына код ... ... ... жіберу формасы
Жобаның 10-формасында қызметкерлерді іссапарға ... ... ... кестедегі дайын деректерді пайдаланып, яғни іссапарға жіберілетін
қызметкердің аты-жөні, ... ... бару ... және қай аймаққа
баратыны анықталып алынады, іссапары қай уақыт аралығына
61-сурет-Іссапарға жіберу туралы бұйрық үлгісі
созылатынын ... ... ... ... ... ... кейін осы деректерді QReport көмегімен жасалған есепке ... ... ... ... жіберу туралы бұйрықтың үлгісі
толтырылады. Ал, оның ... ... яғни ... үлгісі 61-суретте
көрсетілген.
«Бұйрықтар» пунктінің «Еңбек демалысына жіберу» командасына мына кодты
жазамыз:
procedure TForm1.N15Click(Sender: TObject);
begin
form9.Show;
end;
Жобаның 9-формасында ... ... ... ... пішіні
жасалды (62-сурет) және соның негізінде ... ... ... болады. Мұнда да кестедегі дайын деректерден қызметкердің ... ... ... және қосымша кестеге сол қызметкердің жұмысқа
қабылданған мерзімі мен келісімшарт мерзімі ... ... ... ... бізге қай аралықтан бастап демалыс беруіміз керек болатынын анықтау
үшін ... Ол ... ... ... ал ... ... демалыс мерзімінің аралығын көрсетеміз және де ол әр қызметкерде
әр түрлі ұзақтықта болуы ... ... ... 24 күн ... берілсе, бастықтар 30 күн дем алады т.с.с.
62-сурет-Қызметкерлерді еңбек демалысына жіберу формасы
Бұл форманың «Растау» пернесін шерту оқиғасына мына ... ... ... TObject);
begin
form6.QRLabel47.Caption:=form9.DBEdit2.Text;
form6.QRLabel48.Caption:=form9.DBEdit1.Text;
form6.QRLabel59.Caption:=form9.DBEdit1.Text;
form6.QRLabel49.Caption:=form9.Edit3.Text;
form6.QRLabel52.Caption:=form9.Edit4.Text;
form6.QRLabel53.Caption:=form9.Edit1.Text;
form6.QRLabel55.Caption:=form9.Edit2.Text;
form6.QRLabel60.Caption:=form9.Edit1.Text;
form6.QuickRep2.Preview;
form1.show;
form1.enabled:=true;
end;
Бұл код орындалу үшін 6-формада «Еңбек демалысы туралы» бұйрығының
үлгісі жасалуы ... ... ... ... ... ... оның орны ... деп есептеліп,
оған конкурс негізінде басқа адам ... ... үшін ... ... ... мына кодты жазамыз:
procedure TForm1.N19Click(Sender: TObject);
begin
Form12.Show; end;
64-сурет-Еңбек демалысы туралы бұйрықтың үлгісі
Бұл код ... үшін ... ... ... конкурс жариялау
формасын жасап қою керек (65-сурет).
65-сурет-Вакантты орындарды анықтау формасы.
Мұндағы «Конкурс» пернесін шерту оқиғасына мына код жазылады:
procedure TForm12.Button1Click(Sender: TObject);
begin
Form7.lbKizmet.DataSet := ... := ... код ... үшін ... ... ... ... жасалып тұруы
керек (66-сурет). Вакантты орындарды анықтау формасына қойылған ADOQuery1
компонентінің ... ... үшін Name ... ... ... ... жазамыз. 7-формадағы QRDBText1компонентінің атауын lbKizmet деп
өзгертіп жазамыз.
66-сурет-Конкурс дариялау үлгісі
Бас мәзірдің ... ... ... деп ... онда ... бар. Оның негізгі қызметі ақпараттық жүйені қолданушыларды
орындаған ... ... ... өзі ... ... Ақпараттық жүйе деген не?
2. Ақпараттық жүйенің түрлері? Қолданысы?
3. Ақпараттық жүйенің ... ... ... құру ... Автоматтандырылған ақпараттық жүйелерді құру қай бағдарламаға
негізделген?
4.2 Мәліметтер қоры өзгерісін журналға ... ... ... ... жүйесіне қойылатын басты талаптардың
бірі мәліметтер қорын сенімді сақтау ... ... Бұл кез ... және бағдарламалық ақаулардан кейін деректерді қайта ... ... ... ... ... ... қағидалары:
- тіркелген транзакциялардың нәтижесі мәліметтер қорының қалпына
келтірілген күйінде сақталуы керек;
- тіркелмеген ... ... ... ... қалпына
келтірілген күйінде сақталмауы керек;
Мәліметтер қорын қайта қалпына келтіру ... ... ... ... ... жеке дара шегінуі. ROLLBACK операторымен аяқталатын
транзакцияның ... құр бос ... ғана ... ... ... ... ... басталуы да мүмкін. Мысалы қолданбалы
бағдарламада ерекше ... ... ... ... (санды нөлге бөлу).
Транзакцияның жеке дара шегінуі ... ... ... ... үшін, мәліметтер қоры өзгерістерінің осы транзакция кезінде
орындалған операторлардың салдарын жою ... ... ... деректерін жоғалтқан кезде қайта қалпына келтіру (жеңіл
ақау). Мұндай жағдай электрлік қоректі авариялық өшірген кезде, жүйелі
блоктың ... ... ... ... ... ... ақауы) және
т.б. Бұл жағдайлар ақау кезінде жедел жадтың буферінде ... ... ... жоғалуымен сипатталады.
- Мәліметтер қорын тасушы негізгі сыртқы жадтың бұзылуы (қатаң ақау).
Бұл жағдай сирек ... ... де ... ... ... ... жүйесі қайта қалпына келтіруге қандай жағдай болмасын
дайын болуы керек. Қайта қалпына ... ... ... ... мен архивтік көшірме жатыр.
Қайта қалпына келтірудің үш түрінің негізінде де мәліметтерді артық
сақтау ... Бұл ... ... журналда сақталатын болады.
Журналдық ақпаратты жүргізудің екі нұсқасы бар. Бірінші нұсқасында әр
транзакция үшін мәліметтер қоры ... ... ... ... Бұл ... ... жеке транзакция шегінуінде қолданылады
және жедел жадпен (нақтырақ айтсақ виртуалды жадпен) сүйемелденеді. Одан
басқа ... ... ... отыратын жалпы журнал болады, ол қатаң ... ... ... ... мәліметтерді қайта қалпына келтіруде
қолданылады. Бірінші нұсқаның өз кемшілігі бар, яғни ... және ... ... ... ... ... Сондықтан да екінші нұсқа
жиі қолданылады.
Журнал жүргізу – мәліметтер қорымен ... ... ... ... ... ... қорын тіркеу журналы
бүкіл мәліметтер қорына ... ... бір ... ғана ... Бұл журналға кестеге енгізілген өзгерістердің уақыты мен ... ... ... отырған қолданушының жүйелік аты тіркеледі.
Сонымен ... ... ... ... және ... кестедегі
өзгерген жазбалардың күйі көрсетіледі. Тіркеу журналын толық түрінде немесе
қолданушының сүзгілеп алған белгілі бір мерзімі не ... ... ... көруге болады. Әдетте журналдағы ақпаратты ... ... ... ... үшін қолданады.
Журналға келесі ақпараттар тіркеледі:
- реттік нөмірі, типі және өзгерген мерзімі;
- ... ... ... ... ... (сақталған файл нөмірі мен ондағы деректер
блогінің нөмірі, блок ішіндегі жолдың нөмірі);
- объектінің ... ... мен ... ... құрастырылған ақпарат мәліметтер қорының өзгерістер журналы
болып табылады. ... ... ... мен аяқталғаны жайлы
белгілерге және ... ... ... ... ие. ... қойылған мәліметтер қорын басқару жүйесіндегі жазбалар блоктары
сыртқы жадыда соңғы өзгерген реттік нөмір белгісімен жабдықталады. Жүйенің
ақауы ... бұл ... ... қай нұсқасы сыртқы жадыға жетпей қалғанын
көрсететін болады. Жазбалары тоқтатылып қойылған мәліметтер ... ... ... ... ... ... Бұл үрдіс кезінде тіркелмеген
деректер ... ... ... ал ... ... нүктесінің
қабылданғаны туралы белгі тұратын болады. ... ... ... нүктесіне
дейін жазылған журналдың мазмұнын өшіре беруге болады. Өзгерістер журналы
тікелей сыртқы ... ... ... жадыға топтастырылуы да мүмкін. МҚБЖ-
ның транзакциясына қолдау көрсетілген жағдайда, сигналдан ... ... ... ... ... Егер де логикалық бас тарту немесе бір
транзакцияның ... ... ... ... кері ... жүреді. Транзакциямен
тоқтатылған барлық жазбалар журналдан ... Ал ... ... ... тіркелетін болады. Бұл үрдіс шегіну (rollback) деп
аталады. Ал физикалық бас ... ... ... да мәліметтер қоры да
бұзылмаған жағдайда айдау (rollforward) үрдісі жүргізіледі. ... ... ... ... шығарылған барлық ақпарат сыртқы жадының
блоктарына енгізіледі.
«Сервис» пунктінің «Журнализация» командасына мына ... ... ... ... ... do
begin
ShowModal;
Free;
end;
end;
Бұл код орындалу үшін жаңа форма құрып оның атауын dfShowLog деп
атаймыз, оған ... ... ... процедуралар тізіміне
procedure DataSource1StateChange(Sender: TObject); атауын жазамыз да,
оның кодын {$R *.dfm} директивасынан кейін мына түрде жазамыз:
procedure ... ... ... = dsEdit then
IsAppend := False
else if DataSource1.State = dsInsert then
IsAppend := True
else
IsAppend := False;
end;
Мұндағы IsAppend ... ... және ... ... ... оны ... private ... IsAppend : Boolean; деп сипаттау
керек.
Журналға қолданушылардың қандай операция орындағанын анықтайтын
67-сурет-Журнализацияны жүргізу формасы
бағдарлама кодын жазу үшін ... ... ... ... ... ... Events ... AfterPost оқиғасына мына
кодты жазамыз:
procedure TForm1.ADOQuery1AfterPost(DataSet: TDataSet);
begin
qrLog.Edit;
qrLog.Append;
qrLog.FieldByName('user').AsInteger := USER;
qrLog.FieldByName('evtdate').AsDateTime := Now;
qrLog.FieldByName('rowid').AsInteger ... IsAppend ... := ... := 'Жана жазба енгізілді';
end
else
begin
qrLog.FieldByName('action').AsInteger := 2;
qrLog.FieldByName('message').AsString := 'Жазба озгертілді';
end;
qrLog.Post;
IsAppend := False;
end;
Мұндағы qrLog 1-формада қойылған ADOQuery3 компонентінің атауы.
1-форманың ... ... ... мына ... ... TForm1.FormShow(Sender: TObject);
begin
qrLog.Edit;
qrLog.Append;
qrLog.FieldByName('user').AsInteger := USER;
qrLog.FieldByName('evtdate').AsDateTime := Now;
qrLog.FieldByName('rowid').AsInteger := 0;
qrLog.FieldByName('action').AsInteger := 4;
qrLog.FieldByName('message').AsString := ... ... ... ... мына ... жазамыз:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
qrLog.Edit;
qrLog.Append;
qrLog.FieldByName('user').AsInteger := USER;
qrLog.FieldByName('evtdate').AsDateTime := Now;
qrLog.FieldByName('rowid').AsInteger := 0;
qrLog.FieldByName('action').AsInteger := 5;
qrLog.FieldByName('message').AsString := ... ... ... арқылы қолданушылардың жүйеге кіргені, шыққаны туралы ақпарат
деректер қорына жазылып отырады. ... ... ... ... ... орындағанда жүйені қолданушылар және
олардың орындаған әрекеттері, уақыты, ... ... ... көрініп тұрады
(68-сурет).
68-сурет-Журнализация формасының нәтижесі
Өзін өзі бақылау сұрақтары
1. Мәліметтер қорын қалай сенімді сақтауға болады?
2. Транзакция деген не?
3. Оның қандай ... ... ... ... ... ... береді?
5. Тіркелмеген транзакциялар қандай нәтиже береді?
6. Транзакцияның жеке дара шегінуі ... ... ... ... ... ... Жеңіл ақау деген не? Ол қалай анықталады?
9. Қатаң ақау деген не? Ол ... ... ... жүргізу не үшін қажет?
11. Журналға қандай ақпараттар тіркеледі?
5-БӨЛІМ. СЕРВЕРЛІК МӘЛІМЕТТЕР ҚОРЫ ЖӘНЕ INTERBASE СЕРВЕРІМЕН ТАНЫСУ
Мұндай МҚ бір ... ... ... ... МҚ ... ... ... сақтау әдістерімен ерекшеленеді, бірақ барлығы
бірігіп SQL- ... ... ... қолдану арқылы өзара байланыстарды
орнатады. Осы ... ... ... ... ... ... ... SQL-
срверлер дейді. Бұл серверлерге қосылатын қосымшалар көпдеңгейлі деп
аталады, себебі ... ... ... жүйелерде жұмыс істей береді.
SQL-срверлердің көпшілігі SQL-командаларды және ... да ... ... ... әр ... өз диалекті болады.
SQL тілі локальды ... де ... ... бірақ SQL-серверлермен
салыстырғанда жұмысы баяу болады, себебі SQL-серверлер SQL-командаларды
талдап, тиімді етіп ... ал ... ... ол жоқ. ... ... кезде Paradox, dBase, FoxPro МҚБЖ-н тек басқа қолдануға
тұрарлық программа жоқ болғанда ғана қолданады.
SQL-серверлерге жататын программалар:
InterBase, Oracle, SyBase, ... MS SQL Server, ... ... ... ... ... ... қажет:
- МҚ-на бірмезгілде қосылатын қолданушылар ... ... ... ... және ... ... ... Ал локальды МҚ файлдық жүйенің қолданылуына негізделген
блоктау ... ... ... Егер ... ... ... ... аз
қолданушылық режимде таңдайды.
- Сақталатын деректер көлемі. SQL-серверлер көп деректерді сақтай алады,
себебі локальды МҚ-да бір ... ... саны ... аса бастаса
кедергілер туындайды.
- Администраторлық қызметтерді қолдану қажеттілігі. Локальды МҚ-да ... ... ... аз ... және ... ... ... Ал
SQL-серверде МҚ-н администрациялау үшін көп ресурс керек.
- Сенімді қауіпсіздіктің ... МҚ көп ... ... ... локальды МҚ-да қауіпсіздік тек қана бір кесте ... ... ... ... МҚ-н ... қорғау мүмкіндігі
бар.
Сонымен локальды МҚ келесі талаптарға сай қолданылады:
1. МҚ кестелерінде жазулар саны 10000-нан ... ... МҚ-н ... ... саны аз болса.
3. Күрделі администраторлық, қорғау қызметтері қажет болмаса.
5.1 INTERBASE локальды сервері
1. Серверді іске қосу
Бұл ... екі ... іске ... ... және ... түрде.
Сонымен қатар, WindowsNT ОЖ-де екі деңгейде іске ... ... ... ... ... (Windows95/98-де әрқашан қосымша түрінде қосылады).
InterBase –тің құрамында оның іске қосылу режимі мен деңгейін басқаратын
InterBase Manager деп ... ... бар. Оны ... ... Server Manager командасын таңдау арқылы шақырады. Ол ... ... іске қосу ... ... көмектесетін StartUp Mode
бөлігінде екі ауыстырып ... ... ... ... және ... қосу) бар. Терезенің төменгі ... Status ... бар. ... ... ... The InterBase Server is currently Running –
сервердің жұмыс ... ... ... Stop – ... ... егер оны ... ... Start пернесіне айналады, яғни серверді
тоқтаған соң қайта қосу ... Change ...... ... ... ең ... Run the InterBase server as a service on WindowsNT
жалаушасы бар, ол ... ... ... ... ... ... ... InterBase сервер жұмыс ... ... ... оң жақ ... ... көрініп тұрады. WindowsNT-де ол қосымша
түрінде іске қосылса, белгі көрінеді де, ал қызмет түрінде іске ... оның ... ... ... білу үшін тапсырмалар тақтасында тышқанның
оң жақ пернесін басып, Диспетчет задач ... ... ... ... немесе ibserver.exe файлдарының бар екекндігін
тексеру керек. Егер ол ... онда ... ... ... ... ... орнатылғанын білгеннен кейін онда тіркелу үшін: ПУСК-ПРОГРАММЫ-
InterBase – IBConsole ... ... ... ... ... енгізілген, сервердің баптауларына қажетті ... ... МҚ-н құру және ... SQL – ... ... ... іске ... терезесі келесі компоненттерден тұрады:
- Мәзір – серверді басқару командалары бар
- ... ...... ... ... ... құралдар
- Бұтақтар терезесі – серверде тіркелген серверлер мен МҚ иерархиясын
бейнелейді
- Жұмыс терезесі – сол жақ бөліктегі бұтақтар туралы ... ... Онда ... да осы объектілерге амалдар қолдануға болады.
- Жағдай жолы – қай сервердің таңдалғаны, қолданушы туралы ақпарат
көрсетіледі.
IBConsole программасы ... ... ... үшін оны ... ... ... жоғарғы мәзірден Server – Register. Қосымша терезе ашылып, онда
тіркелу ... ... Server ... ... ... ... ... Remote Server – глобальды сервер құру командалары бар.
Қажеттісін таңдау керек, мысалы бізге локальды серверде тіркелу керек, ... ... – ді ... ... Login ... ...... атауы SYSDBA деп (Серверде жаңа қолданушы ... осы ... ... Password - masterkey деп (парольды басқа
етіп беруге де болады) берілуі керек. Тіркеліп ... соң , жаңа ... ... ... ... Ол үшін ... жоғарғы мәзірінен Server
– User Security ... ... ... ... NEW ... басу
керек. Осы терезенің Required Information бөлігіндегіUser Name STUDENT деп
беріп, Password және Confirm Password ... жаңа ... ... ... Apply ... басу ... сақтап, Close пернесімен терезені жабамыз.
Терезенің жұмыс облысында серверде пайда болған қолданушы туралы ақпарат
көрініп тұрады. Серверге тіркелген барлық қолданушылар ондағы ... ... ... ... ... қолдануға рұқсат алу керек. Кестелер өздері
бөлек қорғалып тұрады, ... ... ... алу ... ... қорын құру.
InterBase-те мәліметтер қоры файл түрінде сақталады, типі .gdb болады.
МҚ-н құру үшін ... ... DataBase - Create DataBase ... ... Alias – ... Студент – МҚ атауы
2. Files бөлігінде құрылатын МҚ-ң қай ... ... жолы және ... ... 230) тұратыны көрсетілуі керек. Мысалы:
d:\ib\Студент.gdb деп жазсақ, d: ... ib – ... ... ... ... ... онда ... сақталатын файл атауы
Студент.gdb болады.
3. PageSize Әрі қарай әр беттің ... 4096 деп ... ... ... Default ... set – ... қай форматпен енгізілетіні
көрсетәлуі керек. WIN 1251 – кириллицаны білдіреді.
5. SQL Dialect - 1 деп ... OK-ді ... Егер ... ... ... жаңа МҚ-н ... ... қосылу үшін IBConsole терезесіндегі МҚ атауын екі рет
тышқанмен шерту керек. Сонда МҚ ... ... ... ... Views, Stored ... ... Generators,
Exceptions, BlobFilters, Roles.
МҚ бойынша интерактивті SQL – сұраныстармен жұмыс істеуге болады. Ол
үшін Tools - ... SQL ... ... шыққан терезенің үстіңгі
бөлігінде сұраныс командасы жазылып, астыңғы бөлігінде оның нәтижесі
көрінеді.
Оқушылар кестесін ... жеке ... ... ... ... ... түсу ... атрибуттары анықталсын. Атрибуттардың типтерін көрсету
керек. Кейбір атрибуттар бос мән қабылдаса NULL, ... Not NULL ... ... ... ірі ... қоры ... онда өте көп кесте болатыны белгілі,
атрибаттардың мінездемелері басқа да кестелерде кездесуі ... оны ... ... ... ... ... ... бір атаумен анықтап қойған
дұрыс, оны domain дейді.
Оқушылардың тегі туралы бағанға домен құру үшін:
Create Domain fio Char(20) not Null деп ... ... үшін Query ... ... ... керек. Сонда Domains метадеректер тізімінде fio
домені ... ... осы ... ... ... ... DOMAIN ... Drop, Alter сөздерінен басталатын командаларды SQL-дің DDL-типті
командалары дейді. Олар деректерді анықтау командалары болып ... ... ... ... метадеректер деп атайды.
Серверде деректердің өзгерісі транзакция ... іске ... 4 ... бар:
1. Атомарлық – «барлығы немесе ештеңе» принципі сияқты, орындауға
жіберген операция толық аяқталуы керек.
2. Толықтылық – ... МҚ-н бір ... ... 2-ші ... Ол МҚ ... ... анықталады, ол
қосымша арқылы іске қосылады.
3. ...... ... ... ... керек.
4. Әрекеттілік – транзакция бекіткен өзгерістер міндетті түрде күш алуы
керек.
Транзакция орындалды деп есептеледі, егер арнаулы ... ... ... (оны commit ... оған ... оның ... ... Бекітілмеген транзакция активті транзакция деп ... ... ... ... ... үшін commit деп ... сұраныс жіберіледі. Егер әр сұраныс орындалғаннан кейін ... ... ... ... режимін қою керек. Ол режимнің іске қосылып
тұрғаны сұраныс терезесінің жағдай ... Auto DDL On ... ... Егер ол қосылмаса, онда Edit – SQLOptions – AutoCommit DDL=True
командасын орындап, Apply ... ... ISQL ... ... ... де ... бірақ құрылатын сұраныстар өте көп
болған соң оны ... ... ... ... DDL ... бір ... оларды деректерді анықтау файлы деп атайды, оның ішінде ... ... ... ... ... ... қосылудан басталуы керек:
Connect ‘d:\ib\Студент.gdb’
User ‘Student’ password ‘silver’
DDL ... ... ... ... ... ... .sql деп
көрсетеді.
Мысалы:
Connect ‘d:\ib\Студент.gdb’;
User ‘Student’ password ‘silver’;
Create Domain n_bilet integer not null;
Create Domain n_adres char(20) not ... Domain n_sempol char(10) not ... Domain n_Datar Date not ... ... ... соң сақтау кезінде файл атауын “domain.sql” деп
беруге болады. Ол ... ... ... алынуы керек. Оны орындау үшін
Query – Load script сосын Query – Execute командаларын орындау ... ... ... соң ... құру ... өтуге болады. Ол үшін
ISQL программасында мына сұранысты тереміз:
CREATE TABLE Student (
Bilet n_bilet,
Adres n_adres,
Sempol n_sempol,
Datar ... key ... беру үшін Query – Execute ... ... ... барлық амалдар дұрыс орындалса, онда STUDENT ... МҚ-ң ... ... құрылады.
Оны тексеру үшін IBConsole терезесінде Tables қатпарын ... ... ... ... ... ... оның метадеректерін көру үшін
DataBase – View Metadata командасын орындайды.
2. ... ... Index ... файл атауы on кесте атауы(атрибут)
Create Index stud on student(fio) – көрсетілген ... fio ... ... ... файл ... Index stud1 on ... - көрсетілген атрибут datar бойынша
stud1 деген индекстік файл ... ... ... ақпарат алу үшін:
- IBConsole терезесінде Tables қатпарынан Студент МҚ-н таңдау керек.
Сонда терезенің оң жақ ... student ... ... ... белгілеп, тышқанның оң жағын басып, Қасиеттер ... ... ... ... for student терезесі ашылады.
Онда құрылған stud және stud1 индекстері тізімде көрініп ... ... ... RDB$Primary1 индексі бар екекндігі көрінеді.
Оны алғашқы кілт үшін сервер құрады, және ... ... ... ... ... ... – сұраныстар терезесінде мына команданы орындау керек:
Insert Into кесте ... ... ... Values ... мәндері)
Бұл команданы орындамас бұрын символдарды жазу үшін ... ... ... Ол үшін Edit/ Options ... ... ... орнатылған болса, кестедегі Character Set жолында win1251 мәні
көрініп ... ... Егер бұл мән ... болса, онда win1251 мәнін
таңдап Apply пернесін басу керек. ISQL программасы арқылы орыс ... Into student (bilet, fio, datar, adr, sempol) Values ... ... ... ‘женат’). Егер командадағы
символдар оқылмай тұрса, онда Edit – Font – ... ... ... ... деп ... ... ... бақылау үшін Select * from student командасын орындап,
нәтижені көруге ... ... Data ... ... ... ... болады. Транзакцияны аяқтау үшін Commit командасын
беру керек. Осылайша барлық жазуларды ... ... ... ... бас ... ... шығу. IBConsole терезесінен шығу.
Сұраныстан шығу үшін:
File – Close командасын орындап, шыққан хабарламаға Yes деп ... егер ... ... ... ... болса..
IBConsole терезесінен шығу үшін Console – Exit командасын орындайды.
Өзін-өзі бақылау сұрақтары:
1. Серверлік мәліметтер қорын құру ... іске ... ... ... не үшін ... ... деген не?
4. SQL-серверлерге жататын программалар
5. Серверді іске қосу
6. Серверде тіркелу
7. Серверде мәліметтер қорын құру
8. ... ... не үшін ... SQL – ... ... не? Ол ... ... Домен құру
11. Транзакция деген не? Транзакцияның 4 қасиеті
12. Кесте құру этабын түсіндір
13. Индекс құру ... ... ... ... енгізу қалай орындалады?
15. Сұраныстан шығу. IBConsole терезесінен шығу.
3. Delphi7 және ... қоры ... ... BDE және ADO ... ... ... ... (IBX)
механизмдері бар.
BDE механизмімен рұқсат алу, администратор ...... – Borland Delphi7 – BDE ... ... ... терезенің жоғарғы мәзірі, сол жақ бөлігінде екі қатпары
бар: DataBase және Configuration. Оң жақ ... бір ... ... ... BDE-де бар ... альястардың тізімі келтіріледі. Жаңа
альяс құру үшін Object – New ... Ctrl+N – ді ... DataBase ... ... ... ... ... белгілеп, OK-ді басамыз.
Жаңа INTRBase1 деген атпен альяс пайда болады. Орнына мысалы Студент ... атау ... ... қатпарында программаны баптау параметрлері көрініп тұрады.
Оны ... ... ... ... ... ...... турасындағы жолды шертіп, пайда болған тізімнен
Pdox ANSI Cyrillic деп таңдаймыз.
ServerName – сервер үшін МҚ ... ... ... керек.Ол үшін
ServerName сөзінің турасындағы көпнүктелі пернені басып, ... ... ... атауын UserName - student деп көрсетеміз. Object
– Apply командасы ... ... ... ... ... Save all edits ... ... OK –ді басады. BDE ... ... жабу ... - Exit ... орындаймыз.
МҚ көмегімен қосымша құру әдістері.
Қалыпқа DataSource, Query, DBGrid, Button1,2 ... ... ... - DataSet - Query1
Query – DataBaseName –Студент
ReguestLive – true
Sql - string - select * from ......... – true
Осы кезде диалогтық терезе шығады. Онда МҚ атауы Студент, ... student деп ... ... ... оған ... ... ... активтендірмей: Active – False, мына қасиеттерді тағайындайық:
Form1 - Caption - ... ... ... - poScreenCenter
Button1 - Caption - ... іске ... - Caption - ... оқиғасына мына кодты жазсақ:
Query1.Active:=true; немесе бұл жоолдың орнына мына команданы жазуға ... ... ... ... іске қосу пернесін шерткенде сұраныстың
жазуларын активтендіріп, Button1 пернесін пассив етеді.
Button1Click ... мына ... ... ... then ... ... егер ... алдын ала ашық тұрған болса, ... ... ... ... ... мерзімін енгізу кезінде жылдың 4 цифры ... ... ... ... ... ... жариялап,
OnCreate оқиғасына мына кодты жазамыз:
ShortDateFormat:=’dd.mm.yyy’;
Delphi объектіге-бағытталған орта болғандықтан МҚ-на рұқсат алу үшін BDE
қатпарындағы TSession, ... ... де ... ... ... ... ... тиімді:
- егер құрылатын қосымша бірмезгілде бірнеше ... ... ... Әр ... жеке ... түрінде орындалуы керек
болса.
- Көпағынды қосымша құру кезінде. ... әр ағын жеке ... ... ... болады.
TdataBase компоненті МҚ байланысын басқарады. Қосымшада бірнеше сессия
болады, олардың әрқайсысы өз МҚ-мен ... екі ... тек қана ... ... орындаса, негізгі жұмысты
осы кластардың мұрагерлері: TBDEDataSet, TDBDataSet атқарады. DataAccess
қатпарынан Ttable, Tquery, ... ... ... ... ... ... береді.
МҚ-ғы мәліметтерді басқару үшін сұраныстардың 2 түрі қолданылады:
1. Мәліметтерді қайтаратын сұраныстар. Таңдау ... (Open ... ... ... ... Олар деректерді өзгертуші
сұраныстар деп аталады. (ExecSql әдісімен орындалады)
TstoredProc компоненті серверде сақталатын ... ... да ... ... ... ... 2-ге ... қайтаратын TstoredProc.Open, мәліметтерді қайтармайтын
ExecProc әдісімен ... ... ... ... ... ... ашу үшін Query1.Active:=True немесе ... ... ... жабу ... If ... then ... әдісін
қолданады.
Мәліметтер жинағы бойымен жылжу үшін кэш деп ... ... ... Оны TdataSet ... ... Әр ... сәтінде уақытша
кестеден бір жазу активті болып, курсормен ... ... ... үшін TdataSet ... ... ... ... – бірінші жазуға көшу
Last – соңғы жазуға ...... ... ... – келесі жазуға көшу
MoveBy – берілген мәнге тең жазудан аттау
BOF – егер ... ... ... ... ... ... ... мән
береді.
EOF - егер курсор соңғы жазуда тұрса ақиқат, әйтпесе жалған мән береді.
Бұл әдістерді ... ... ... ... өрістері.
Деректер жиынының өрістері деп кестенің бағандарының атауларын айтуға
болады. TdataSet компоненті бағанның нөмірі, мәні ... ... ... ... ... ... Ол үшін Fields, ... қасиеттерін қолдануға болады.
Мысалы: Label1 компонентіне Query1 компоненті арқылы құрылған сұраныс
нәтижесіндегі бірінші баған жазуын ... ... ... мына ... ... 1-ші ... мәндерін Label1-
ге шығарады;
Label1.Caption:=Query1.FieldByName(‘FIO’).asstring; FIO атрибутының
мәнін ... ... ... ... В.И. ... тауып, Label1-ге шығарады;
Атрибуттардың типтерін анықтау керек болса, Cfield.FieldKind қасиетін,
атрибут атауын ... ... ... ... ... болса,
DisplayName қасиетін, атрибут атауын экранға жөнделетіндей режимде ... ... ... қасиетін, атрибуттың мәнін шығару керек болса,
DisplayText қасиетін, атрибуттың типін анықтап ... ... ... ... ... ... ... нөмірін анықтау керек болса,
FieldNo қасиетін, атрибуттың жөндеуге жататынын, жатпайтынын анықтау ... ... ... ... қасиеті келесі мәндерді қабылдайды:
fkData – атрибуттың кестеде ... ...... ... ... білдіреді
fkLookUp – атрибуттың іздеу өрісі екендігін білдіреді
fkInternalCalc – ... және ... ... ... ...... ... Cfield айнымалысы бар болсын, оған ListBox1 ... Query1 ... ... құрылған сұраныстағы атрибуттар тізімі
шақырылсыняғни былай деп жазамыз:
Cfield:=Form1.Query1.FieldByName(ListBox1. Items[ListBox1.ItemIndex]);
Енді осы Cfield айнымалысына ... ... ... ... ... ... болса:
ListBox2.Items.add(‘атрибут атауы-’+Cfield.DisplayName) деп жазамыз.
Ал осы таңдал,ан атрибуттың атауы анықталған соң, ... көру ... ... деп ... ... ... ... қай типпен сақталғандығын
анықтау керек болса FieldKind ... үшін ... ... ... CField.FieldKind of
fkData: FKind:=' атрибут кестеде сақталған';
fkCalculated: FKind:='Атрибут есептелетін';
fkLookUp: FKind:='Іздеу атрибуты';
fkInternalCalc: FKind:='есептелетін, нәтижесі кестеде сақталатын';
fkAggregate: FKind:='аггрегатты атрибут';
else
FKind:='ешбір типке жатпайды';
Егер таңдалған ... ... ... ... соң, сол ... ... ... типі - '+FieldTypeNames[CField.DataType]);
деп жазады, ал сол типтің ұзындығын анықтап көрсету керек болса,
ListBox2.Items.Add('Размер (байт) -'+IntToStr(CField.DataSize));
деп жазады. Сол ... ... ... ... ... ... керек болса,
ListBox2.Items.Add('Номер -'+ IntToStr(CField.FieldNo)); деп жазады.
Егер таңдалған атрибутты жөндеуге болатынын, болмайтынын анықтау керек
болса,
if ... ... ... деп жазады.
Меншікті ену диалогын құру.
Қалыпқа келесі компоненттерді ... ... ... ... DataSet= TQuery1;
TQuery1: DataBaseName=Студент; Sql-String=Select * from student;
DataBase1: DataBaseName=Студент; LoginPrompt=false;
Бұл компоненттерді қойған кезде ... ... Tsession ... онымен жұмыс істеу үшін Delphi-де Session айнымалысы анықталған,
оның атауы SessionName=Default деп беріледі.
Қалыпқа Button1 қойып, соны ... ... мен ... өзі
анықтауы керек болса, мына оқиғаға Button1.Click код жазамыз:
DataBase1.Params.Values[‘Password’]:=’silver’;
DataBase1.Params.Values[‘UserName’]:=’student’;
Query1.Active:=True;
Button1.Enabled:=False;
Бұл әдіс базаның ... ... ... ... үшін ... қолданушы мен парольды сұрау диалогын ұйымдастырған дұрыс.
Жаңа қалып құрып, атауын Flogin деп атап, мына ... ... үшін мына ... ... Label1 - ... атауы
2 Label2 - Caption=Пароль
3 TEdit1 - Name=ebUserName; text – бос ... TEdit2 - ... text – бос ... ... Button1 пернесінің қасиеттері:
Name=btnCancel
Caption – Бас тарту
ModalResult =mrCancel
6 Button2 пернесінің қасиеттері:
Name=btnOK
Caption - ОК
ModalResult =mrOK
Flogin қалыбының FormShow оқиғасына мына ... ... –ге ... программаға өзгеріс енгіземіз:
If Flogin.ShowModal=mrOK then
begin
DataBase1.Params.Values[‘Password’]:=Trim(Flogin.ebPassword.Text);
DataBase1.Params.Values[‘UserName’]:= Trim(Flogin.ebUserName.Text);
TRY
Query1.Active:=True;
Button1.Enabled:=False;
Except
ShowMessage(‘МҚ-на ену қате орындалды’);
End;
End;
Деректер жиынын өзгерту.
Мәліметтер қорынан алынған деректерді ... үшін Tquery, ... ... ... ... ... ... әдістері бар:
Append, Insert, Delete, Edit, Post, Cansel. Егер ... ... ... ... яғни деректер жиынын сұранысқа жазады, бірақ
сұраныстың өзінен жөндеуге ... алу ... ... ... ... ... ... – деректер жинағы жабық.
dsBrowse – деректер жинағы қарау режимінде ашық
dsEdit – жөндеу режимінде
dsInsert - жазу қосу ... ... ... Object ... терезесінің Events
қатпарынан AfterScroll оқиғасын таңдап, тышқанды 2 рет ... ... мына ... жазсақ: CheckPosition; онда Tquery компоненті құрған
сұраныс кестесінде аталған ... әр ... ... ... ... кестедегі жазуларға жөндеу рұқсатын береді. Егер енгізу жолағына
енгізілген мән сұраныс кестесінде және МҚ ... ... ... керек
болса, онда Edit1, SpeedButton компоненттерін қойып, ... 1 рет ... ... мына ... ... ... ... жазуды өшіру керек болса, Button пернесін қойып, оны шерту
оқиғасына Query1.Delete; деп жазу ... ... ... ... абай болу ... ... ... мына кодты жазу керек:
If not {MessageDlg(‘Удалить запись?’, mtError, [mbYes, mbNo], ... ... Қате ... ... онда екі ... ... No.
ЕгерYes пернесі басылса ғана жазу өшіріледі.
Мұндағы MessageDlg функциясы келесі форматты қолдайды:
MessageDlg(const Msg:string; DlgType:TmsgDlgType; Buttons: ... ... const ... - кез ... ... ... ... алынып жазылады.
DlgType:TmsgDlgType; - мына мәндердің бірін қабылдайды:
mtWarning – ! белгісі бар ескерту терезесі шығады
mtError – х белгісі бар қате ... ... – i ... бар ақпараттық терезе шығады
mtConfirmation - ? белгісі бар, ... ... ... - ... ... TmsgDlgButtons; параметрі щығарылатын терезеде ... ... ... [mbYes, mbNo];
HelpCtx:LongInt – параметрі анықтама алуды білдіреді.
Сонымен қатар сұраныс DBGrid компонентіне шығаылатын болса, жазуды ... оның ... мына ... ... ... ... Егер бұл ... False деп қоймаса, онда жоғарыдағы
Query1BeforeDelete оқиғасына жазылған кодты орындағанда DBGrid-тің ... ... ... ... Ол артық іс болып саналады.
Жазуларды кірістіру мен кесте соңына жазу қосу былай қарағанда қиын емес
сияқты, бірақ, серверде жұмыс істеп отырған ... ... бір ... мән ... ... онда ... қасиеті жоғалып, қате шығады,
сонымен қатар сервердегі қолданушылар көбіне ... ... ... ... ... кейбір атрибуттар шақырылмауы мүмкін, ал ... ... МҚ ... ... бір ... бос мән ... ... create domian bilet integer not null; деп ... ... ... ... ... жоқ ... жазу кірістірсе, ол бос ... ... да қате ... ... кезде генераторлар мен триггерлер
қажет болады.
4. Генераторлар мен триггерлер
Мысалы МҚ кестесіндегі студенттің ең соңғы билет ... мәні ... ... ... көре ... МҚ ... ... қолданушылар
тек одан алынған сұраныспен жұмыс істеп отырсын, онда сұранысқа жаңа жазу
кірістіру үшін алдымен билеттің ... ... ... тұратын генератор құру
керек болады.
Генератор дегеніміз – мәнін арнаулы gen_id() функциясы көмегімен ... ... ... бар ... ... құру үішн ISQL терезесін ашып, мына сұранысты орындау керек:
Create generator bilet_gen - bilet_gen деген генератор құрды
Select ... from student – ... ... ең ... ... ... generator bilet_gen to 9 - ағымдағы мәнді (мысалы 9) шығарды
Gen_id(bilet_gen,1) – максималды мәнге 1-ді ... into ... fio, adres, ... ... ‘Петр’, ‘Петрович’, ’01.10.1988’)
– 10-шы жазуды кірістірді.
Триггерлер.
Триггер дегеніміз МҚ-да туындаған ... ... ... ... ... іске ... процедура.
Триггер қандай да бір МҚ кестесімен байланысты болады, бірақ оны тікелей
шақыру мүмкін емес, ол өзіне байланысты операция ... ... ... өзі іске ... ... сұраныс командасы:
Create trigger trname for tablename
{Before | After} {Insert | delete | UpDate} ... ... [Declare variable ... типі ;]
Begin
… SQL операторлары
End
Бұл командада trname – триггер атауы, tablename – ... ... қай ... ... Before – ... кейін, After –
операция орындалмас бұрын, триггер қай ... үшін ... Insert ... ... ... delete ... өшіру операциясына, UpDate-
жазуды жаңарту немесе өзгерту операциясына, nomer – триггер ... ... ... ... типі – ... ... айнымалылар қажет
болса, солардың атауы мен типі көрсетіледі. SQL операторлары – кез ... ... ... ... ... ... жазылады.
Мысалы: Студенттер кестесінен қандай да бір жазуды өшіру триггері
құрылуы керек болсын.
Create trigger ... for ... delete Position 0 As ... алдында құрылған генератордың bilet_gen мәнін қолданып, кестеге
жаңа жазу кірістіру генераторын құру керек болсын:
Set Term ! ... trigger ... for ... insert ... ... 1);
End !!
Set Term; !!
Бұл триггер кестеге жаңа жазу ... ... іске ... ... ... ... ... кестеге сол нәмірмен жазу енгізуге
мүмкіндік береді. Енді генератор мен триггер анықталған соң ... ... ... ... ... ... into student(fio, adres, datar)
Values(‘Петров’, ‘Петр’, ‘Петрович’, ’01.10.1988’) – ... ... ... атрибут көрсетілген жоқ, себебі оның мәнін автоматты ... мен ... ... ... ... кэштеу. TUpDateSQL компоненті.
МҚ кестесімен тікелей жұмыс істемей, сұраныстарды өңдеу кезінде ... ... ... ... ... ... болмайды. Ол үшін
арнаулы DataAccess қатпарында орналсқан ... ... ... Егер Tdataset ... ... қасиеті тағайындалып
тұрса, өзгерістер МҚ кестесіне автоматты ... ... ол ... және ... әдістерін орындау керек.
Қалыпқа TUpDateSQL1, Query1 компонентерін ... ... ... деп ... ... DeleteSQL, InsertSQL, ModifySQL қасиеттеріне
орындалатын операцияның SQL-инструкциясы жазылуы керек.
Мысалы, InsertSQL қасиетіне мына ... ... into ... fio, adres, ... :fio, :adres, ... ... мына команданы:
Update student set
Fio=:fio,
Adres=:adres,
Datar=:datar
Where Nbilet=:Nbilet;
DeleteSQL қасиетіне мына команданы:
Delete from student Where Nbilet=:old_Nbilet;
жазып, ОК ... ... Button1 ... мына ... ... Quer1 ... қоры – ... бір ауқымға қатысты мәліметтерді амал-
тәсілдермен ұқсата білудің жалпы ... ... ... ... ... структура немесе модель. Қазіргі ... (ADO, dBase, FoxPro, Access, Paradox) және ... Oracle, Sysbase, Infomix, ... SQL Server) ... ... және ... ... беретін көптеген бағдарламалы
жүйелер бар.
Delphi-дегі мәліметтер қоры – бұл ең ... ... ... ... ... жасауды қамтамасыз ететін кітапханасының күшті қоры
құрылып, ол ... ... ... ... ... ... ортасы мәліметтер қорын басқару жүйесінің (МҚБЖ) тура
мағынасында болмаса да, МҚБЖ-нің ... ... ... ... ДҚ-ның объектілері SQL негізінде жасалған және өзіне Borland
Database Engine қуатын жинақтаған. Сондай-ақ Delphi ... Borland ... те ... ... да Oracle, Sybase, Informix және InterBase
МҚБЖ-лары жоғары қарқындылықпен жүреді. Одан басқа Delphi ... ... ... ... кез ... ішкі SQL ... офлайндық режимде өңдеуге мүмкіндік береді. ... ... ... жүйе құрып отырған өңдеуші ақпаратты .dbf файлдық форматта
(dBase, Clipper) немесе .db (Paradox) форматында сақтауға ... Егер ... ... ... for Windows ... ... болса, ол клиент-
сервер архитектурасында жұмыс істей береді.
Оқу ... Delphi7 ... ... ... жүйе ... бар ... ... мақсатында «Кадрлар бөлімі» жобасын
келтірдік. Бұл тарауды ... ... оқу ... ... ... Қазақстан мемлекеттік университетінің 050703-Ақпараттық ... ... ... Жаннаның көмегіне алғыс айтамыз.
«Кадрлар бөлімі» бағдарламасының артықшылықтарына тоқталатын болсақ, ең
бастысы - уақытты үнемдеуге мүмкіндік беретін ... ... ... адамзат
баласының ең құнды дүниесі болып келмей ме? Ал уақытты ... ... ... өзі толтырылатын жеке парақтың, келісімшарттың, дайын
күнтізбенің, тіпті ыңғайлы түрде жасалған қалыптың ... ... ... асып ... ... бұл ... ... дерлік әрекеттер
автоматты түрде жүзеге асырылып отырады. Ал автоматтандырылған жүйелер
қазіргі заманның, яки XXI ... ... ... ... Тіпті көркемдеу
жағына келгеннің өзінде бағдарламаның мүмкіндіктері ауқымды әрі кең. ... жоба ... ... те көрдік. Қарастырылған жобаның толық листингі
А-қосымшасында келтірілген.
ӘДЕБИЕТТЕР ТІЗІМІ
1. Культин Н. Основы программирования в Delphi 7.0 - ... ... В. ... ... – Санкт-Петербург: БХВ ... ... ... В.В. ... баз ... в Delphi 7: ... – СПб.: ... 2004.
4. Архангельский А. 100 компонентов библиотеки Delphi5. - Санкт-
Петербург, 2001.
5. Фленов М. Delphi 2005 ... ...... ... Харрингтон Д. Проектирование объектно-ориентированных баз данных. Пер.
С ... – М.: ДМК ... ... Абдолдина Ф.Н. Delphi ортасында бағдарламалау. Әдістемелік құрал.-
ШҚМУ баспасы, Өскемен, 2005.
8. Баас Р. Delphi4. – К.: ... ... BHV, ... ... П. ... в Delphi5. – Санкт-Петербург: БХВ-
Петербург, ... ... А. Д. Delphi5. ... ... приложений. –
М.: ДМК, 2000.
11. Конноли Т. Базы данных. Проектирование, реализация и сопровождение.
Теория и ... ... ... - ... ... Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms,
Dialogs, Menus, StdCtrls, DBCtrls, Mask, Grids, DBGrids, ExtCtrls, DB,
ADODB, Buttons, ... ... ... = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
Panel1: TPanel;
DBNavigator1: TDBNavigator;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
ADOQuery1: TADOQuery;
GroupBox1: TGroupBox;
Label1: TLabel;
DBEd_fio: TDBEdit;
DBEd_adres: TDBEdit;
Label2: TLabel;
Label3: TLabel;
DBEd_tel: TDBEdit;
Label4: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: ... ... ... ... ... TDBEdit;
DBEd_dolzh: TDBEdit;
DBEdit2: TDBEdit;
DBEdit3: TDBEdit;
DBCheckBox1: TDBCheckBox;
DBRadioGroup1: TDBRadioGroup;
DBImage1: TDBImage;
N6: TMenuItem;
N7: TMenuItem;
GroupBox2: ... ... ... TComboBox;
Button1: TButton;
RG_Filtr: TRadioGroup;
Button2: TButton;
Ed_filtr: TEdit;
N2: TMenuItem;
N8: TMenuItem;
N10: ... ... ... ... ... ... TDBEdit;
SpeedButton1: TSpeedButton;
DBGrid1: TDBGrid;
N9: TMenuItem;
N11: TMenuItem;
N12: TMenuItem;
N13: TMenuItem;
N14: TMenuItem;
N16: TMenuItem;
N17: TMenuItem;
N18: TMenuItem;
N20: TMenuItem;
N21: TMenuItem;
Label13: TLabel;
DBEd_dat: TDBEdit;
DBEd_dog: TDBEdit;
Label14: TLabel;
Label15: ... ... ... TMenuItem;
cbKizmet: TDBLookupComboBox;
qrKizmet: TADOQuery;
dsKizmet: TDataSource;
N19: TMenuItem;
qrLog: TADOQuery;
N22: TMenuItem;
N23: TMenuItem;
N24: TMenuItem;
DataSource1: TDataSource;
procedure FormCreate(Sender: TObject);
procedure N8Click(Sender: TObject);
{procedure N9Click(Sender: TObject);}
procedure N6Click(Sender: TObject);
procedure ... ... ... ... ... ... Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure N4Click(Sender: ... ... ... ... ... ... TObject);
procedure N12Click(Sender: TObject);
procedure N20Click(Sender: TObject);
procedure N13Click(Sender: TObject);
procedure N15Click(Sender: TObject);
procedure N16Click(Sender: TObject);
procedure N17Click(Sender: TObject);
procedure N18Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure ... ... ... ... ... ... N19Click(Sender: TObject);
procedure DataSource1StateChange(Sender: TObject);
procedure ADOQuery1AfterPost(DataSet: TDataSet);
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure ... ... : ... : ... TForm1;
otd:string; d:string;
implementation
uses unit3,unit4, Unit5, Unit2, Unit8, Unit10, Unit9,
Unit12, Math, Unit6, Unit7, Unit14, Unit13, Unit11;
{$R ... ... ... := False;
with qrKizmet do
begin
Close;
SQL.Text := 'SELECT * FROM kizmetter';
Open;
end;
with qrLog do
begin
Close;
SQL.Text := 'SELECT * FROM ... := ... cbKizmet ... := DataSource1;
DataField := 'idkizmet';
ListSource := dsKizmet;
ListField := 'kizmet';
KeyField := 'id';
end;
end;
procedure ... ... ... ... - ... ... ... TObject);
begin
frm_Prin_Rab.Show;
form1.Enabled:=false;
Form11.enabled:=false;
end;
procedure TForm1.N7Click(Sender: TObject);
begin
{ if ADOQuery1.Eof then
ShowMessage('Жумыстан шыгаратын адамды ... ... ... ... := ... := ... := True;
end;
with Form14.ADOQuery1 do
begin
Active := False;
Active := True;
end;
end;
procedure TForm1.N10Click(Sender: TObject);
var ... ... - ... '+IntToStr(t)+' адам бар';
otd:='Р’СҒРө';
end;
procedure TForm1.DBImage1DblClick(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
ADOQuery1.Edit;
DBImage1.Picture.LoadFromFile(OpenDialog1.FileName);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var ... ... ... ... ... then ... ComboBox1.Text='Туганкуні' then s:='tugankuni';
if ComboBox1.Text='Мекенжайы' then s:='mekenjai';
if ComboBox1.Text='Стаж' then s:='Staj';
if ComboBox1.Text='Уйтелефон' then s:='telui';
if ComboBox1.Text='Уялытелефон' then s:='telsot';
if ComboBox1.Text='Кызметі' then s:='kizmeti';
ADOQuery1.Locate(s,Ed_poisk.Text,[loCaseInsensitive,loPartialKey]);
end else ShowMessage('өріс ... ... ... ... TObject);
var ap,pr,pole:String;
begin
ap:='''';
pr:='*';
if RG_Filtr.ItemIndex-1 then
begin
if RG_Filtr.Items[RG_Filtr.ItemIndex]='Аты-жоні' then pole:='atiJoni';
if ... ... ... ... ... ... ... then pole:='kizmeti';
if RG_Filtr.Items[RG_Filtr.ItemIndex]='Білімі' then pole:='bilimi';
if RG_Filtr.Items[RG_Filtr.ItemIndex]='Стаж' then pole:='Staj';
if RG_Filtr.Items[RG_Filtr.ItemIndex]='Жануялык жагдайы' ... ... then ... else ShowMessage('Шарт танданыз');
end;
procedure TForm1.N4Click(Sender: TObject);
begin
AboutBox.ShowModal;
end;
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
form4.QuickRep2.Preview;
end;
procedure TForm1.N5Click(Sender: TObject);
begin
ShellExecuteA(Application.Handle,nil,'index.htm',nil,nil,SW_SHOWNORMAL);
end;
procedure TForm1.N9Click(Sender: TObject);
begin
ShellExecuteA(Application.Handle,nil,'index1.htm',nil,nil,SW_SHOWNORMAL);
end;
procedure TForm1.N12Click(Sender: TObject);
begin
form6.QRLabel21.caption:=form1.DBEd_fio.Text;
form6.QRLabel18.Caption:=form1.DBEd_dolzh.Text;
form6.QRLabel7.caption:=form1.DBEd_dat.Text;
form6.QRLabel4.Caption:=form1.DBEd_fio.Text;
form6.QRLabel6.Caption:=form1.DBEd_dat.Text;
form6.QuickRep3.Preview;
end;
function ... ... d[i]='.' then ... ... ... ... TForm1.N13Click(Sender: TObject);
begin
form14.Show;
end;
procedure TForm1.N15Click(Sender: TObject);
begin
form9.Show;
end;
procedure TForm1.N16Click(Sender: TObject);
begin
form6.QRLabel68.caption:=form1.DBEd_dolzh.Text;
form6.QRLabel69.caption:=form1.DBEd_fio.Text;
form6.QRLabel70.caption:=form1.Edit1.Text;
form6.QuickRep4.Preview;
end;
procedure TForm1.N17Click(Sender: TObject);
begin
form6.QRLabel77.caption:=form1.DBEd_fio.Text;
form6.QRLabel80.caption:=form1.DBEd_dat.Text;
form6.QRLabel82.caption:=form1.DBEd_dolzh.Text;
form6.QRLabel85.caption:=form1.DBEd_dat.Text;
form6.QuickRep5.Preview;
end;
procedure TForm1.N18Click(Sender: TObject);
begin
form6.QRLabel97.caption:=form1.DBEd_dolzh.Text;
form6.QRLabel98.caption:=form1.DBEd_fio.Text;
form6.QRLabel104.caption:=form1.Edit1.Text;
form6.QRLabel105.Caption:=form1.DBEd_fio.Text;
form6.QuickRep6.Preview;
end;
procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
form8.show;
end;
procedure TForm1.N22Click(Sender: TObject);
begin
form10.Show;
form1.Enabled:=false;
end;
procedure TForm1.N23Click(Sender: TObject);
begin
with TdfShowLog.Create(Application) do
begin
ShowModal;
Free;
end;
end;
procedure TForm1.N21Click(Sender: ... ... ... ... ... ... = dsEdit ... := False
else if DataSource1.State = dsInsert then
IsAppend := True
else
IsAppend := False;
end;
procedure TForm1.ADOQuery1AfterPost(DataSet: TDataSet);
begin
qrLog.Edit;
qrLog.Append;
qrLog.FieldByName('user').AsInteger := ... := ... ... IsAppend then
begin
qrLog.FieldByName('action').AsInteger := 1;
qrLog.FieldByName('message').AsString := 'Жана жазба енгізілді';
end
else
begin
qrLog.FieldByName('action').AsInteger := 2;
qrLog.FieldByName('message').AsString := ... ... := ... ... TObject);
begin
qrLog.Edit;
qrLog.Append;
qrLog.FieldByName('user').AsInteger := USER;
qrLog.FieldByName('evtdate').AsDateTime := Now;
qrLog.FieldByName('rowid').AsInteger := 0;
qrLog.FieldByName('action').AsInteger := 4;
qrLog.FieldByName('message').AsString := 'Жуйеге ... ... TObject; var Action: ... := ... := ... := ... := ... := 'Жуйеден шыгу';
qrLog.Post;
end;
procedure TForm1.N24Click(Sender: TObject);
begin
form13.show;
end;
End.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, ... ... ... ... = ... ... ... Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public ... ... ... ... ... TForm2.Button1Click(Sender: TObject);
begin
frm_Prin_Rab.Ed_god_rozh.Text:=datetostr(form2.MonthCalendar1.Date);
form2.Hide;
end;
procedure TForm2.FormCreate(Sender: TObject);
begin
MonthCalendar1.Date:=Date;
end;
end.
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, ... ... DBCtrls, ... Mask, Buttons;
type
Tfrm_Prin_Rab = class(TForm)
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
SpeedButton1: TSpeedButton;
Label12: ... ... ... ... ... ... ... TEdit;
Ed_tel: TEdit;
Ed_sot: TEdit;
Ed_dolzh: TEdit;
Ed_stazh: TEdit;
CB_pol: TComboBox;
Label5: TLabel;
CB_child: TCheckBox;
CB_Sem_pol: TComboBox;
Label13: TLabel;
CB_Otdel: TComboBox;
CB_obraz: TComboBox;
Ed_grazh: TComboBox;
Ed_nacia: TComboBox;
procedure ... TObject; var Action: ... ... ... ... ... SpeedButton1Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frm_Prin_Rab: ... ... ... ... Tfrm_Prin_Rab.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
form1.Enabled:=true;
end;
procedure Tfrm_Prin_Rab.Button2Click(Sender: TObject);
begin
Form1.ADOQuery1.First;
{if
(CB_Sem_pol.Text'таңдау')and(CB_pol.Text'таңдау')and(CB_Otdel.Text'таң
дау') then
begin ... ... then ... ... ... ... Tfrm_Prin_Rab.SpeedButton1Click(Sender: TObject);
begin
Form2.Show;
end;
procedure Tfrm_Prin_Rab.Button1Click(Sender: TObject);
begin
Form4.QRL_fio.Caption:=Ed_fio.Text;
//Form4.QRMemo4.Lines.Clear;
form4.Label1.Caption:=frm_Prin_Rab.Ed_dolzh.Text;
//Form4.QRMemo4.Lines.Add('1. Фирма жогарыда айтылган ... ... ... ... ... фирманың ішкі ережелері мен
заңдарына багынатын болады .');
Form4.QRM_rab.Lines.Clear;
Form4.QRM_rab.Lines.Add('"Жұмысшы"');
Form4.QRM_rab.Lines.Add(Ed_fio.Text);
Form4.QRM_rab.Lines.Add('Мекен-жайы: '+Ed_adres.Text);
Form4.QRM_rab.Lines.Add('Телефон: '+Ed_tel.Text);
form4.QRLabel21.Caption:=form1.Edit1.Text ;
Form4.QuickRep1.Preview;
end;
end.
unit duLogin;
interface
uses
Windows, Messages, SysUtils, ... Classes, ... ... DB, ADODB, StdCtrls, Buttons, Mask, DBCtrls;
type
TdfLogin = class(TForm)
ADOQuery1: TADOQuery;
edPassword: TMaskEdit;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
dbName: TComboBox;
procedure BitBtn1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private ... ... Public ... }
end;
var
dfLogin: TdfLogin;
implementation
{$R *.dfm}
uses
Unit1, duDataModule;
procedure TdfLogin.BitBtn1Click(Sender: TObject);
begin
with ADOQuery1 do
begin
Close;
SQL.Text :=
'SELECT kod ' +
'FROM bd_rabotniki ' +
'WHERE atijoni="' +dbName.Text + '" AND ... + ... + ... ... > 0 ... := ADOQuery1.FieldByName('kod').AsInteger;
Form1.Show;
Visible := False;
end
else
begin
Application.MessageBox('Логин немесе купиясоз кате терілген', '');
edPassword.Text := '';
end;
end;
procedure TdfLogin.FormCreate(Sender: TObject);
begin
with ADOQuery1 do
begin
Close;
SQL.Text :=
'SELECT atijoni ' +
'FROM bd_rabotniki ' ... login ' ... BY ... not EOF ... ... ... SysUtils, Variants, Classes, Graphics, ... ... Buttons, Grids, DBGrids, DB, ... = ... ... TBitBtn;
ADOQuery1: TADOQuery;
DataSource1: TDataSource;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
procedure AddColumn ... : ... : ... Public ... }
end;
var
dfShowLog: TdfShowLog;
implementation
{$R *.dfm}
uses
Unit1, duDataModule;
procedure TdfShowLog.AddColumn(FName, FCaption: string; ... ... ... := FName;
Title.Caption := FCaption;
Width := FWidth;
end;
end;
procedure TdfShowLog.FormCreate(Sender: TObject);
begin
with ADOQuery1 do
begin
Close;
SQL.Text :=
'SELECT evtdate, atijoni, actionname, message, rowid ' +
'FROM logs, bd_rabotniki, actions ' ... ... = ... AND ' +
' logs.action = actions.id ' ... BY ... ... ... 'Колданушы', 250);
AddColumn('actionname', 'Арекет аты', 100);
AddColumn('message', 'Сипаттамасы', 150);
AddColumn('rowid', 'Жол номері', 60);
end;
end.
unit duDataModule;
interface
uses
SysUtils, Classes, DB, ... = ... ... Private ... ... GetTempQuery : TAdoQuery;
end;
var
dm: Tdm;
implementation
{$R *.dfm}
{ Tdm }
function ... ... := ... := ... ... Windows, ... Classes, Graphics, Forms, Controls, StdCtrls,
Buttons, ExtCtrls, jpeg, DBCtrls;
type
TAboutBox = class(TForm)
Panel1: TPanel;
ProgramIcon: TImage;
ProductName: TLabel;
Version: TLabel;
Copyright: TLabel;
Comments: TLabel;
OKButton: TButton;
Label1: TLabel;
Image1: ... ... ... Private ... ... Public ... ... TAboutBox;
implementation
{$R *.dfm}
procedure TAboutBox.OKButtonClick(Sender: TObject);
begin
Close
end;
end.
unit Unit4;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, ... ... ... QRCtrls, ... = ... TQuickRep;
TitleBand1: TQRBand;
QRBand1: TQRBand;
QRMemo1: TQRMemo;
QRL_fio: TQRLabel;
QRLabel2: TQRLabel;
QRMemo2: TQRMemo;
QRLabel1: TQRLabel;
QRMemo4: TQRMemo;
QRLabel3: TQRLabel;
QRM_firma: TQRMemo;
QRM_rab: TQRMemo;
QRMemo5: TQRMemo;
QRLabel4: TQRLabel;
QRLabel5: TQRLabel;
QRShape1: TQRShape;
QuickRep2: TQuickRep;
TitleBand2: TQRBand;
SummaryBand1: TQRBand;
DetailBand1: TQRBand;
QRLabel6: ... ... ... ... ... ... TQRLabel;
QRDBText3: TQRDBText;
QRLabel10: TQRLabel;
QRDBText4: TQRDBText;
QRLabel11: TQRLabel;
QRDBText5: TQRDBText;
QRLabel12: TQRLabel;
QRDBText6: TQRDBText;
QRLabel13: TQRLabel;
QRDBText7: TQRDBText;
QRLabel14: TQRLabel;
QRDBText8: TQRDBText;
QRLabel15: TQRLabel;
QRDBText9: TQRDBText;
QRLabel16: TQRLabel;
QRDBText10: TQRDBText;
QRLabel17: TQRLabel;
QRLabel18: TQRLabel;
QRDBText11: TQRDBText;
QRDBText12: ... ... ... TQRLabel;
QRLabel21: TQRLabel;
Label1: TLabel;
Label2: TLabel;
QRMemo6: TQRMemo;
private
{ Private declarations }
public
{ Public ... ... ... ... *.dfm}
end.
unit Unit6;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms,
Dialogs, QRCtrls, QuickRpt, ... Buttons, ... ... = ... ... ... TQRLabel;
QRBand4: TQRBand;
QRMemo6: TQRMemo;
QRLabel21: TQRLabel;
QRLabel7: TQRLabel;
QRLabel1: TQRLabel;
QRLabel2: TQRLabel;
QRLabel3: TQRLabel;
QRLabel4: TQRLabel;
QRLabel5: TQRLabel;
QRLabel6: TQRLabel;
QRLabel8: TQRLabel;
QRLabel9: TQRLabel;
QRLabel10: TQRLabel;
QRLabel11: TQRLabel;
QRLabel12: TQRLabel;
QRLabel13: TQRLabel;
QRLabel14: TQRLabel;
QRLabel15: TQRLabel;
QRLabel16: TQRLabel;
QRLabel17: ... ... ... ... ... TQRLabel;
QRBand3: TQRBand;
QRLabel22: TQRLabel;
QRLabel23: TQRLabel;
QRLabel24: TQRLabel;
QRLabel25: TQRLabel;
QRLabel26: TQRLabel;
QRLabel27: TQRLabel;
QRLabel28: TQRLabel;
QRLabel29: TQRLabel;
QRLabel30: TQRLabel;
QRLabel31: TQRLabel;
QRLabel32: TQRLabel;
QRLabel33: TQRLabel;
QRLabel34: TQRLabel;
QRLabel35: TQRLabel;
QRLabel36: TQRLabel;
QRLabel37: TQRLabel;
QRLabel38: ... ... ... ... ... ... TQRLabel;
QRLabel45: TQRLabel;
QRShape1: TQRShape;
QuickRep2: TQuickRep;
QRBand5: TQRBand;
QRLabel46: TQRLabel;
QRBand6: TQRBand;
QRMemo1: TQRMemo;
QRLabel47: TQRLabel;
QRLabel48: TQRLabel;
QRLabel50: TQRLabel;
QRLabel51: TQRLabel;
QRLabel52: ... ... ... ... ... ... TQRLabel;
QRLabel60: TQRLabel;
QRLabel61: TQRLabel;
QRLabel62: TQRLabel;
QRLabel63: TQRLabel;
QRLabel64: TQRLabel;
QRLabel65: TQRLabel;
QRShape3: TQRShape;
QRLabel49: TQRLabel;
QRLabel57: TQRLabel;
QuickRep6: TQuickRep;
QRBand11: TQRBand;
QRLabel96: TQRLabel;
QRBand12: TQRBand;
QRMemo3: TQRMemo;
QRLabel97: TQRLabel;
QRLabel98: TQRLabel;
QRLabel99: TQRLabel;
QRLabel100: ... ... ... ... TQRLabel;
QRLabel105: TQRLabel;
QRLabel106: TQRLabel;
QRLabel107: TQRLabel;
QRLabel108: TQRLabel;
QRLabel109: TQRLabel;
QRLabel110: TQRLabel;
QRShape6: TQRShape;
QuickRep7: TQuickRep;
QRBand13: TQRBand;
QRLabel111: TQRLabel;
QRBand14: TQRBand;
QRLabel112: TQRLabel;
QRLabel113: TQRLabel;
QRLabel114: TQRLabel;
QRLabel115: ... ... ... ... ... ... TQRShape;
QuickRep4: TQuickRep;
QRBand7: TQRBand;
QRLabel66: TQRLabel;
QRBand8: TQRBand;
QRLabel67: TQRLabel;
QRLabel68: TQRLabel;
QRLabel69: TQRLabel;
QRLabel70: TQRLabel;
QRLabel71: TQRLabel;
QRLabel72: TQRLabel;
QRLabel73: TQRLabel;
QRLabel74: TQRLabel;
QRLabel75: TQRLabel;
QRShape4: TQRShape;
QuickRep5: TQuickRep;
QRBand9: TQRBand;
QRLabel76: ... ... ... ... TQRLabel;
QRLabel79: TQRLabel;
QRLabel80: TQRLabel;
QRLabel81: TQRLabel;
QRLabel82: TQRLabel;
QRLabel83: TQRLabel;
QRLabel84: TQRLabel;
QRLabel85: TQRLabel;
QRLabel86: TQRLabel;
QRLabel87: TQRLabel;
QRLabel88: TQRLabel;
QRLabel89: ... ... ... ... ... ... ... TQRShape;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form6: ... Unit1, ... ... ... Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms,
Dialogs, QRCtrls, QuickRpt, ExtCtrls;
type
TForm7 = class(TForm)
QuickRep1: TQuickRep;
QRBand1: TQRBand;
QRBand2: TQRBand;
QRLabel1: TQRLabel;
QRMemo1: ... ... ... ... TQRLabel;
QRLabel6: TQRLabel;
QRLabel7: TQRLabel;
QRLabel8: TQRLabel;
QRLabel9: TQRLabel;
QRLabel10: TQRLabel;
QRShape1: TQRShape;
QRLabel12: ... ... ... ... ... ... ... TQRMemo;
lbKizmet: TQRDBText;
QuickRep2: TQuickRep;
QRBand3: TQRBand;
QRLabel11: TQRLabel;
QRBand4: TQRBand;
QRMemo2: TQRMemo;
QRLabel13: TQRLabel;
QRLabel18: TQRLabel;
QRLabel19: TQRLabel;
QRLabel20: TQRLabel;
QRLabel14: TQRLabel;
QRLabel15: TQRLabel;
QRLabel16: TQRLabel;
QRLabel17: TQRLabel;
QRLabel21: TQRLabel;
QRLabel22: TQRLabel;
QRLabel23: ... ... ... ... ... ... TQRShape;
QRLabel29: TQRLabel;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form7: TForm7;
implementation
{$R *.dfm}
uses
Unit12;end.
unit Unit8;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, ... ... ... ... = ... TButton;
MonthCalendar1: TMonthCalendar;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form8: TForm8;
implementation
uses Unit1, ... ... ... TObject);
begin
MonthCalendar1.Date:=Date;
end;
procedure TForm8.Button1Click(Sender: TObject);
begin
form1.Edit1.Text:=datetostr(form8.MonthCalendar1.Date);
form8.Hide;
end;
end.
unit Unit9;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms,
Dialogs, DB, ADODB, ... DBCtrls, Grids, DBGrids, ... ... WordXP, OleServer;
type
TForm9 = class(TForm)
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
ADOQuery1: TADOQuery;
ADOTable1: TADOTable;
ADOTable2: TADOTable;
DataSource1: TDataSource;
DataSource2: TDataSource;
DataSource3: TDataSource;
GroupBox1: TGroupBox;
Label1: TLabel;
DBEdit1: TDBEdit;
DBEdit2: ... ... ... ... ... ... ... TButton;
Button4: TButton;
Edit3: TEdit;
Edit4: TEdit;
Button6: TButton;
Button7: TButton;
MonthCalendar2: TMonthCalendar;
Label3: TLabel;
Label4: TLabel;
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: ... ... ... ... ... Private ... }
public
{ Public declarations }
end;
var
Form9: TForm9;
implementation
uses Unit6, Unit1;
{$R *.dfm}
{procedure TForm9.Button1Click(Sender: TObject);
var s:string;
begin
s:='2005j';
ADOQuery1.FieldValues;
end; {
with ADOQuery1 do
begin
s:=Edit1.text;
if ADOQuery1['2006j']=s then
ADOQuery1.Locate(s,Edit1.Text,[loCaseInsensitive,loPartialKey]);
end;
procedure TForm9.Button2Click(Sender: ... ... ... ... ... ... TObject);
begin
form9.Close;
form1.show;
form1.enabled:=true;
end;
procedure TForm9.Button6Click(Sender: TObject);
begin
form9.Edit3.Text:=datetostr(form9.MonthCalendar2.Date);
end;
procedure TForm9.Button7Click(Sender: TObject);
begin
form9.Edit4.Text:=datetostr(form9.MonthCalendar2.Date);
end;
procedure TForm9.Button5Click(Sender: TObject);
begin
form6.QRLabel47.caption:=form1.DBEd_dolzh.Text;
form6.QRLabel48.caption:=form1.DBEd_fio.Text;
form6.QRLabel49.Caption:=form1.DBED_dat.Text;
form6.QRLabel52.caption:=form1.Edit1.Text;
{form6.QRLabel53.caption:=form1.DBED_dat.Text;}
form6.QRLabel55.caption:=form1.Edit1.Text;
form6.QRLabel59.caption:=form1.DBEd_fio.Text;
form6.QRLabel60.caption:=form1.DBEd_dat.Text;
form6.QuickRep2.Preview;
end;
procedure TForm9.FormCreate(Sender: ... := ... := ... := ... ... ... SysUtils, Variants, Classes, Graphics, ... ... ... ADODB, DB, ExtCtrls, DBCtrls, Grids,
DBGrids,
Mask;
type
TForm10 = ... ... ... ... ... TEdit;
Edit2: TEdit;
Button1: TButton;
Button2: TButton;
DataSource2: TDataSource;
DataSource3: TDataSource;
DataSource4: TDataSource;
ADOTable2: TADOTable;
ADOTable3: TADOTable;
ADOTable4: TADOTable;
DataSource5: TDataSource;
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Button3: TButton;
Button4: ... ... ... ... ... ... TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form10: TForm10;
implementation
uses Unit7, Unit1;
{$R *.dfm}
procedure TForm10.Button1Click(Sender: ... ... ... ... TObject);
begin
form7.QRLabel18.caption:=form10.DBEdit4.Text;
form7.QRLabel19.caption:=form10.DBEdit2.Text;
form7.QRLabel20.caption:=form10.DBEdit1.Text;
form7.QRLabel15.caption:=form10.Edit1.Text;
form7.QRLabel17.caption:=form10.Edit2.Text;
form7.QRLabel22.caption:=form10.DBEdit3.Text;
form7.QuickRep2.preview;
end;
procedure TForm10.Button4Click(Sender: TObject);
begin
form10.Close;
form1.Show;
form1.enabled:=true;
end;
procedure TForm10.FormCreate(Sender: TObject);
begin
ADOQuery1.Active := True;
ADOTable2.Active := True;
ADOTable3.Active := True;
ADOTable4.Active := True;
end;
end.
unit ... ... ... ... Classes, ... Controls,
Forms,
Dialogs, StdCtrls, jpeg, ExtCtrls, Buttons;
type
TForm11 = class(TForm)
Image1: TImage;
SpeedButton1: TSpeedButton;
procedure ... ... Private ... ... Public declarations }
end;
var
Form11: TForm11;
implementation
uses Unit1, duLogin, unit3,unit4, Unit5, Unit2, Unit8, Unit10, Unit9,
Unit12, Math, Unit6, ... ... ... ... ... ... SysUtils, Variants, Classes, Graphics, Controls,
Forms,
Dialogs, StdCtrls, Grids, DBGrids, DB, ADODB;
type
TForm12 = ... ... ... ... TADOQuery;
dsGetVacant: TDataSource;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
// procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form12: ... Unit6, Unit1, Unit7, ... ... ... ... qrGetVacant do
begin
Close;
SQL.Text :=
'SELECT bd_rabotniki.idkizmet, kizmetter.kizmet,
kizmetter.vacant, ' +
' ... ... ' ... ... bd_rabotniki ' +
'WHERE bd_rabotniki.idkizmet = kizmetter.id ' +
'GROUP BY ... ... ' ... ... > 0 ' ... BY ... ... do
begin
with Add do
begin
Title.Caption := 'Кызмет атауы';
FieldName := 'kizmet';
Width := 400;
end;
with Add do
begin
Title.Caption := ... ... := ... := ... TForm12.Button1Click(Sender: TObject);
begin
Form7.lbKizmet.DataSet := Form12.qrGetVacant;
Form7.lbKizmet.DataField := 'kizmet';
Form7.QuickRep3.Preview;
end;
end.
Кабланбекова Б.А., Кабланбеков Б.М.
Delphi және мәліметтер қоры
Оқу құралы
Шығарылуға жауапты
|Басуға 22.06.2010 қол ... ... ... ... ... 7 |
|қойылды | | ... ... ... 7,18 ... 50 дана ... Бағасы |
| | ... |
© ... ... ... ... мемлекеттік университеті
-----------------------
Студент
Ст.бил.нөм аты-жөні
Адрес
...
Кафедра
Каф. нөмірі, каф. атауы, каф.меңг-сі
фак. Атауы
мам-қ нөмірі
Факультет
Фак. нөмірі фак. атауы деканы
Мамандық
Ст.бил.нөм мам-қ нөмірі
Топ шифры
маман-қ атауы
Староста
топ шифры, ... ... ... ... ... ... ... кестелер
Файлдар
Мәліметтер қоры
OLE DB
ADO
ADO-ны қолданып отырған қосымша
МАМАНДЫҚ
Spez
Fakult
Kurs
Group
N_bilet
N_dog
АҚЫ
N_dog forma_opl summ
Lgota
vid_lgot
ЖАТАҚХАНА
N_bilet
Obshag
srok_proj
data_viezda
N_kom
СТУДЕНТ
N_blilet
Fio
Data
Naz
adres
Төленеді
Бөлінеді
оқиды
АҚЫ
МАМАНДЫҚ
ЖАТАҚХАНА
СТУДЕНТ
Көрсеткіштердің алгоритмдік байланыстары
Қолданушы-
лардың талаптары
Шектеулер жиыны
Объектілер жиынтығы олардың арасындағы байланыс
Инфологиялық ... ... ...

Пән: Информатика
Жұмыс түрі: Дипломдық жұмыс
Көлемі: 100 бет
Бұл жұмыстың бағасы: 900 теңге









Ұқсас жұмыстар
Тақырыб Бет саны
Delphi және мәліметтер қоры сервері31 бет
Delphi және мәліметтер қоры сервері. мәліметтерге ado арқылы қатынау26 бет
Delphi ортасында мәліметтер қорымен жұмыс39 бет
Delphi программалау ортасы және мәліметтер қоры34 бет
Delphi программалау ортасында Қазақстан туралы мәліметтер қорын даярлау 51 бет
Delphi-де мәліметтер қорымен байланысты ұйымдастыру55 бет
Delphi-де мәліметтер қорын құру технологиялары6 бет
Delphi-де мәліметтер қорын құру технологиялары жайлы11 бет
Delphi-де мәліметтер қорын құру технологиялары жайлы ақпарат7 бет
Delphi-де мәліметтер қорын құру технологиялары жайлы мәлімет4 бет


Исходниктер
Пәндер
Көмек / Помощь
Арайлым
Біз міндетті түрде жауап береміз!
Мы обязательно ответим!
Жіберу / Отправить


Зарабатывайте вместе с нами

Рахмет!
Хабарлама жіберілді. / Сообщение отправлено.

Сіз үшін аптасына 5 күн жұмыс істейміз.
Жұмыс уақыты 09:00 - 18:00

Мы работаем для Вас 5 дней в неделю.
Время работы 09:00 - 18:00

Email: info@stud.kz

Phone: 777 614 50 20
Жабу / Закрыть

Көмек / Помощь