Мәліметтер қоры кестесімен жұмыс
МАЗМҰНЫ
Кіріспе 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 ортасында локальды деректер қорын қолданып ақпараттық жүйелер
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
КІРІСПЕ
Оқу құралы 5В011100-«Информатика» мамандығының студенттеріне жүргізілетін «Мәліметтер қоры және
Қазіргі қолданбалы программаларды дайындау технологияларының өте мықтылығына қарамастан, егер
1 Мәселенің қойылымы
2 Мәселелердің шешілу тәртібін анықтау
3 Алғашқы мәліметтерді таңдау
4 Мәліметтер құрылымын анықтау
5 Қолданбалы программа дайындау
6 Программаның дұрыстығын бақылау, жетілдіру.
Бұл кезеңдерді локальды мәліметтер қорын қолданып BorlandDelphi7 ортасында орындау
Оқу құралында келтірілген әр мысалдың Дельфи тілінде жобалық
1 МӘЛІМЕТТЕР ҚОРЫН ЖОБАЛАУ ЖӘНЕ АҚПАРАТТЫҚ ЖҮЙЕЛЕР
Мәліметтер қоры қандай да бір пәндік аумақ, яғни адам
Мәліметтер қорын жобалау келесі пункттерден тұрады:
1 Мәліметтер қорының ақпараттық қажеттілігін анықтау
2 Мәліметтер қорында үлгілейтін шынайы әлемнің объектілерін – пәндік аумақты
3 Мағыналар мен мінездемелер арасында сәйкестік жасау – таңдалынған МҚБЖ-не
4 Әрбір объектіні ерекше-уникалды түрде анықтайтын атрибуттарды анықтау
5 Мәліметтердің толықтылығын қамтамасыз ететін ережелерді құрастыру.
6 Объектілер арасында байланыс орнату. Кестені қалыптандыру.
7 Мәліметтердің қауіпсіздігін қамтамасыз ететін сұрақтарды жоспарлау
Мәліметтер қорын құру кезінде басты назар аударатын нәрсе –
1.1 Деректердің шамадан тыс қайталануы және аномалиялар
Деректердің шамалы (қарапайым) және шамадан тыс қайталануы болады. Қарапайым
1-кесте- Қызметкерлер және Телефон қатынасы
Қызметкер есімі Телефоны
Алия 525458
Ғалия 525458
Берік 525458
Серік 562651
Мұндағы 525458 нөмірінің бірнеше адам үшін қайталануы қарапайым қайталану
ҚТБ-қатынасы (Қызметкер, телефон, бөлме) бар болсын.
2-кесте- Қызметкер, телефон, бөлме қатынасы
Қызметкер есімі Бөлме Телефоны
Алия 111 525458
Ғалия 111 525458
Берік 111 525458
Серік 112 562651
3-кесте - Қызметкер, телефон, бөлме қатынасы
Қызметкер есімі Бөлме Телефоны
Алия 111 525458
Ғалия - -
Берік - -
Серік 112 562651
2-кестеде деректердің шамадан тыс қайталануы бар. Одан құтылу үшін
4-кесте - Телефон-Бөлме қатынасы
Телефоны Бөлме
525458 111
562651 112
5-кесте - Қызметкер-Бөлме қатынасы
Қызметкер есімі Бөлме
Алия 111
Ғалия 111
Берік 111
Серік 112
Әр бөлменің телефоны МҚ-на бөлек жазылады да басқа қатынасқа
Деректердің шамадан тыс қайталануы картеждерді өңдеу кезінде қиындықтар туындатады,
Аномалия дегеніміз МҚ-да деректерді өңдеуді қиындататын, қайшылықтар туындадатын процестер.
Аномалияның 3 түрі болады:
1 жөндеу
2 өшіру
3 жаңадан қосу
Жөндеу аномалиясында деректің бір мәнін жөндеу үшін барлық қатынас
Өшіру аномалиясы қатынастан қандай да бір деректі өшірген уақытта
Жаңадан қосу аномалиясы қатынас толық толтырылғанға дейін жаңа деректерді
1.2 Ақпараттық жүйелерді жобалау
Ақпараттық жүйелерді үйренген кезде мәліметтер қорының алатын орны ерекше.
Концептуалдық жобалау - программада қарастырылатын негізгі мәселелер мен
Логикалық жобалау - ER–диаграмма негізінде реляциялық жүйелердің мүмкіндігі ескерілген
Физикалық жобалау - мәліметтер қорын басқару жүйелері
Пәндік аймақты модельдеу төмендегідей кезеңдерден тұрады: инфологиялық модельді
Ақпараттық жүйелерді жобалау жұмысы барысында құрылған инфологиялық модель негізінде
Оның инфологиялық модельден айырмашылығы жүйедегі құбылыстар уақыт мерзімі бойынша
1-cурет - Инфологиялық модельдің негізгі бөлшектері
Мәліметтер қорының концептуалды жобалануы.
Мәліметтер қорын жобалаудағы үрдістің бірінші фазасы кәсіпорынның талданатын бөлігі
Осы орайда келесі мысалды қарастырайық. «ШҚМУ студенттері» мәліметтер қорын
1-кезең. Концептуальды жобалау кезеңі.
Бұл кезең жалпы мәні бар, жауапты және программистен, мәліметтер
Бұл кезеңнің мақсаты: ақпараттық қажеттілік және қолданушының концептуальдық талаптарын
2-кезең. Заттық аумақтың сипаттамасы.
Мәліметтер қорын құрастырудың алдында заттық аумақты қарастырып аламыз. Мәліметтер
6-кесте-Заттық аумақтың атрибуттар жиыны
№ Атрибуттар атаулары Идентификатор
1 2 3
1 Студенттердің аты-жөні Fio
2 Туған датасы data
3 Ұлты Naz
4 Факультет fakult
5 Мамандығы Spez
6 Курс Kurs
7 Топ Group
8 Мекен-жайы Adres
9 Келісім нөмірі (оқуға ақы төлеуге арналған) N_dog
10 Ақы төлеу түрі Forma_opl
11 Ақы сомасы Summ
12 Жанұялық жағдайы Sem_pol
13 Жеңілдіктер Lgota
14 Жеңілдік түрі Vid_lgot
15 Жатақхана Obshag
16 Жатақханада тұру мерзімі Srok_proj
17 Жатақханаға орналасу мерзімі Data_viezda
18 Бөлме нөмірі N_kom
19 Студенттік билет нөмірі N_bilet
3-кезең. Заттық аумақтың мінездемесі.
Студенттерді тіркеу бөлімі ШҚМУ студенттері туралы деректерді сақтау және
4-кезең. Заттық аумақтың шектеулері және мүмкіндіктері.
Бұл заттық аумаққа қатысты келесі шектеулер мен мүмкіндіктер қолдануға
1 Студенттік билеттің нөмірі 5 символдан тұрады, онда топ
2 Ақы төлеу келісімінің нөмірі 5 символдан тұрады, онда
3 Жеңілдіктер былай анықталады:
- алғашқы төленген ақы сомасы ескеріледі
- жазғы және қысқы сессияның қортындысы ескеріледі
- жанұялық жағдайы ескеріледі
4 Жатақхана тек қана басқа қаладан келген студенттерге беріледі
5-кезең. Заттық аумақтың ER-диаграммасын тұрғызу.
ER-диаграмманы тұрғызу үшін заттық аумақтың объектілерін, атрибуттық құрамын анықтау
1 Студент (fio, data, naz, adres, N_blilet)
2 Мамандық (fakult, spez, kurs, group, N_bilet, N_dog)
3 Ақы (N_dog, forma_opl, summ, lgota, vid_lgot)
4 Жатақхана (N_bilet, obshag, srok_proj, data_viezda, N_kom)
Алынған мағыналық кестелер арасында келесі байланыстар болады:
студент оқидымамандық
мамандық төленедіақы
жатақхана бөлінедістудент
ER-диаграмма қортындысынан 2-суреттегі сызбаны аламыз.
2–сурет-ER-диаграмма
6-кезең. Логикалық жобалау кезеңі.
Бұл кезеңде қандай да бір таңдалынып алынған МҚБЖ құралымен
Деректер моделін таңдау.
Деректер моделі – деректер форматы және оларға қолдануға болатын
Деректердің иерархиялық, желілік, реляциялық модельдері бар.
Кез келген модельде 3 негізгі компонент болады:
1 деректер структурасы – қолданушының көзқарасын сипаттайды.
2 деректер структурасына қолданылатын амалдар
3 толықтылықты шектеу – формальды түрде сипатталған деректер структурасы
Бұл жобада деректердің реляциялық моделі қолданылады, себебі онда байланыс
Деректер структурасы.
Бұл модель негізінде қатынас ұғымы бар, ол деректерді модельдеу
Кесте жолдары картеж деп аталады, ол бір объектіні сипаттайды,
Толықтылықты шектеу.
Мұнда 2 негізгі талап бар:
1 Сілтемелер толықтылығы – күрделі объектілер реляциялық мәліметтер қорында
2 Мазмұнды толықтылық – кез келген қатынастың әрбір картежі
Берілген мәліметтер қорының ақпараттық объектілерін келесі сәйкес кілттері мен
Студент қатынасы -
N_bilet fio data naz adres ...
Мамандық қатынасы-
spez fakult kurs group N_bilet N_dog ...
Ақы қатынасы -
N_dog Forma_opl summ lgota Vid_lgot Sem_pol
Жатақхана қатынасы
N_bilet obshag Srok_proj Data_viezda N_kom
Қатынастарды қалыптандыру.
Қалыптандыру деп қарастырылып отырған қатынаста қажет емес функционалдық тәуелділіктен
Толық ФТ.
ФТ толық деп аталады, егер Б атрибуты кез келген
Транзитивті ФТ.
ФТ транзитивті деп аталады, егер АС және СБ
Екі немесе одан көп атрибуттар өзара байланыссыз болады, егер
Қатынастың атрибуттар құрамы келесі талаптарды қанағаттандыруы керек:
1 атрибуттар арасында қажетсіз ФТ болмауы керек.
2 атрибуттарды топтау деректердің минималды қайталануын, олардың бөгетсіз жаңалануы
Бұл талаптарды қанағаттандыру қатынасты қалыптандыруды білдіреді.
Ұсынылып отырған жобада қатынастар 3-ші қалыпты формада, себебі барлық
Деректердің даталогиялық моделі.
Бұл кезеңде қатынастың атрибуттық құрамы толық ашылады (7-10 кестелер):
7– кесте - Студент қатынасы
Атрибут Деректер типі Символ саны
Fio Мәтін 20
Data Мерзім Автоматты түрде
Naz Мәтін 10
Adres Мәтін 25
N_bilet Санаушы +
8 – кесте - Мамандық қатынасы
Атрибут Деректер типі Символ саны
Fakult Мәтін 50
Spez Мәтін 7
Kurs Бүтінсан Автоматты түрде
Group Мәтін 5
N-bilet Бүтінсан Автоматты түрде
N_dog Мәтін 5
9 – кесте - Ақы қатынасы
Атрибут Деректер типі Символ саны
N_dog Мәтін 5
Forma_opl Мәтін 20
Summ Бүтінсан Автоматты түрде
Lgota Мәтін 3
Vid_lgot Мәтін 50
10 – кесте - Жатақхана қатынасы
Атрибут Деректер типі Символ саны
N_bilet Мәтін 5
Obshag Мәтін 3
Data_viezda Мерзімдік Автоматты түрде
Srok_proj Мәтін 15
N_kom Мәтін 4
Келесі кезеңде деректердің логикалық моделі қатынастар схемасы түрінде
Бұл құрылатын қорда аномалия жоқ, кестелер қалыптандырылған болып саналады.
Үлкен көлемді мәліметтерді сақтау, өңдеу және іздеу үшін компьютерде
Мәліметтер қорын басқару жүйесі (МҚБЖ) – бағдарламалық жабдық, оның
3-сурет - Реляциялық мәліметтер қоры кестелерінің байланыс сызбасы
істейтін локальді (желілік) мәліметтер қорын құруды қамтамасыз етеді. Дербес
2-БӨЛІМ. DELPHI ОРТАСЫНДА МӘЛІМЕТТЕР ҚОРЫНА РҰҚСАТ АЛУ МЕХАНИЗМДЕРІ
Delphi7 бағдарламалау ортасында бірнеше мәліметтер қорына қатынау механизмдері бар:
BDE және ODBC механизмдері
Delphi көмегімен құрылған және файл-серверлік мәліметтер қорымен жұмыс істеуге
Компьютерде BDE орнатылмаса және тіркелмесе Delphi-де жасалған және BDE
BDE механизміне ұқсас ODBC (Open Data Base Connection –
Microsoft фирмасының өңдеуімен жасалынған МҚБЖ мүмкіндіктерінің өзара байланысы болып
ODBC механизмінің негізгі тағайындалуы: қосымшаларды абстрогирлейді, яғни сол арқылы
ODBC механизмінің артықшылығы болып оның қосымшаларды өңдеудегі қарапайымдылығы және
Негізгі МҚБЖ-ның мүмкіндіктерін пайдаланып, клиент-серверлік қосымша, ал SQL Server-дің
Негізгі кемшілігі мәліметтер қорына қатынау жылдамдығын баяулататын сұраныстар трансляциясы
Delphi7-де BDE мен ODBC- ден басқа кеңірек қарастырылып отырған
ADО механизмі.
Delphi-де мәліметтер қорына қатынаудың Borland Database Engine және
ADO технологиясы әмбебаптылығының арқасында өңдеушілер арасында танымалдылыққа ие болды.
Delphi компоненттерінің палитрасында мәліметтерге ADO арқылы қатынасатын, мәліметтер қорының
Microsoft ActiveX Data Objects (ADO) МҚ қосымшаларынан мәліметтерге
Мысалы, ADO-ны қолданатын қосымша корпоративті SQL серверде сақталатын мәліметтерге
Мынадай сұрақ туындауы мүмкін: бұл сұранысты деректер көзі қалай
МҚ серверлерін көп ойлап қажеті жоқ, SQL сұраныстарын өңдеу
ADO технологиясына сәйкес кез келген дерек көзі (мәліметтер қоры,
Жалпы, ADO технологиясы тек өзіне OLE DB объектілерін ғана
Мұндай архитектура объектілер жиынтығы мен интерфейсті ашып әрі кеңейтеді.
ADO негізі
4–сурет-Мәліметтерге ADO арқылы қатынау схемасы
ағаштық құрылымдар немесе CASE – құралдарының деректері және т.б.
ADO технологиясы Windows-тің жүйелік механизмі болып табылатын СОМ стандартты
OLE DB спецификациясы объектілерді келесі типтерге бөледі:
- Тізімдеуші (Enumenator) дректер көзін немесе басқа да тізімдеуіштерді іздестіреді.
- Деректер көзі объектісі (Data Source Object) деректер қоймасын
- Сессия(Session) бір деректер қоймасына жүгінетін объектілер жиынтығын біріктіреді;
- Транзакция (Trasaction) транзакцияны орындау механизмдерін инкапсулирлейді;
- Команда (Command) өзінің бұйрық мәтініне ие және оның орындалуын
- Қатарлар жиыны (Rowset) - ADO бұйрығының орындалу нәтижесі болатын
- Объект қатесі (Error) ерекше жағдай жайлы ақпаратты қамтиды.
Өзін өзі бақылау сұрақтары
1. Дельфи ортасында деректер қоры кестесіне қалай қатынауға болады.
2. Рұқсат алу механизмдері деген не?
3. InterBase механизмі қалай жұмыс істейді?
4. BDE механизмі қалай жұмыс істейді?
5. ODBC механизмі қалай жұмыс істейді?
6. ADO механизмі қалай жұмыс істейді?
2.1 ADO провайдерлері
ADO провайдерлері мәліметтерді ADO арқылы қолданатын қосымшаны деректер көзімен
Провайдер деректер қоймасының қайда орналасқанын және оның мазмұнын «біледі»,
Операциялық жүйеде орнатылған провайдерлер тізімі TADOConnection компонентімен байланыс орнатқан
Microsoft ActiveX Data Objects инсталляциясы кезінде операциялық жүйеде келесі
- Microsoft Jet OLE DB Provider ОАО технологиясының жабдықтауымен Access
- Microsoft OLE DB Provider for Microsoft Indexing Service
- Microsoft OLE DB Provider for Microsoft Active Directory
- Microsoft OLE DB Provider for Internet Publishing, Microsoft
- Microsoft Data Shaping Service for OLE DB мәліметтердің
- Microsoft OLE DB Simple Provider OLE DB-ның тек
- Microsoft OLE DB Provider for ODBC drivers ODBC
Бірақ осындай жат нұсқалар байланысын пайдалану қиындыққа әкеледі. ODBC
ADO-ны Dеlphi-де жүзеге асыру.
Мәліметтерге ADO арқылы қатынасатын механизмдер, көптеген объектілер, интерфейстер, Dеlphi-дің
ADO компоненттері.
TADOConnection компоненті тізімдеуіштің, деректер көзінің және транзакцияны қабылдау мүмкіншіліктері
Қатарлар тізімін TADOTable, TADOQuery, TAOostoredProc компоненттерінің көмегімен алуға болады.
ADO компоненттерінің әдістері мен қасиеттері МҚ қосымшасына қажет барлық
ADO деректер көзімен байланыстыратын механизмдер.
ADO мәліметтеріне қатынайтын компоненттер деректер көзіне байланысатын екі нұсқаны
Бірінші жағдайда, деректер көзіне тікелей қатынау үшін компоненттер connectionstring
Соnnectionstring қасиеті ADO объектісімен байланысатын ақпаратты сақтауға арналған. Мұнда
Connectionstring:='Remote Server=ServerName;Provider=ProviderName';
Қажет жағдайда қашықтатылған провайдер жолы :
Connectionstring:='Remote Provider=ProviderName';
және провайдерге қажетті параметрлер көрсетіледі:
'User Name=User_Name;Password=Password';
ADO деректер көзіне қатынайтын әр компонент Соnnectionstring қасиетінде байланыс
Бұл технологияны қолданып, Қазақстандағы кадрлық іс жүргізу жұмысын автоматтандыруды
Өзін өзі бақылау сұрақтары
1 Провайдер деген не? Атқаратын қызметі?
2 ADO провайдерлері деген не?
3 Қандай стандартты провайдерлер бар?
4 ADO-ны Dеlphi-де қалай жүзеге асырады?
5 ADO компоненттері деген не? Оларды ата.
6 ADO деректер көзімен байланыстыратын механизмдері қандай?
3-БӨЛІМ. МӘЛІМЕТТЕР ҚОРЫН ҚҰРУ ЖӘНЕ БАСҚАРУ
Қолданылатын мәліметтер қоры бір немесе бірнеше кестелерден тұрады.
Мысалы: vkgu каталогын оның ішінде Primer алиасын құру
1 Жоғарғы мәзірдің TOOLS – DATABASEDESKTOP командасын орындаймыз.
2 Пайда болған терезеде TOOLS – ALIAS MANAGER – NEW
3 Осы терезенің драйвер типі жолында DRIVERTYPE – STANDART деп
4 Осы терезедегі BROWSE батырмасын басып құрылған қапшық жолын көрсетеміз
5 Алиасты BDE-ге жіберу керек пе? Сұрағына «ИӘ» деп жауап
3.1 Мәліметтер қоры кестелерін құру және басқару
Жаңа кесте құру.
File – New – Table командасын орындаймыз.
1 Кесте форматын таңдау үшін TableType жолында Paradox7 дегенді көрсетіп
2 Келесі терезеде кестенің құрылымын анықтаймыз. Кестенің құрылымы кестеге енетін
Alpha – мәтіндік өріс, ұзындығы 255 символға дейін .
Number – нақты тип, -10307 нен +10308 дейін.
$(Money) – ақшалық тип, алдыңғы тип сияқты.
Short – қысқа бүтін тип, -32768 ден +32767
LongInteger – ұзақбүтін тип, -2147483648 ден +2147483647 дейін.
#(BCD) – жоғарғы дәлдіктегі нақты тип.
Date – дата типі.
Time – уақыт типі.
@(Timestamp) – дата және уақыт типі.
Memo – ұзақ мәтіндік тип, ұзындығы 255 символдан артық.
Formatted Memo – форматталған мәтіндік тип (һаріп – шрифт
Graphic – Графикалық тип.
OLE (Object Linking and Embedding) – осы технологияны ұстанатын
Logical – логикалық тип.
+(Autoinctement) – санаушы, автоматты түрде мәні 1-ге өсіп отырады.
Binary – еркін ұзындықтағы екілік деректер типі.
Кілттік өрістің атауы тізімде бірінші орналасып соңына ID әріптері
Осы терезеде өрістердің қасиеттері көрсетіледі:
Required Field – міндетті түрдегі өріс.
Minimum Value – минималды мәні (сандық әрістер үшін).
Maximum Value – максималды мәні (сандық әрістер үшін).
Default Value – үндемеген немесе атап көрсетпеген жағдайда шығатын
Picture – енгізу маскасы.
Кестені сақтау үшін Save As батырмасын басып шыққан терезеде
Кестенің әрбір жолы өріспен сәйкес келеді. Бағаналардың тағайындаулары:
Fields Name - өріс аты;
Type - өріс типі;
Size - өріс өлшемі (жолдардың өрісі үшін);
Key - '*'жұлдыздан құралады, егер өріс алғашқы кілттің
Кестені құру шеберін қолдану
Деректер қоры кестесін құру үшін Database Desktop (DBD)
Жұмысшы псевдонимін орнату үшін бас менюдан File|Working Directory
Осыдан кейін деректер қоры (ДҚ) кестесінің структурасын анықтау терезесі
Кесте құрылымын анықтау. ДҚ кестесін құру үшін бас
FIO өрісінің типін Alpha деп таңдаймыз және Size
Дәл осылайша n_bilet өрісін енгіземіз. Бұл студенттердің билет нөмірі
5–сурет - Database Desktop утилиті: ДҚ кестесінің құрылымын анықтау
көмегімен тістеп алып, тізімнің басына көтереміз.
6–сурет - Өріс типін таңдау
Student кестесінің басқа бағаналарына анықтамаларды 6-суретке
- Minimum value - өрістің ең минималды мәнін анықтайды
- Maximum value - өрістің барынша үлкен мәнін анықтайды
- Default value – өріс мәнін үндемей өзі анықтайды
7-сурет-Materialy кестесінің құрылымын анықтау
Picture – өрістің бейнелену шаблонын анықтайды. Шаблон құру
Төменде келтіріліп отырған қатынастарды қолдана отырып және 7-суретті басшылыққа
мамандық қатынасы
Атрибут Деректер типі Символ саны
Fakult Мәтін 50
Spez Мәтін 7
Kurs Бүтінсан Автоматты түрде
Group Мәтін 5
N-bilet Бүтінсан Автоматты түрде
N_dog Мәтін 5
ақы қатынасы
Атрибут Деректер типі Символ саны
N_dog Мәтін 5
Forma_opl Мәтін 20
Summ Бүтінсан Автоматты түрде
Lgota Мәтін 3
Vid_lgot Мәтін 50
жатақхана қатынасы
Атрибут Деректер типі Символ саны
N_bilet Мәтін 5
Obshag Мәтін 3
Data_viezda Мерзімдік Автоматты түрде
Srok_proj Мәтін 15
N_kom Мәтін 4
Кестелерді толтыру және есте сақтау. Кесте құрылымын
8-сурет-Кестені сақтау терезесі
Құрылған кесте құрылымын өзгерту.
Егер ДҚ бар кестелерге өзгерістер енгізу керек болса, File|Open|Table
9-сурет-Student кестесінің мазмұны
Біз DBD-дан кестені жаңа жазбамен толтырғымыз келсе F9 батырмасын
Кесте құрлымын өзгерткіміз келсе Table|Restructure меню элементін таңдаймыз. Ізінше
Кестені индекстеу.
Кесте деталі болып табылатын екінші кесте ("mamandik") құрылымын анықтаймыз
11-кесте - «мамандық» қатынасының кестелік моделі
Атрибут Деректер типі Символ саны
Fakult Мәтін 50
Spez Мәтін 7
Kurs Бүтінсан Автоматты түрде
Group Мәтін 5
N-bilet Бүтінсан Автоматты түрде
N_dog Мәтін 5
Өз еркімізбен кесте жазбаларын санаушы ретінде Number өрісін кілттік
10-сурет-Mamandik кестесінің құрылымы
«mamandik» кестесін байланыстырушы кілт екенін бақылауға болады. Тағы бір
Ескерту.
Өте сирек кездесетін жағдай, бірақ мұны Сіздерге қарапайым түрде
Ол студент өзіне студенттік билет алсын, бірақ ол студент
10а-сурет-Байланыстырылатын «student», «mamandik» кестелері
Бұл екі кестелерді байланыстыру үшін байланыс дәрежесін анықтау керек.
- бірге - бір;
- бірге - көп;
- көпке – бір;
- көпке – көп.
Егер «student» кестесі мен «mamandik» кестесі «бірге-бір» байланыс дәрежесімен
кестені өзгеріссіз қалтырып, бағынышты кестенің структурасын ашамыз (құрал-жабдықтар
11-сурет-Secondary Indexes элементі
Жаңа индекс құру үшін, Define батырмасын басамыз. Ашылған диалогтық
12-сурет-Индекс құрамына кіретін өрістерді анықтау
Бұл терезедегі Indexed Fields бөлігіне біз қай сыртқы кілт
Құрылған индексті осы терезеде бірден көруге болады, егер оны
Егер «student» кестесі мен «mamandik» кестесі «бірге-көп» байланыс дәрежесімен
13-сурет-Индексті сақтау терезесі
(құрал-жабдықтар тақтасындағы Restructure пернесін басу арқылы) да, структура терезесінің
14-сурет-«mamandik» кестесі үшін анықталған индекс
Сілтемелі толықтылықты сақтау
Есептің қойылымынан белгілі болғандай «student» кестесі мен «mamandik» кестесі
14а-сурет-Сілтемелік толықтылық командасын таңдау терезесі
Сілтемелік толықтылықты құруды әрі қарай жалғастыру үшін Table Properties
15-сурет-Сілтемелік толықтылықты құруға арналған терезе
Бұл терезенің Fields бөлімінде бағынышты кестенің өрістер тізімі келтірілген,
Бұл терезедегі Cascade командасы қосылса – бағынышты кестеден жазуларды
16-сурет-Сілтемелік толықтылық шартын анықтау
таңдап Ok пернесін басамыз.
Өзін өзі бақылау сұрақтары:
1 Деректер қоры структурасы деген не?
2 Дельфи ортасында деректер атрибуты немесе өрістерінің қандай типтері
бар?
3 Деректер қоры альясы деген не? Ол қалай құрылады?
4 Деректер қоры кестесі қалай құрылады?
5 Индекс деген не? Оның қандай түрлері бар? Кестені
орындалады?
6 Сілтемелік толықтылық деген не? Байланысқан кестелер қалай
индекстеледі?
7 Деректер қоры структурасын қалай жөндейді?
8 Кестелерді жазулармен қалай толтырады?
3.2 Мәліметтер қоры кестесімен жұмыс
DataAccess компоненттер панелінен Ttable компонентін қалыпқа орналастырамыз. Осы объектіні
1 Мәліметтер қорының атауы DatabaseName жолында жазылады (Мысалы Primer).
2 Ttable компонентімен байланысқа түсетін кестені көрсету TableName жолында
3 Осы кестеге программа арқылы қатынасу керек болса Active жолында
Осы операциялардан кейн қалыпқа орнатылған компонент көрсетілген мәліметтер қоры
Мәліметтерді өңдеуге қолданылатын компоненттер.
1 Деректер кестесі деп аталатын DBGrid компоненті
Мәліметтер қоры кестесіндегі жазуларды өшіру, жөндеу, жаңа жазу қосу
2 Навигатор компоненті DBNavigator
Бұл компонент кестенің жазуларын навигациялау үшін қолданылады. Навигация жазу
1) First – бірінші жазуға жылжу
2) Prior – алдыңғы жазуға жылжу
3) Next – келесі жазуға жылжу
4) Last – соңғы жазуға жылжу
5) Insert – көрсеткіш орналасқан жазу орнына жаңа жазу қою
6) Delete – ағымдағы жазуды өшіру, егер ConfirmDelete қасиетін True
7) Edit – ағымдағы жазуды жөндеу
8) Post – кестеге енгізілген өзгертулерді сақтау
9) Cansel –енгізілген өзгертулерді сақтамау
10) Refresh – мәліметтер қорынан мәліметтердіжаңадан оқып кестенің жазуларын жаңарту.
3 Деректер тақырыбы (надпись) компоненті DBText:
Ұзақ мәтін сақталған өріс жазуларын көрсету, өзгерту үшін қолданылады.
4 Жөндеу өрісі компоненті DBEdit:
Ағымдағы жазуды өзгерту, көрсету үшін қолданылады. Алдыңғы компонентке ұқсас.
5 Бейне компоненті DBImage:
Мәліметтер қорында сақталған бейнелерді, суреттерді экранға шығаруды орындайды. Егер
6 Деректер тізімін қолдану компоненті DBComboBox:
Бұл компонент ашылған тізімнен (сұламалы) деректі таңдау, қолдануды орындайды.
7 Деректер жалаушасы (флажок) компоненті DBCheckBox:
Бұл компонент көмегімен екі жағдайдың бірін қабылдайтын өрістердің мәндерін
8 Мәліметтерді топтап ауыстырып-қосу (группа переключателей) компоненті DBRadioGroup:
Бұл компонент өрістің шектелген міндер жиынын көрнекі түрде шығаруды
Кестені шығару.
Кестені экранға екі түрде шығаруға болады: торкөз түрінде, жеке
17-сурет-Student.db кестесін торкөз түрінде шығару қалыбы
Ол үшін қалыпқа DataAccess қатпарынан DataSource1, BDE қатпарынан table1,
Енді «student» кестесін экранға бір жазбадан шығаруды қарастырайық. Ол
1) Мәліметтер қорының атауы DataBaseName - Primer деп.
2) Кесте атауын TableName – Student.db деп.
3) Кесте активті болсын Active - True деп.
4) TdataSource1 ді белгілеп, DataSet қасиетін - Table1 деп.
DataControl панелінен қалыпқа DBGrid компонентінің орнына қажетінше DBEdit
Student.db кестесінің структурасына өзгерістер енгізейік. Ол үшін осы кестені
Сосын қайта қалыпқа көшіп, DBMemo, DBImage компоненттерін қоямыз
17а-сурет-Student.db кестесіндегі жазбаларды бір-бірден шығару қалыбы
Dialogs панелінен OpenPictureDialog1 компонентін қалыпқа әкелеміз. DBImage1 компонентін белгілеп,
Begin
If OpenPictureDialog1.Execute then begin
Table1.Edit;
DBImage1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
Table1.Post;
End;
Бағдарламаны орындауға жіберіп, орындалу режимінде мінездеме деген мемо-өрістің алаңына
Өзін өзі бақылау сұрақтары
1 Деректер қорымен жұмыс істеуге арналған қандай қатпарлар бар?
2 DВGrid компоненті не үшін қолданылады? Қасиеттері қандай?
3 DBNavigator компоненті не үшін қолданылады? Қасиеттері қандай?
4 DBText компоненті не үшін қолданылады? Қасиеттері қандай?
5 DBEdit компоненті не үшін қолданылады? Қасиеттері қандай?
6 DBImage компоненті не үшін қолданылады? Қасиеттері қандай?
7 DBComboBox компоненті не үшін қолданылады? Қасиеттері қандай?
8 DBCheckBox компоненті не үшін қолданылады? Қасиеттері қандай?
9 DBRadioGroup компоненті не үшін қолданылады? Қасиеттері қандай?
10 Деректер қоры кестесін экранда көру, жөндеудің қандай әдістері бар?
11 DataSource, Table компоненттері қалай аталады? Қандай қасиеттері бар?
Көп кестелік байланыс орнату.
Төмендегі атрибуттары анықталған кестелер арасында байланыс орнату керек болсын.
1 Студент(студенттік билет нөмірі, студенттердің аты-жөні, туған мерзімі, т.б.)
2 Мамандық(студенттік билет нөмірі, мамандық нөмірі, топ шифры, т,б,)
3 Факультет(факультет нөмірі, факультет атауы, деканның аты-жөні)
4 Кафедра(кафедра нөмірі, кафедра атауы, кафедра меңгерушісінің аты-жөні, факультет атауы,
5 Оқытушылар(оқытушылар нөмірі, оқытушылар аты-жөні, қызметі, кафедра нөмірі)
6 Староста(топ шифры, староста аты-жөні)
Кілттік атрибуттар бола алатын өрістер қалың һәріппен боялған. Әр
DataBaseDesktop терезесінде әр кесте үшін Restructure командасын орындап, байланыс
18-сурет-Кестелер арасындағы байланыс сызбасы
Дельфиде жаңа жоба құрамыз (19-сурет). Оған қажетті компоненттерді әр
Әр компоненттің қасиеттерін тағайындаймыз.
Table1 компонентінің қасиеттері:
DataBaseName – Primer
TableName – student
Active – True
Datasource1 компонентінің қасиеттері::
DataSet - Table1
19-сурет-Кестелер арасындағы байланыс жобасы
DBGrid1 компонентінің қасиеттері::
Datasource – Datasource1
Table2 компонентінің қасиеттері::
DataBaseName – Primer
TableName – mamandik
MasterSource – DataSource1 (себебі бұл кесте 1-ші, яғни «студент»
MasterFields … пернесін басып, шыққан терезеде байланысатын кестелердің атрибуттарын
IndexName – nb (индекстік файл атауын көрсетеміз)
Active – True
Datasource2 компонентінің қасиеттері:
DataSet - Table2
Дәл осылай қалған кестелерді байланыстырып, жобаны орындауға жібереміз (F9-
Өзін өзі бақылау сұрақтары
1 Байланыс деген не?
2 Байланыстың қандай түрлері бар?
3 Байланысты қалай орнатуға болады?
4 Басшы кесте деген не?
5 Бағынышты кесте деген не?
6 Кілттік өріс деген не?
7 Кілт бойынша байланысты орнату байланыстың қай түріне жатады?
8 Кілттік емес өріс бойынша байланыс орнатылса байланыстың қай түріне
9 Байланысты орнатуға көмектесетін өрістерге қандай шектеулер бар?
10 Индекстік өріс пен кілттік өріс арасында қандай байланыс бар?
3.3 Клиенттік қосымшада жоғарғы мәзір құру
Қандай да бір қосымша құру кезінде оның визуальды көрінісін
Өздеріңізге таныс компоненттерден басқа (компоненттердің қасиеттерін де білесіз) мына
BDE қатпарынан Table1 компонентін қойып TableName қасиетіне student.db деп
MainMenu компоненті, Items Menu…пернесін басып, Form1.MainMenu1 терезесінде жоғарғы мәзір
Қалыпта пайда болған жоғарғы мәзірдің ішкі мәзірі АШУ –
20-сурет-Жоғарғы мәзірі бар жоба
Программа туралы мәтінді жазу үшін Memo1 қойып, Lines String…
Form1.Memo1.Visible:=False;
Енді мәзірдің ішкі пункттерін анықтаймыз. Ол үшін қалыптағы 1-ші
if OpenDialog1.Execute then Form1.Table1.Active:=True;
ЖАБУ пункті үшін мына кодты тереміз:
Table1.Active:=False;
DataSource1.DataSet.Close;
Шығу пункті үшін мына кодты жазамыз:
close;
Анықтама пункті үшін мына кодты тереміз:
Form1.DBGrid1.Visible:=False;
Form1.DBNavigator1.Visible:=False;
Form1.Memo1.Visible:=True;
Word-қа экспорттау пернесіне мына кодты жазамыз:
procedure TForm1.Button1Click(Sender: TObject);
var XLApp,Sheet,Colum:Variant;
index,j:Integer;
begin
Screen.Cursor := crHourGlass;
WordApplication1.Connect;
WordApplication1.Documents.Add(EmptyParam, EmptyParam, 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 := 30;
WordDocument1.Tables.Item(1).Columns.Item(2).Width := 120;
WordDocument1.Tables.Item(1).Columns.Item(3).Width := 110;
WordDocument1.Tables.Item(1).Columns.Item(4).Width := 90;
WordDocument1.Tables.Item(1).Columns.Item(5).Width := 90;
WordDocument1.Tables.Item(1).Cell(1,1).Range.Text := '№';
WordDocument1.Tables.Item(1).Cell(1,2).Range.Text := 'Студенттің аты-жөні';
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 := 12;
WordApplication1.Selection.Font.Name := 'Times New Roman';
WordApplication1.Visible := true;
Screen.Cursor := crDefault;
Table1.First;
end;
Excel-ге экспорттау пернесіне мына кодты жазамыз:
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 Table1.RecordCount do
begin
for j:=1 to DBGrid1.Columns.Count do
Sheet.Cells[Index, j]:=DBGrid1.Fields[j-1].AsString;
Inc(Index);
Table1.Next;
end;
end;
Қосымшаны орындауға берсеңіз, жоғарғы мәзірдің көмегімен студенттер туралы деректер
Өзін өзі бақылау сұрақтары
1 Клиенттік қосымша деген не?
2 Клиенттік қосымша қалай құрылады?
3 Жоғарғы мәзір деген не? Ол қалай құрылады?
4 Жоғарғы мәзірдің пункттерін қалай бағдарламалайды?
5 Фотосуреттер қалай базада сақталады?
6 Мәтіндік редакторға кестедегі деректерді қалай экспорттайды?
7 WordApplication компоненті не үшін керек? Оның қандай қасиеттері бар?
8 Кестелік процессорға кестедегі деректерді қалай экспорттайды?
9 Excel.Application әдісі нені білдіреді?
10 Кестелік процессормен байланыс қалай орнатылады?
3.4 Мемо-өрістер, бағандарды жөндеу және деректерді іздеуді ұйымдастыру
Деректер қорымен жұмыс істеу кезінде мемо-типті деректерді қолдану мүмкіндігі
Осы айталған мәліметтер бойынша жұмыс жасау үшін 21-суреттегідей қалып
Деректерді іздеуді ұйымдастыру үшін компоненттердің қасиеттерін көрсетеміз.
Table1-ді белгілеп, DataBaseName қасиетін Primer деп, TableName қасиетін student
Мемо-өрісті толтыру үшін қосымшаны орындауға жіберіп, навигаторлық тақтаның көмегімен
Үлкен кестелерден белгілі бір жазуларды таңдау қажет болса оларды
21-сурет-Мемо-өрісті толтыру, бағандарды жөндеу, іздеу жобасы
Function.Locate(const KeyFields: string; const KeyValues: Variant; Options:
Бұл әдісте параметрлер ретінде өрістер атаулары алынады.
«Іздеу» деп аталатын Button1 пернесін 2 рет шертіп, мына
procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.Query1.Locate('Fio', Edit1.Text, [LoPartialKey, LoCaseInsensitive]);
end;
end.
[LoPartialKey, LoCaseInsensitive] параметрлері – аты-жөні бойынша іздеу кезінде регистрге
Егер іздеуді аты-жөні өрісімен емес басқа өріс арқылы жүргізу
Тағы бір мысал қарастырайық. Қандайда бір фирманың клиенттері туралы
Form1 қалыбында тақырыптары «адам есімі бойынша іздеу»,
Locate әдісін қолданамыз. Келесі ретпен жазамыз:
1 кілттік өріс
2 іздеуге жататын дерек қайдан алынады
3 іздеу параметрлері:
LoCaseInsensitive – бас әріптер есепке алынбайды
LoPartialKey – дербес кілт
«Іздеу» компонентіне программалық код жазамыз:
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 компонентін қолдансаңыз,
22-сурет-ColumnsEditor терезесі
оның бағандарының атауы базадағы сияқты ағылшын әріптерімен жазылып тұрады,
DBGrid1-ті белгілеп, тышқанның оң жақ пернесін басу
ColumnsEditor командасын орындау керек, сонда 22-суреттегідей терезе ашылады. Терезедегі
23-сурет-Бағандар қасиетін тағайындау терезесі
келесі мәндерді тағайындау:
FieldName – кестедегі 1-ші өріс атауы, Title – Caption
Фильтр – сүзу.
Деректер кестесі жазуларынан белгілі бір шартты қанағаттандыратын жазуларды сүзіп
Мысалы фамилиялары А әрпінен басталатын студенттердің тізімін сүзіп алу
Егер фильтрді алып тастау керек болса, онда Filtered қасиетін
23а-сурет-Фильтр нәтижесін көру терезесі
Егер фильтрді бағдарлама көмегімен орындау керек болса, бірнеше әдісі
Tbutton 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 begin
Table1.Filter:=’Telephone='''+Edit1.Text+'*'+'''';
End;
Table1.Active:=True;
Table1.Filtered:= True;
End;
Өзін өзі бақылау сұрақтары
1 Мемо өрістер деген не? Олар қалай толтырылады және базаға
2 Кесте бағандарын қалай қазақшалауға болады?
3 Іздеу деген не? Оның неше түрі бар? Олар қалай
4 Деректерді сүзу деген не?
5 Сүзуді орындаудың неше амалы бар?
6 Query1 компоненті не үшін қажет? Оның қандай негізгі қасиеттері
3.5 Сұраныс құру
Сұраныс құру компоненті query деп аталады. Бұл компоненттің екі
SELECT операторы SQL тілінің негізгі операторы болып табылады. Ол
Оператордың жазылуы келесідей:
SELECT өрістер тізімі FROM кесте атауы;
Мысалы: SELECT FIO, Adres FROM student.db
Паскаль тіліндегідей Select, From сөздері SQL тілінің
Сұранысты құру үшін Query1 компонентін қойып, Query1 компонентін белгілеп,
Егер сұранысқа барлық өрістерді енгізу керек болса, * символын
Select * From student.db
Шарт бойынша мәліметтерді жинақтау үшін Where қызметші сөзінен кейін
SELECT өрістер тізімі FROM кесте атауы WHERE
Мысалы: SELECT * FROM student.db WHERE stipendia>=12000 and stipendia 0 then
begin
Form1.USER := ADOQuery1.FieldByName('kod').AsInteger;
Form1.Show;
Visible := False;
end
else
begin
Application.MessageBox('Логин немесе купиясоз кате терілген', '');
edPassword.Text := '';
end;
Ал жүйеге енгізуден бас тарту үшін тағы бір BitButton
Теңестіруден өткеннен кейін «Кадрлар бөлімі» деп аталатын форма ашылады.
Соның біріншісі – «Бөлім» деп аталады, мұнда қызметкерлердің қандай
Form1.ADOQuery1.Filtered:=true;
t:=ADOQuery1.RecordCount;
Form1.Caption:='Кадрлар болімі - Администрацияда '+IntToStr(t)+'-адам бар';
Соңғы жолда Администрацияда неше адам қызмет атқаратынын есептеу келтірілген.
Қызметкердің фотосын шығару үшін OpenDialog1, сосын DBImage1 компоненттерін қойып,
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 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('өріс таңдаңыз');
end;
«Фильтрлеу» пернесін шерту оқиғасына мына кодты жазамыз:
procedure TForm1.Button2Click(Sender: 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 RG_Filtr.Items[RG_Filtr.ItemIndex]='Мекен жайы' then pole:='mekenjai';
if RG_Filtr.Items[RG_Filtr.ItemIndex]='Туган куні' then pole:='tugankuni';
if RG_Filtr.Items[RG_Filtr.ItemIndex]='Кызметі' 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
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-сурет-Жеке парақ үлгісі
Қызметкер жұмысқа қабылданғаннан кейін оның жеке парағын да автоматты
Бас мәзірдің екінші пункті – «Іс-қимыл» бөлігі, мұнда қызметкерлерді
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 else Form1.ADOQuery1['balalari']:=false;
Form1.ADOQuery1['bolim']:=CB_Otdel.Text;
Form1.ADOQuery1.Post;
frm_Prin_Rab.Hide;
form1.Enabled:=true;
end;
Ал қызметкер жұмысқа алынатын болған жағдайда бағдарлама автоматты түрде
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('Телефон: '+Ed_tel.Text);
form4.QRLabel21.Caption:=form1.Edit1.Text ;
Form4.QuickRep1.Preview;
end;
49-сурет-Келісімшарт үлгісі
«Іс-қимыл» пунктіндегі «Жұмыстан шығару» командасын басқанда белгіленіп тұрған қызметкер
Бұл формадағы «Бұйрық» пернесін шерту оқиғасына мына кодты жазамыз:
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-форма құрып, оған жұмыстан босату
51-сурет-Жұмыстан босату бұйрығының үлгісі
Жұмыстан шығару туралы өкім шығарылғаннан кейін қызметкер туралы деректі
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 begin
inc(i);
s:=strtoint(mes_f(form13.ADOQuery1['tugankuni']));
p:=mes_f(DateToStr(Date));
d:=strtoint(p);
dd:=d-s;
s1:=s1+dd;
form13.ADOquery1.Next;
ddd:=s1/form13.ADOQuery1.recordcount;
form13.Edit1.Text:=floattostr(ddd);
end;
begin
otd:='jinisi';
form13.ADOQuery1.Filtered:=false;
form13.ADOQuery1.Filter:='jinisi='+''''+'Ер'+'''';
ADOQuery1.Filtered:=true;
t:=ADOQuery1.RecordCount;
form13.Edit2.Text:=IntToStr(t);
end;
begin
otd:='jinisi';
form13.ADOQuery1.Filtered:=false;
form13.ADOQuery1.Filter:='jinisi='+''''+'Әйел'+'''';
ADOQuery1.Filtered:=true;
t:=ADOQuery1.RecordCount;
form13.Edit3.Text:=IntToStr(t);
end;
begin
otd:='bilimi';
form13.ADOQuery1.Filtered:=false;
form13.ADOQuery1.Filter:='bilimi='+''''+'жоғары'+'''';
ADOQuery1.Filtered:=true;
t:=ADOQuery1.RecordCount;
form13.Edit4.Text:=IntToStr(t); end;
begin
otd:='bilimi';
form13.ADOQuery1.Filtered:=false;
form13.ADOQuery1.Filter:='bilimi='+''''+'орта арнаулы'+'''';
ADOQuery1.Filtered:=true;
t:=ADOQuery1.RecordCount;
form13.Edit5.Text:=IntToStr(t); end;
begin
otd:='bilimi';
form13.ADOQuery1.Filtered:=false;
form13.ADOQuery1.Filter:='bilimi='+''''+'орта'+'''';
ADOQuery1.Filtered:=true;
t:=ADOQuery1.RecordCount;
form13.Edit6.Text:=IntToStr(t); 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-сурет-«Кадрлар бөлімі» жайлы анықтама
Бұл форматтағы файлдарды оқыту үшін «Анықтама» пунктіндегі «Кадрлар бөлімі
procedure TForm1.N5Click(Sender: TObject);
begin
ShellExecuteA(Application.Handle,nil,'index.htm',nil,nil,SW_SHOWNORMAL);
end;
«Анықтама» пунктіндегі «Бағдарлама жайлы» командасына мына кодты жазамыз:
procedure TForm1.N4Click(Sender: TObject);
begin
AboutBox.ShowModal;
end;
Бағдарлама жайлы мәтінді AboutBox формасына жазуға боады, ол үшін
«Анықтама» пунктіндегі «ҚР Еңбек Кодексі» командасына мына кодты жазамыз:
procedure 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-сурет-«Еңбек демалысынан шақыру» өкімінің ұлгісі
Егер қызметкерді басқа қызметке тағайындау керек болса, «Өкімдер» пунктінің
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-формада «Тағайындау» өкімінің үлгісін жасау
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;
Бұл код орындалуы үшін 6-формада «Тәртіптік жаза беру» өкімінің
Бас мәзірдің келесі бөлігі «Бұйрықтар» деп аталады, онда «Ескерту
58-сурет-Тәртіптік жаза беру өкімінің үлгісі
Егер қызметкерге қандай да бір өрескелдігі үшін ескерту берілсе,
procedure TForm1.N20Click(Sender: TObject);
begin
form7.QRLabel3.caption:=form1.DBEd_dolzh.Text;
form7.QRLabel4.caption:=form1.DBEd_fio.Text;
form7.QRLabel12.caption:=form1.Edit1.Text;
form7.QuickRep1.Preview;
end;
Бұл код орындалу үшін 7-формада «Ескерту жариялау» бұйрығының үлгісін
59-сурет-Ескерту жариялау бұйрығының үлгісі
«Бұйрықтар» пунктінің «Іс сапарға жіберу» командасына мына код жазылады:
procedure TForm1.N21Click(Sender: TObject);
begin
form10.Show;
end;
60-сурет-Іссапарға жіберу формасы
Жобаның 10-формасында қызметкерлерді іссапарға жіберу пішіні тағайындалған (60-сурет).
Мұнда кестедегі дайын деректерді пайдаланып, яғни іссапарға жіберілетін қызметкердің
61-сурет-Іссапарға жіберу туралы бұйрық үлгісі
созылатынын пішінге әкелініп қойылған күнтізбеден көрсетілетін болады. Содан кейін
«Бұйрықтар» пунктінің «Еңбек демалысына жіберу» командасына мына кодты жазамыз:
procedure TForm1.N15Click(Sender: TObject);
begin
form9.Show;
end;
Жобаның 9-формасында қызметкерлерді еңбек демалысына жіберу пішіні жасалды (62-сурет)
62-сурет-Қызметкерлерді еңбек демалысына жіберу формасы
Бұл форманың «Растау» пернесін шерту оқиғасына мына кодты жазамыз:
procedure TForm9.Button2Click(Sender: 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-сурет-Еңбек демалысы туралы бұйрықтың үлгісі
Бұл код орындалу үшін 12-формада Вакансияны анықтап, конкурс жариялау
65-сурет-Вакантты орындарды анықтау формасы.
Мұндағы «Конкурс» пернесін шерту оқиғасына мына код жазылады:
procedure TForm12.Button1Click(Sender: TObject);
begin
Form7.lbKizmet.DataSet := Form12.qrGetVacant;
Form7.lbKizmet.DataField := 'kizmet';
Form7.QuickRep3.Preview;
end;
Бұл код орындалуы үшін 7-формада конкурс жариялау үлгісі жасалып
66-сурет-Конкурс дариялау үлгісі
Бас мәзірдің соңғы бөлігі «Сервис» деп аталады, онда «Журнализация»
Өзін өзі бақылау сұрақтары
1. Ақпараттық жүйе деген не?
2. Ақпараттық жүйенің түрлері? Қолданысы?
3. Ақпараттық жүйенің құрамы?
4. Ақпараттық жүйелерді құру әдістері?
5. Автоматтандырылған ақпараттық жүйелерді құру қай бағдарламаға негізделген?
4.2 Мәліметтер қоры өзгерісін журналға тіркеу
Дамыған мәліметтер қорын басқару жүйесіне қойылатын басты талаптардың бірі
Қайта қалпына келтірудің жалпы қағидалары:
- тіркелген транзакциялардың нәтижесі мәліметтер қорының қалпына келтірілген күйінде сақталуы
- тіркелмеген транзакциялардың нәтижесі мәліметтер қорының қалпына келтірілген күйінде сақталмауы
Мәліметтер қорын қайта қалпына келтіру кезінде келесідей жағдайлар кездесуі
- Транзакцияның жеке дара шегінуі. ROLLBACK операторымен аяқталатын транзакцияның шегінуі
- Жедел жадының деректерін жоғалтқан кезде қайта қалпына келтіру
- Мәліметтер қорын тасушы негізгі сыртқы жадтың бұзылуы (қатаң ақау).
Қайта қалпына келтірудің үш түрінің негізінде де мәліметтерді артық
Журналдық ақпаратты жүргізудің екі нұсқасы бар. Бірінші нұсқасында әр
Журнал жүргізу – мәліметтер қорымен операциялар журналын жүргізу. Операторлардың
Журналға келесі ақпараттар тіркеледі:
- реттік нөмірі, типі және өзгерген мерзімі;
- транзакцияның идентификаторы;
- өзгеріске ұшыраған объект (сақталған файл нөмірі мен ондағы деректер
блогінің нөмірі, блок ішіндегі жолдың нөмірі);
- объектінің алдыңғы жағдайы мен соңғы жағдайы.
Осылайша құрастырылған ақпарат мәліметтер қорының өзгерістер журналы болып табылады.
«Сервис» пунктінің «Журнализация» командасына мына кодты жазамыз:
procedure TForm1.N23Click(Sender: TObject);
begin
with TdfShowLog.Create(Application) do
begin
ShowModal;
Free;
end;
end;
Бұл код орындалу үшін жаңа форма құрып оның атауын
1-формадағы процедуралар тізіміне
procedure DataSource1StateChange(Sender: TObject); атауын жазамыз да, оның кодын {$R
procedure TForm1.DataSource1StateChange(Sender: TObject);
begin
if DataSource1.State = dsEdit then
IsAppend := False
else if DataSource1.State = dsInsert then
IsAppend := True
else
IsAppend := False;
end;
Мұндағы IsAppend айнымалысы ақиқат және жалған
Журналға қолданушылардың қандай операция орындағанын анықтайтын
67-сурет-Журнализацияны жүргізу формасы
бағдарлама кодын жазу үшін 1-формадағы ADOQuery1 компонентін белгілеп, Object
procedure TForm1.ADOQuery1AfterPost(DataSet: TDataSet);
begin
qrLog.Edit;
qrLog.Append;
qrLog.FieldByName('user').AsInteger := USER;
qrLog.FieldByName('evtdate').AsDateTime := Now;
qrLog.FieldByName('rowid').AsInteger := ADOQuery1.FieldByName('kod').AsInteger;
if IsAppend then
begin
qrLog.FieldByName('action').AsInteger := 1;
qrLog.FieldByName('message').AsString := 'Жана жазба енгізілді';
end
else
begin
qrLog.FieldByName('action').AsInteger := 2;
qrLog.FieldByName('message').AsString := 'Жазба озгертілді';
end;
qrLog.Post;
IsAppend := False;
end;
Мұндағы qrLog 1-формада қойылған ADOQuery3 компонентінің атауы.
1-форманың экранда көріну оқиғасына мына кодты жазамыз:
procedure 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 := 'Жуйеге кіру';
qrLog.Post;
end;
1-форманың жабылу оқиғасына мына кодты жазамыз:
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 := 'Жуйеден шыгу';
qrLog.Post;
end;
Бұл кодтар арқылы қолданушылардың жүйеге кіргені, шыққаны туралы ақпарат
68-сурет-Журнализация формасының нәтижесі
Өзін өзі бақылау сұрақтары
1 Мәліметтер қорын қалай сенімді сақтауға болады?
2 Транзакция деген не?
3 Оның қандай түрлері бар?
4 Тіркелген транзакциялар қандай нәтиже береді?
5 Тіркелмеген транзакциялар қандай нәтиже береді?
6 Транзакцияның жеке дара шегінуі деген не?
7 Транзакцияның бекітілуі деген не?
8 Жеңіл ақау деген не? Ол қалай анықталады?
9 Қатаң ақау деген не? Ол қалай анықталады?
10 Журнал жүргізу не үшін қажет?
11 Журналға қандай ақпараттар тіркеледі?
5-БӨЛІМ. СЕРВЕРЛІК МӘЛІМЕТТЕР ҚОРЫ ЖӘНЕ INTERBASE СЕРВЕРІМЕН ТАНЫСУ
Мұндай МҚ бір немесе бірнеше компьютерлерде орналасады. МҚ серверлері
SQL-срверлердің көпшілігі SQL-командаларды және басқа да қосымша қызметтерді орындайды.
SQL тілі локальды МҚ-мен де жұмыс істейді, бірақ SQL-серверлермен
SQL-серверлерге жататын программалар:
InterBase, Oracle, SyBase, Informix, MS SQL Server, DB2.
МҚ типін таңдағанда келесі факторларды ескеру қажет:
- МҚ-на бірмезгілде қосылатын қолданушылар саны. SQL-серверлер бірмезгілде көпқолданушылықты
- Сақталатын деректер көлемі. SQL-серверлер көп деректерді сақтай алады,
- Администраторлық қызметтерді қолдану қажеттілігі. Локальды МҚ-да SQL-серверге
- Сенімді қауіпсіздіктің қажеттілігі. МҚ көп жағдайда конфиденциальды ақпараттан
Сонымен локальды МҚ келесі талаптарға сай қолданылады:
1 МҚ кестелерінде жазулар саны 10000-нан жоғары болмаса.
2 МҚ-н қолданатын қолданушылар саны аз болса.
3 Күрделі администраторлық, қорғау қызметтері қажет болмаса.
5.1 INTERBASE локальды сервері
1 Серверді іске қосу
Бұл сервер екі режимде іске қосылады: қолмен және автоматты
1) Сервис түрінде
2) Қосымша түрінде (Windows95/98-де әрқашан қосымша түрінде қосылады).
InterBase –тің құрамында оның іске қосылу режимі мен деңгейін
2 Сервердің қосылғандығын тексеру
Windows95/98-де InterBase сервер жұмыс істеп тұрғанда тапсырмалар тақтасындағы оң
3 Серверде тіркелу.
Сервердің орнатылғанын білгеннен кейін онда тіркелу үшін: ПУСК-ПРОГРАММЫ-InterBase –
Оның терезесі келесі компоненттерден тұрады:
- Мәзір – серверді басқару командалары бар
- Құралдар тақтасы – мәзір командаларын жылдам орындаушы құралдар
- Бұтақтар терезесі – серверде тіркелген серверлер мен МҚ иерархиясын
- Жұмыс терезесі – сол жақ бөліктегі бұтақтар туралы толық
- Жағдай жолы – қай сервердің таңдалғаны, қолданушы туралы ақпарат
IBConsole программасы сервермен жұмыс істеуі үшін оны тіркеу қажет.
Терезенің жұмыс облысында серверде пайда болған қолданушы туралы ақпарат
4 Мәліметтер қорын құру.
InterBase-те мәліметтер қоры файл түрінде сақталады, типі .gdb болады.
1 Alias – мысалы Студент – МҚ атауы
2 Files бөлігінде құрылатын МҚ-ң қай жерде сақталатын жолы
3 PageSize Әрі қарай әр беттің ұзындығы 4096 деп
4 Default chatacter set – символдар қай форматпен енгізілетіні көрсетәлуі
5 SQL Dialect - 1 деп көрсетіп OK-ді басады.
Құрылған МҚ-на қосылу үшін IBConsole терезесіндегі МҚ атауын
МҚ бойынша интерактивті SQL – сұраныстармен жұмыс істеуге болады.
Оқушылар кестесін құрайық: жеке нөмірі, тегі, есімі, әкесінің есімі,
Егер ірі мәліметтер қоры құрылса, онда өте көп кесте
Оқушылардың тегі туралы бағанға домен құру үшін:
Create Domain fio Char(20) not Null деп жазып, орындау
Енді осы доменді өшіру керек болса:
DROP DOMAIN FIO
Create, Drop, Alter сөздерінен басталатын командаларды SQL-дің DDL-типті командалары
Серверде деректердің өзгерісі транзакция түрінде іске асады. Транзакцияның 4
1 Атомарлық – «барлығы немесе ештеңе» принципі сияқты, орындауға жіберген
2 Толықтылық – транзакция МҚ-н бір жағдайдан толық 2-ші жағдайға
3 Изоляциялану – транзакция басқа транзакцияларды көрмеуі керек.
4 Әрекеттілік – транзакция бекіткен өзгерістер міндетті түрде күш алуы
Транзакция орындалды деп есептеледі, егер арнаулы растау, бекіту бар
Әр сценарий МҚ-на қосылудан басталуы керек:
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 null;
Create Domain n_sempol char(10) not null;
Create Domain n_Datar Date not null;
Осы сценарийді жазған соң сақтау кезінде файл атауын “domain.sql”
Домендер белгілі болған соң кестені құру этабына өтуге болады.
CREATE TABLE Student (
Bilet n_bilet,
Adres n_adres,
Sempol n_sempol,
Datar n_Datar,
Primary key (Bilet)
)
Орындауға беру үшін Query – Execute командаларын орындау керек.
Егер барлық амалдар дұрыс орындалса, онда STUDENT деген МҚ-ң
Оны тексеру үшін IBConsole терезесінде Tables қатпарын таңдау керек,
5.2 Индекс құру
Create Index индекстік файл атауы on кесте атауы(атрибут)
Create Index stud on student(fio) – көрсетілген атрибут fio
Create Index stud1 on student(datar) - көрсетілген атрибут datar
Құрылған индекстер туралы ақпарат алу үшін:
- IBConsole терезесінде Tables қатпарынан Студент МҚ-н таңдау керек. Сонда
- Кестені белгілеп, тышқанның оң жағын басып, Қасиеттер Properties командасын
Кестеге мәліметтер енгізу.
ISQL – сұраныстар терезесінде мына команданы орындау керек:
Insert Into кесте атауы (кесте атрибуттары) Values (атрибут мәндері)
Бұл команданы орындамас бұрын символдарды жазу үшін кириллицаның орнатылуын
Insert Into student (bilet, fio, datar, adr, sempol) Values
Өзгерісті МҚ-нан бақылау үшін Select * from student командасын
Сұраныстан шығу. IBConsole терезесінен шығу.
Сұраныстан шығу үшін:
File – Close командасын орындап, шыққан хабарламаға Yes деп
IBConsole терезесінен шығу үшін Console – Exit командасын орындайды.
Өзін-өзі бақылау сұрақтары:
1 Серверлік мәліметтер қорын құру қалай іске асады?
2 InterBase сервері не үшін қажет?
3 SQL-срверлер деген не?
4 SQL-серверлерге жататын программалар
5 Серверді іске қосу
6 Серверде тіркелу
7 Серверде мәліметтер қорын құру
8 IBConsole утилитасы не үшін керек?
9 SQL – сұраныстар деген не? Ол қалай құрылады?
10 Домен құру
11 Транзакция деген не? Транзакцияның 4 қасиеті
12 Кесте құру этабын түсіндір
13 Индекс құру қалай орындалады?
14 Кестеге мәліметтер енгізу қалай орындалады?
15 Сұраныстан шығу. IBConsole терезесінен шығу.
5.3 Delphi7 және мәліметтер қоры серверлері
Біз таныс BDE және ADO механизмдерінен басқа DBExpress, InterBase
BDE механизмімен рұқсат алу, администратор тағайындау.
Пуск – Программы – Borland Delphi7 – BDE Administrator
1-ші қатпарда BDE-де бар барлық альястардың тізімі келтіріледі. Жаңа
Definition қатпарында программаны баптау параметрлері көрініп тұрады. Оны өзіміз
LangDriver – сөзінің турасындағы жолды шертіп, пайда болған тізімнен
ServerName – сервер үшін МҚ файлының атауын көрсету керек.Ол
МҚ көмегімен қосымша құру әдістері.
Қалыпқа DataSource, Query, DBGrid, Button1,2 компоненттерін орналастырып, қасиеттерін
DataSource - DataSet - Query1
Query – DataBaseName –Студент
ReguestLive – true
Sql - string - select * from
DBGrid – Datasource – DataSource1
Active – true
Осы кезде диалогтық терезе шығады. Онда МҚ атауы Студент,
Сұранысты активтендірмей: Active – False, мына қасиеттерді тағайындайық:
Form1 - Caption - Студенттер туралы анықтама
Position - poScreenCenter
Button1 - Caption - Сұранысты іске қосу
Button2 - Caption - Шығу
Button1Click оқиғасына мына кодты жазсақ:
Query1.Active:=true; немесе бұл жоолдың орнына мына команданы жазуға да
Button1.Enabled:=false;
Бұл командалар Сұранысты іске қосу пернесін шерткенде сұраныстың жазуларын
Button1Click оқиғасына мына кодты жазсақ:
If Query1.Active then Query1.Close;
Application.Terminate;
Бұл командалар егер сұраныс алдын ала ашық тұрған болса,
Егер студенттердің туған мерзімін енгізу кезінде жылдың 4 цифры
ShortDateFormat:=’dd.mm.yyy’;
Delphi объектіге-бағытталған орта болғандықтан МҚ-на рұқсат алу үшін BDE
TSession компоненті келесі жағдайда тиімді:
- егер құрылатын қосымша бірмезгілде бірнеше сұраныспен жұмыс істейтін болса,
- Көпағынды қосымша құру кезінде. Ондағы әр ағын жеке Tsession
TdataBase компоненті МҚ байланысын басқарады. Қосымшада бірнеше сессия болады,
Бұл екі компонент тек қана МҚ-мен байланысты орындаса, негізгі
МҚ-ғы мәліметтерді басқару үшін сұраныстардың 2 түрі қолданылады:
1 Мәліметтерді қайтаратын сұраныстар. Таңдау сұранысы. (Open әдісімен орындалады)
2 Мәліметтерді қайтармайтын сұраныстар. Олар деректерді өзгертуші сұраныстар деп
TstoredProc компоненті серверде сақталатын процедураларды орындайды, процедура да мәліметтерді
TdataSet компоненті. Мәліметтер жинағымен жұмыс.
Мәліметтер жинағын ашу үшін Query1.Active:=True немесе Query1.Open
Мәліметтер жинағын жабу үшін: If Query1.Active then Query1.Close; әдісін
Мәліметтер жинағы бойымен жылжу үшін кэш деп аталатын уақытша
First – бірінші жазуға көшу
Last – соңғы жазуға көшу
Prior – алдыңғы жазуға көші
Next – келесі жазуға көшу
MoveBy – берілген мәнге тең жазудан аттау
BOF – егер курсор алғашқы жазуда тұрса ақиқат, әйтпесе
EOF - егер курсор соңғы жазуда тұрса ақиқат, әйтпесе
Бұл әдістерді былайша қолданады:
Query1.Next;
Query1.Prior; т.с.с.
Деректер жиынының өрістері.
Деректер жиынының өрістері деп кестенің бағандарының атауларын айтуға болады.
Мысалы: Label1 компонентіне Query1 компоненті арқылы құрылған сұраныс нәтижесіндегі
Label1.Caption:=Query1.Fields[1].asstring; 1-ші бағанның мәндерін Label1-ге шығарады;
Label1.Caption:=Query1.FieldByName(‘FIO’).asstring; FIO атрибутының мәнін Label1-ге шығарады;
Label1.Caption:=Query1.FieldValue(‘Петров В.И.’).asstring; Сұраныстан Петров В.И. мәнін тауып, Label1-ге шығарады;
Атрибуттардың типтерін анықтау керек болса, Cfield.FieldKind қасиетін, атрибут атауын
Cfield.FieldKind қасиеті келесі мәндерді қабылдайды:
fkData – атрибуттың кестеде сақталғандығын білдіреді
fkCalculated – атрибуттың есептелетін екендігін білдіреді
fkLookUp – атрибуттың іздеу өрісі екендігін білдіреді
fkInternalCalc – есептелетін және есептеу нәтижесінің кестеде сақталатындығын білдіреді
fkAggregate – аггрегаттылығын білдіреді.
Мысалы: Cfield айнымалысы бар болсын, оған ListBox1 компонентіне шақырылған
Cfield:=Form1.Query1.FieldByName(ListBox1. Items[ListBox1.ItemIndex]);
Енді осы Cfield айнымалысына меншіктелген атрибуттың атауы ListBox2-де экранға
ListBox2.Items.add(‘атрибут атауы-’+Cfield.DisplayName) деп жазамыз.
Ал осы таңдал,ан атрибуттың атауы анықталған соң, мәнін көру
ListBox2.Items.add(‘атрибут мәні-’+Cfield.DisplayText) деп жазамыз.
Таңдалған атрибуттың әрқайсысының кестеде қай типпен сақталғандығын анықтау керек
CASE CField.FieldKind of
fkData: FKind:=' атрибут кестеде сақталған';
fkCalculated: FKind:='Атрибут есептелетін';
fkLookUp: FKind:='Іздеу атрибуты';
fkInternalCalc: FKind:='есептелетін, нәтижесі кестеде сақталатын';
fkAggregate: FKind:='аггрегатты атрибут';
else
FKind:='ешбір типке жатпайды';
Егер таңдалған атрибуттың типін анықтап алған соң, сол типті
ListBox2.Items.Add('Атрибут типі - '+FieldTypeNames[CField.DataType]);
деп жазады, ал сол типтің ұзындығын анықтап көрсету керек
ListBox2.Items.Add('Размер (байт) -'+IntToStr(CField.DataSize));
деп жазады. Сол атрибуттың кестеде нешінші болып орналасқанын анықтап
ListBox2.Items.Add('Номер -'+ IntToStr(CField.FieldNo)); деп жазады.
Егер таңдалған атрибутты жөндеуге болатынын, болмайтынын анықтау керек болса,
if CField.CanModify then
ListBox2.Items.Add('жөнделеді') else
ListBox2.Items.Add('жөнделмейді'); деп жазады.
Меншікті ену диалогын құру.
Қалыпқа келесі компоненттерді қойып, сәйкес қасиеттерін көрсетеміз:
TDataSource1: DataSet= TQuery1;
TQuery1: DataBaseName=Студент; Sql-String=Select * from student;
DataBase1: DataBaseName=Студент; LoginPrompt=false;
Бұл компоненттерді қойған кезде автоматты түрде Tsession компоненті құрылады,
Қалыпқа Button1 қойып, соны шерткенде қолданушы мен парольді өзі
DataBase1.Params.Values[‘Password’]:=’silver’;
DataBase1.Params.Values[‘UserName’]:=’student’;
Query1.Active:=True;
Button1.Enabled:=False;
Бұл әдіс базаның қорғанысын төмендетеді, сондықтан қорғау үшін ену
Жаңа қалып құрып, атауын Flogin деп атап, мына қасиеттерін
biSystemMenu=false;
biMinimize=false;
biMaximize:=false;
BorderStyle=bsDialog;
Caption=
Position=poScreenCenter;
Ол үшін мына компоненттерді қоямыз:
1 Label1 - Caption=Қолданушы атауы
2 Label2 - Caption=Пароль
3 TEdit1 - Name=ebUserName; text – бос тұрады
4 TEdit2 - Name=ebPassword; text – бос тұрады; PasswordChar=*
5 Button1 пернесінің қасиеттері:
Name=btnCancel
Caption – Бас тарту
ModalResult =mrCancel
6 Button2 пернесінің қасиеттері:
Name=btnOK
Caption - ОК
ModalResult =mrOK
Flogin қалыбының FormShow оқиғасына мына кодты жазамыз:
ebPassword.text:=’’;
Button1 –ге жазылған программаға өзгеріс енгіземіз:
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, TdataSet компоненттері
dsInactive – деректер жинағы жабық.
dsBrowse – деректер жинағы қарау режимінде ашық
dsEdit – жөндеу режимінде
dsInsert - жазу қосу режимінде
Tquery компонентін белгілеп, Object Inspector терезесінің Events қатпарынан AfterScroll
begin
Query1.Edit;
Query1[‘FIO’]:=Edit1.Text;
Query1.Post
End;
Ал сұраныстан жазуды өшіру керек болса, Button пернесін қойып,
If not {MessageDlg(‘Удалить запись?’, mtError, [mbYes, mbNo], 0)=mrYes) then
Begin
Abort;
End;
сонда экранға Қате терезесі шығады, онда екі перне орналасады:Yes,
Мұндағы MessageDlg функциясы келесі форматты қолдайды:
MessageDlg(const Msg:string; DlgType:TmsgDlgType; Buttons: TmsgDlgButtons; HelpCtx:LongInt): word;
Мұндағы: const Msg:string; - кез келген жиалогқа шығарылатын мәтін
DlgType:TmsgDlgType; - мына мәндердің бірін қабылдайды:
mtWarning – ! белгісі бар ескерту терезесі шығады
mtError – х белгісі бар қате терезесі шығады
mtInformation – i белгісі бар ақпараттық терезе шығады
mtConfirmation - ? белгісі бар, бекіту терезесі шығады
mtCustom - қолданушы типі
Buttons: TmsgDlgButtons; параметрі щығарылатын терезеде қандай пернелердің болатындығын көрсетеді:
HelpCtx:LongInt – параметрі анықтама алуды білдіреді.
Сонымен қатар сұраныс DBGrid компонентіне шығаылатын болса, жазуды өшіру
Жазуларды кірістіру мен кесте соңына жазу қосу былай қарағанда
5.4. Генераторлар мен триггерлер
Мысалы МҚ кестесіндегі студенттің ең соңғы билет нөмірінің мәні
Генератор дегеніміз – мәнін арнаулы gen_id() функциясы көмегімен бірге
Оны құру үішн ISQL терезесін ашып, мына сұранысты орындау
Create generator bilet_gen - bilet_gen деген генератор
Select max(bilet) from student – кестеден билеттің ең үлкен
Set generator bilet_gen to 9 - ағымдағы мәнді
Gen_id(bilet_gen,1) – максималды мәнге 1-ді қосты
Insert into student(bilet, fio, adres, datar)
Values(gen_id(bilet_gen,1), ‘Петров’, ‘Петр’, ‘Петрович’, ’01.10.1988’) – 10-шы жазуды
Триггерлер.
Триггер дегеніміз МҚ-да туындаған оқиғаға (жазуды өшіру, өзгерту, кірістіру)
Триггер қандай да бір МҚ кестесімен байланысты болады, бірақ
Триггерді құрудың сұраныс командасы:
Create trigger trname for tablename
{Before | After} {Insert | delete | UpDate}
As [Declare variable айнымалы типі ;]
Begin
… SQL операторлары
End
Бұл командада trname – триггер атауы, tablename – кесте
Мысалы: Студенттер кестесінен қандай да бір жазуды өшіру триггері
Create trigger St_del_trigger for student
Before delete Position 0 As …
Мысалы: алдында құрылған генератордың bilet_gen мәнін қолданып, кестеге жаңа
Set Term ! !;
Create trigger bilet_gen for student
Before insert as
Begin
New.NBilet =gen_id(bilet_gen, 1);
End !!
Set Term; !!
Бұл триггер кестеге жаңа жазу кірістіру алдында іске қосылады,
Insert into student(fio, adres, datar)
Values(‘Петров’, ‘Петр’, ‘Петрович’, ’01.10.1988’) – мұнда билет
Деректерді кэштеу. TUpDateSQL компоненті.
МҚ кестесімен тікелей жұмыс істемей, сұраныстарды өңдеу кезінде МҚ
Қалыпқа TUpDateSQL1, Query1 компонентерін орналастырып, қасиеттерін тағайындаймыз:
Query1: UpDateOblect=UpDateSQL1 деп көрсетеміз;
TUpDateSQL компонентінің DeleteSQL, InsertSQL, ModifySQL қасиеттеріне орындалатын операцияның SQL-инструкциясы
Мысалы, InsertSQL қасиетіне мына команданы жазйық:
Insert into student(Nbilet, fio, adres, datar)
Values(gen_id(bilet_gen,1), :fio, :adres, :datar);
ModifySQL қасиетіне мына команданы:
Update student set
Fio=:fio,
Adres=:adres,
Datar=:datar
Where Nbilet=:Nbilet;
DeleteSQL қасиетіне мына команданы:
Delete from student Where Nbilet=:old_Nbilet;
жазып, ОК басамыз.
Сосын қалыпқа Button1 қойып, мына кодты жазамыз:
With Quer1 do
Begin
DataBase1.StartTransaction;
Try
ApplyUpdates;
DataBase1.Commit;
Except
DataBase1.RoolBack;
Raise;
End;
CommitUpdates;
End;
ҚОРТЫНДЫ
Мәліметтер қоры – белгілі бір ауқымға қатысты мәліметтерді амал-тәсілдермен
Delphi-дегі мәліметтер қоры – бұл ең дамыған механизм, мұнда
Delphi жұмыс ортасы мәліметтер қорын басқару жүйесінің (МҚБЖ) тура
Оқу құралында Delphi7 бағдарламалау ортасында ақпараттық жүйе құру мүмкіндігі
«Кадрлар бөлімі» бағдарламасының артықшылықтарына тоқталатын болсақ, ең бастысы -
ӘДЕБИЕТТЕР ТІЗІМІ
1. Культин Н. Основы программирования в Delphi 7.0 - Санкт-Петербург,
2. Гофман В. Delphi6/В.Гофман, А.Хомоненко. – Санкт-Петербург: БХВ – Петербург,
3. Фаронов В.В. Программирование баз данных в Delphi 7: Учебный
4. Архангельский А. 100 компонентов библиотеки Delphi5. - Санкт-Петербург,
5. Фленов М. Delphi 2005 секреты программирования. – Питер, 2006.
6. Харрингтон Д. Проектирование объектно-ориентированных баз данных. Пер. С англ.
7. Абдолдина Ф.Н. Delphi ортасында бағдарламалау. Әдістемелік құрал.- ШҚМУ баспасы,
8. Баас Р. Delphi4. – К.: Издательская группа BHV, 1999.
9. Дарахвелидзе П. Программирование в Delphi5. – Санкт-Петербург: БХВ-Петербург, 2001.
10. Александровский А. Д. Delphi5. Разработка корпоративных приложений. – М.:
11. Конноли Т. Базы данных. Проектирование, реализация и сопровождение. Теория
ҚОСЫМША - А
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, StdCtrls, DBCtrls, Mask, Grids, DBGrids, ExtCtrls, DB,
ADODB, Buttons, ShellAPI, duShowLog, duDataModule;
type
TForm1 = 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: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
DBEd_sot: TDBEdit;
DBEd_date: TDBEdit;
DBEd_dolzh: TDBEdit;
DBEdit2: TDBEdit;
DBEdit3: TDBEdit;
DBCheckBox1: TDBCheckBox;
DBRadioGroup1: TDBRadioGroup;
DBImage1: TDBImage;
N6: TMenuItem;
N7: TMenuItem;
GroupBox2: TGroupBox;
Ed_poisk: TEdit;
Label5: TLabel;
ComboBox1: TComboBox;
Button1: TButton;
RG_Filtr: TRadioGroup;
Button2: TButton;
Ed_filtr: TEdit;
N2: TMenuItem;
N8: TMenuItem;
N10: TMenuItem;
OpenDialog1: TOpenDialog;
Label12: TLabel;
DBEd_Stazh: TDBEdit;
Button3: TButton;
DBEd_obraz: TDBEdit;
DBEdit1: 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: TLabel;
SpeedButton2: TSpeedButton;
Edit1: TEdit;
N15: 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 N7Click(Sender: TObject);
procedure N10Click(Sender: TObject);
procedure DBImage1DblClick(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N9Click(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 N22Click(Sender: TObject);
procedure N23Click(Sender: TObject);
procedure N21Click(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 N24Click(Sender: TObject);
private
IsAppend : Boolean;
public
USER : Integer;
end;
var
Form1: TForm1;
otd:string; d:string;
implementation
uses unit3,unit4, Unit5, Unit2, Unit8, Unit10, Unit9,
Unit12, Math, Unit6, Unit7, Unit14, Unit13, Unit11;
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
IsAppend := False;
with qrKizmet do
begin
Close;
SQL.Text := 'SELECT * FROM kizmetter';
Open;
end;
with qrLog do
begin
Close;
SQL.Text := 'SELECT * FROM logs';
Open;
end;
otd:='Все';
ADOQuery1.Active := True;
with cbKizmet do
begin
DataSource := DataSource1;
DataField := 'idkizmet';
ListSource := dsKizmet;
ListField := 'kizmet';
KeyField := 'id';
end;
end;
procedure TForm1.N8Click(Sender: TObject);
var t:integer;
begin
otd:='Администрация';
ADOQuery1.Filtered:=false;
ADOQuery1.Filter:='bolim='+''''+'Администрация'+'''';
ADOQuery1.Filtered:=true;
t:=ADOQuery1.RecordCount;
Form1.Caption:='Кадрлар болімі - Администрацияда '+IntToStr(t)+'-адам бар';
end;
procedure TForm1.N6Click(Sender: TObject);
begin
frm_Prin_Rab.Show;
form1.Enabled:=false;
Form11.enabled:=false;
end;
procedure TForm1.N7Click(Sender: TObject);
begin
{ if ADOQuery1.Eof then
ShowMessage('Жумыстан шыгаратын адамды тандау керек')
else
begin}
with ADOQuery1 do
begin
Edit;
FieldByName('deleted').AsBoolean := True;
Post;
Active := False;
Active := True;
end;
with Form14.ADOQuery1 do
begin
Active := False;
Active := True;
end;
end;
procedure TForm1.N10Click(Sender: TObject);
var t:integer;
begin
ADOQuery1.Filtered:=false;
t:=ADOQuery1.RecordCount;
Form1.Caption:='Кадрлар болімі - барлығы '+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 s:string;
begin
if ComboBox1.Text'Таңдау жасау' then
begin
if ComboBox1.Text='Аты-жоні' then s:='atiJoni';
if 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('өріс таңдаңыз');
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
ADOQuery1.Filtered:=false;
end;
procedure TForm1.Button2Click(Sender: 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 RG_Filtr.Items[RG_Filtr.ItemIndex]='Мекен жайы' then pole:='mekenjai';
if RG_Filtr.Items[RG_Filtr.ItemIndex]='Туган куні' then pole:='tugankuni';
if RG_Filtr.Items[RG_Filtr.ItemIndex]='Кызметі' 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 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.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 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;
procedure TForm1.N20Click(Sender: TObject);
begin
form7.QRLabel3.caption:=form1.DBEd_dolzh.Text;
form7.QRLabel4.caption:=form1.DBEd_fio.Text;
form7.QRLabel12.caption:=form1.Edit1.Text;
form7.QuickRep1.Preview;
end;
procedure 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: TObject);
begin
form10.Show;
end;
procedure TForm1.N19Click(Sender: TObject);
begin
Form12.Show;
end;
procedure TForm1.DataSource1StateChange(Sender: TObject);
begin
if DataSource1.State = dsEdit then
IsAppend := 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 := USER;
qrLog.FieldByName('evtdate').AsDateTime := Now;
qrLog.FieldByName('rowid').AsInteger := ADOQuery1.FieldByName('kod').AsInteger;
if IsAppend then
begin
qrLog.FieldByName('action').AsInteger := 1;
qrLog.FieldByName('message').AsString := 'Жана жазба енгізілді';
end
else
begin
qrLog.FieldByName('action').AsInteger := 2;
qrLog.FieldByName('message').AsString := 'Жазба озгертілді';
end;
qrLog.Post;
IsAppend := False;
end;
procedure 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 := 'Жуйеге кіру';
qrLog.Post;
end;
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 := 'Жуйеден шыгу';
qrLog.Post;
end;
procedure TForm1.N24Click(Sender: TObject);
begin
form13.show;
end;
End.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;
type
TForm2 = class(TForm)
MonthCalendar1: TMonthCalendar;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
uses unit3;
{$R *.dfm}
procedure 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, Controls, Forms,
Dialogs, ExtCtrls, DBCtrls, StdCtrls, 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: TLabel;
Panel1: TPanel;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Ed_god_rozh: TEdit;
Ed_fio: TEdit;
Ed_adres: 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 FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frm_Prin_Rab: Tfrm_Prin_Rab;
implementation
uses unit1,unit2,unit4, Unit6;
{$R *.dfm}
procedure 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 }
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 else
Form1.ADOQuery1['balalari']:=false;
Form1.ADOQuery1['bolim']:=CB_Otdel.Text;
Form1.ADOQuery1.Post;
frm_Prin_Rab.Hide;
form1.Enabled:=true;
end;
procedure Tfrm_Prin_Rab.Button3Click(Sender: TObject);
begin
frm_Prin_Rab.Hide;
form1.Enabled:=true;
end;
procedure 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. Фирма жогарыда айтылган тұлғаны келесi қызметке кабылдайды "'+Ed_dolzh.Text);
//Form4.QRMemo4.Lines.Add('2. Жұмысшы фирманың ішкі ережелері мен заңдарына багынатын болады
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, Variants, Classes, Graphics, Controls, Forms,
Dialogs, 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 declarations }
public
{ Public declarations }
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 '+
'pass="' + edPassword.Text + '"';
Open;
end;
if ADOQuery1.RecordCount > 0 then
begin
Form1.USER := 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 ' +
'WHERE login ' +
'ORDER BY atijoni';
Open;
while not EOF do
begin
dbName.Items.Add(Fields[0].AsString);
Next;
end;
end;
end;
end.
unit duShowLog;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, Grids, DBGrids, DB, ADODB;
type
TdfShowLog = class(TForm)
DBGrid1: TDBGrid;
BitBtn1: TBitBtn;
ADOQuery1: TADOQuery;
DataSource1: TDataSource;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
procedure AddColumn (FName,FCaption : string;FWidth : integer);
public
{ Public declarations }
end;
var
dfShowLog: TdfShowLog;
implementation
{$R *.dfm}
uses
Unit1, duDataModule;
procedure TdfShowLog.AddColumn(FName, FCaption: string; FWidth: integer);
begin
with DBGrid1.Columns.Add do
begin
FieldName := 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 ' +
'WHERE logs.user = bd_rabotniki.kod AND ' +
' logs.action = actions.id
'ORDER BY evtdate';
Open;
end;
DBGrid1.Columns.Clear;
AddColumn('evtdate', 'Уакыты', 120);
AddColumn('atijoni', 'Колданушы', 250);
AddColumn('actionname', 'Арекет аты', 100);
AddColumn('message', 'Сипаттамасы', 150);
AddColumn('rowid', 'Жол номері', 60);
end;
end.
unit duDataModule;
interface
uses
SysUtils, Classes, DB, ADODB;
type
Tdm = class(TDataModule)
ADOConnection1: TADOConnection;
private
{ Private declarations }
public
function GetTempQuery : TAdoQuery;
end;
var
dm: Tdm;
implementation
{$R *.dfm}
{ Tdm }
function Tdm.GetTempQuery: TAdoQuery;
begin
Result := TAdoQuery.Create(Self);
Result.Connection := ADOConnection1;
end;
end.
unit Unit5;
interface
uses Windows, SysUtils, 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: TImage;
procedure OKButtonClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
AboutBox: TAboutBox;
implementation
{$R *.dfm}
procedure TAboutBox.OKButtonClick(Sender: TObject);
begin
Close
end;
end.
unit Unit4;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, QuickRpt, ExtCtrls, QRCtrls, StdCtrls;
type
TForm4 = class(TForm)
QuickRep1: 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;
QRDBImage1: TQRDBImage;
QRLabel7: TQRLabel;
QRDBText1: TQRDBText;
QRLabel8: TQRLabel;
QRDBText2: TQRDBText;
QRLabel9: 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: TQRDBText;
QRLabel19: TQRLabel;
QRMemo3: TQRMemo;
QRLabel20: TQRLabel;
QRLabel21: TQRLabel;
Label1: TLabel;
Label2: TLabel;
QRMemo6: TQRMemo;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form4: TForm4;
implementation
uses unit3,unit1;
{$R *.dfm}
end.
unit Unit6;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, QRCtrls, QuickRpt, ExtCtrls, Buttons, StdCtrls, WordXP,
OleServer;
type
TForm6 = class(TForm)
QuickRep3: TQuickRep;
QRBand2: TQRBand;
QRLabel20: 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;
QRLabel18: TQRLabel;
QRShape2: TQRShape;
QuickRep1: TQuickRep;
QRBand1: TQRBand;
QRLabel19: 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;
QRLabel39: TQRLabel;
QRLabel40: TQRLabel;
QRLabel41: TQRLabel;
QRLabel42: TQRLabel;
QRLabel43: TQRLabel;
QRLabel44: 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;
QRLabel53: TQRLabel;
QRLabel54: TQRLabel;
QRLabel55: TQRLabel;
QRLabel56: TQRLabel;
QRLabel58: TQRLabel;
QRLabel59: 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;
QRLabel101: TQRLabel;
QRLabel102: TQRLabel;
QRLabel103: TQRLabel;
QRLabel104: 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: TQRLabel;
QRLabel116: TQRLabel;
QRLabel117: TQRLabel;
QRLabel118: TQRLabel;
QRLabel119: TQRLabel;
QRLabel120: TQRLabel;
QRShape7: 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;
QRBand10: TQRBand;
QRMemo2: TQRMemo;
QRLabel77: TQRLabel;
QRLabel78: TQRLabel;
QRLabel79: TQRLabel;
QRLabel80: TQRLabel;
QRLabel81: TQRLabel;
QRLabel82: TQRLabel;
QRLabel83: TQRLabel;
QRLabel84: TQRLabel;
QRLabel85: TQRLabel;
QRLabel86: TQRLabel;
QRLabel87: TQRLabel;
QRLabel88: TQRLabel;
QRLabel89: TQRLabel;
QRLabel90: TQRLabel;
QRLabel91: TQRLabel;
QRLabel92: TQRLabel;
QRLabel93: TQRLabel;
QRLabel94: TQRLabel;
QRLabel95: TQRLabel;
QRShape5: TQRShape;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form6: TForm6;
implementation
uses Unit1, Unit9;
{$R *.dfm}
end.
unit Unit7;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, QRCtrls, QuickRpt, ExtCtrls;
type
TForm7 = class(TForm)
QuickRep1: TQuickRep;
QRBand1: TQRBand;
QRBand2: TQRBand;
QRLabel1: TQRLabel;
QRMemo1: TQRMemo;
QRLabel2: TQRLabel;
QRLabel3: TQRLabel;
QRLabel4: TQRLabel;
QRLabel5: TQRLabel;
QRLabel6: TQRLabel;
QRLabel7: TQRLabel;
QRLabel8: TQRLabel;
QRLabel9: TQRLabel;
QRLabel10: TQRLabel;
QRShape1: TQRShape;
QRLabel12: TQRLabel;
QuickRep3: TQuickRep;
QRBand5: TQRBand;
QRBand6: TQRBand;
QRLabel30: TQRLabel;
QRLabel31: TQRLabel;
QRLabel36: TQRLabel;
QRMemo3: 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: TQRLabel;
QRLabel24: TQRLabel;
QRLabel25: TQRLabel;
QRLabel26: TQRLabel;
QRLabel27: TQRLabel;
QRLabel28: TQRLabel;
QRShape2: 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, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;
type
TForm8 = class(TForm)
Button1: TButton;
MonthCalendar1: TMonthCalendar;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form8: TForm8;
implementation
uses Unit1, Unit2;
{$R *.dfm}
procedure TForm8.FormCreate(Sender: 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, ExtCtrls, DBCtrls, Grids, DBGrids, StdCtrls, Mask,
ComCtrls, 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: TDBEdit;
Label2: TLabel;
Button2: TButton;
Button1: TButton;
MonthCalendar1: TMonthCalendar;
Edit1: TEdit;
Edit2: TEdit;
Button3: 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: TObject);
procedure Button5Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
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
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;
procedure TForm9.Button3Click(Sender: TObject);
begin
form9.Edit1.Text:=datetostr(form9.MonthCalendar1.Date);
end;
procedure TForm9.Button4Click(Sender: TObject);
begin
form9.Edit2.Text:=datetostr(form9.MonthCalendar1.Date);
end;
procedure TForm9.Button1Click(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: TObject);
begin
ADOTable1.Active := True;
ADOTable2.Active := True;
ADOQuery1.Active := True;
end;
end.
unit Unit10;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, ADODB, DB, ExtCtrls, DBCtrls, Grids, DBGrids,
Mask;
type
TForm10 = class(TForm)
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
ADOQuery1: TADOQuery;
MonthCalendar1: TMonthCalendar;
Edit1: 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: TButton;
DBEdit1: TDBEdit;
DBEdit2: TDBEdit;
DBEdit3: TDBEdit;
DBEdit4: TDBEdit;
procedure Button1Click(Sender: 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
form10.Edit1.Text:=datetostr(form10.MonthCalendar1.Date);
end;
procedure TForm10.Button2Click(Sender: TObject);
begin
form10.Edit2.Text:=datetostr(form10.MonthCalendar1.Date);
end;
procedure TForm10.Button3Click(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 Unit11;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, jpeg, ExtCtrls, Buttons;
type
TForm11 = class(TForm)
Image1: TImage;
SpeedButton1: TSpeedButton;
procedure SpeedButton1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form11: TForm11;
implementation
uses Unit1, duLogin, unit3,unit4, Unit5, Unit2, Unit8, Unit10, Unit9,
Unit12, Math, Unit6, Unit7;
{$R *.dfm}
procedure TForm11.SpeedButton1Click(Sender: TObject);
begin
dfLogin.Show;
end;
end.
unit Unit12;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, DBGrids, DB, ADODB;
type
TForm12 = class(TForm)
Label1: TLabel;
Button1: TButton;
dgVacant: TDBGrid;
qrGetVacant: TADOQuery;
dsGetVacant: TDataSource;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
// procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form12: TForm12;
implementation
uses Unit6, Unit1, Unit7, duDataModule;
{$R *.dfm}
procedure TForm12.FormCreate(Sender: TObject);
begin
with qrGetVacant do
begin
Close;
SQL.Text :=
'SELECT bd_rabotniki.idkizmet, kizmetter.kizmet, kizmetter.vacant, ' +
' FIRST(kizmetter.vacant)-COUNT(bd_rabotniki.kod) AS
'FROM kizmetter, bd_rabotniki ' +
'WHERE bd_rabotniki.idkizmet = kizmetter.id ' +
'GROUP BY bd_rabotniki.idkizmet, kizmetter.kizmet, kizmetter.vacant ' +
'HAVING kizmetter.vacant-COUNT(bd_rabotniki.kod) > 0 ' +
'ORDER BY kizmetter.kizmet';
Open;
end;
with dgVacant.Columns do
begin
with Add do
begin
Title.Caption := 'Кызмет атауы';
FieldName := 'kizmet';
Width := 400;
end;
with Add do
begin
Title.Caption := 'Адам саны';
FieldName := 'required';
Width := 100;
end;
end;
end;
procedure TForm12.Button1Click(Sender: TObject);
begin
Form7.lbKizmet.DataSet := Form12.qrGetVacant;
Form7.lbKizmet.DataField := 'kizmet';
Form7.QuickRep3.Preview;
end;
end.
Мәліметтер қоры кестесімен жұмыс
Деректер қорының физикалық моделін құру
Экономикалық ақпараттық жүйе түсінігі
Деректер базасын қалыпты формаға келтіру
Visual Basic ортасының деректер қоймасына қатынаудың құрауышының қызметі
«Интернет ресурстары» мәліметтер қорын құру
Аптека жұмысының мәліметтер базасын құру
“Персонал” бағдарламасының SQL тіліндегі негіздері
Delphi ортасында мәліметтер қорымен жұмыс
Delphi және мәліметтер қоры