Делфи және мәліметтер қоры

Автор работы: Пользователь скрыл имя, 08 Июня 2015 в 11:14, реферат

Описание работы

Бұл кезеңдерді локальды мәліметтер қорын қолданып BorlandDelphi7 ортасында орындау әрі жеңіл, әрі тиімді. Осы орайда мәліметтер қорын қолдана отырып ақпараттық жүйелерді құру және автоматтандырудың жобасы жасалынып, оның орындалуына әдістемелік нұсқаулар жазылды.
Оқу құралында келтірілген әр мысалдың Дельфи тілінде жобалық пішіні жасалып, бағдарламалары құрылуы оның практикалық маңыздылығын арттырады деген ойдамыз.

Содержание работы

Кіріспе
1 Мәліметтер қорын жобалау және ақпараттық жүйелер
1.1 Деректердің шамадан тыс қайталануы және аномалиялар
1.2 Ақпараттық жүйелерді жобалау
2 Delphi ортасында мәліметтер қорына рұқсат алу механизмдері
2.1 ADO провайдерлері
3 Мәліметтер қорын құру және басқару
3.1 Мәліметтер қоры кестелерін құру және басқару
3.2 Мәліметтер қоры кестесімен жұмыс
3.3 Клиенттік қосымшада жоғарғы мәзір құру
3.4 Мемо-өрістер, бағандарды жөндеу және деректерді іздеуді ұйымдастыру
3.5 Сұраныс құру
3.6 Есеп құру
4 Delphi7 ортасында локальды деректер қорын қолданып ақпараттық жүйелер құру
4.1 «Кадрлар бөлімі» ақпараттық жүйесінің жобасы
4.2 Мәліметтер қоры өзгерісін журналға тіркеу
5 Серверлік мәліметтер қоры және interbase серверімен танысу
5.1 INTERBASE локальды сервері
5.2 Индекс құру
5.3 Delphi7 және мәліметтер қоры серверлері
5.4 Генераторлар мен триггерлер
Қортынды
Әдебиеттер тізімі

Файлы: 1 файл

621.doc

— 2.30 Мб (Скачать файл)

38-сурет-Actions кестесінің өрістер типі мен толтырылған күйі

 

қандай мақсатпен жіберілетінін автоматты анықтауға болады.

«Қызметкерлер» туралы негізгі кестемен «сапар» және «сапар мақсаты» кестелері бір бірімен байланысты болуы керек. Байланысу өрістері «Қызметкерлер» кестесінен kod өрісі, «Сапар» кестесінен fioNom өрісі, «Сапар мақсаты» кестесінен AimakNom өрісі болып табылады. Олар Схема данных терезесінде осы үш кілт бойынша байланысып, схемасын жасау керек (41-сурет).

Қызметкерлердің деректерін архивке сақтау үшін жаңа база («arh» деген

39-сурет-Sapar кестесінің өрістер типі мен толтырылған күйі

 

 

атаумен)  ашып қою керек (42-сурет). Онда қызметкерлер туралы негізгі деректер сақталатын бос орын дайын тұрады. Егер қызметкер жұмыстан шығып кеткеннен кейін бірнеше жылдан кейін өзінің жұмыс істегені туралы деректерді қажет етсе, ADO технологиясымен ДҚ құру үшін таңдап алынған провайдермен жұмыс істейді. «Кадрлар бөлімі» мәліметтер қорының провайдері ретінде Microsoft  Jet 4.0 OLE DB Provider (43-сурет) және МҚБЖ ретінде Microsoft Access–ті таңдайық.

 

 

40-сурет-SaparMaks кестесінің өрістер типі мен толтырылған күйі.

 

41-сурет-Кестелер арасындағы байланыс схемасы

 

архивтен табу керек болғандықтан, кестелердің архивтік файлын сақтаған дұрыс деп есептеледі.

 

42-сурет-«arh» кестесінің өрістер типі

 

Ол үшін ADOConnection1 комонентінің – ConnectionString қасиетіндегі көп нүктесі бар пернені басамыз, сосын ашылған терезеде «Build» пернесін басамыз. Шыққан терезедегі провайдерлер тізімінен Microsoft  Jet 4.0 OLE DB Provider провайдерін белгілеп, «далее» -ні таңдап, бірінші пунктте пернесін басамыз, Access-те «Қызметкерлер» ДҚ тауып көрсетеміз, «Проверить подключение» батырмасын басып, ішкі және сыртқы терезелерде «ок» пернесін басамыз.

43-сурет-Мәліметтермен байланыс орнату терезесі

Соңынша Login Promt-False, Connected-True әрекеттерін орындаймыз.

Жұмыс ітеу үшін келесі амалдарды орындаймыз.

  1. Access-те «Қызметкерлер»  мқ кестелерін құрып аламыз;
  2. Delphi Form1 терезесіне келесі компоненттерді орналастырамыз: ADO қатпарынан - ADO Connection, ADO Table; Data Controls қатпарынан – DB Navigator; Data Access қатпарынан – Data Source.
  3. Осы компоненттердің қасиеттерін тағайындаймыз:
    • ADO Table: Table Name-де ашылуға тиіс кестенің атауын көрсетеміз; Connection – ADO Connection1;
    • Data source белгілеп, Data Set – ADO Table1;
    • DB Greet белгілеп , Data Source - Data Source1;
    • DB Navigator белгілеп, Data Source - Data Source1;
    • ADO Table белгілеп Active – True орындауға жібереміз: RUN.

«Кадрлар бөлімі» жобасын сипаттау.

Жобаның мұқаба формасында басты формаға көшу пернесін қоюға болады. SpeedButton1 пернесін қойып, оны шерту оқиғасына мына кодты жазамыз: dfLogin.Show; Мұндағы dfLogin  формасы «Теңестіруден өтіңіз» деп аталсын (44-сурет.). Онда жүйеге кіру үшін батырма орнатылған. Батырмаға басқан кезде төкпелі тізім ашылады, бұл тізімге Өскемен қаласының №2 автобазасының кадрлар бөлімінің директоры мен кадрлар бөлімі инспекторының аты-жөндері  осы қалыптағы ADOQuery1 компонентінен келіп түседі. Ол сұранысты құру программада жазылған. Әрбір инспектор өздерінің жеке құпиялы сөздерімен кіретін болады. Яғни, жүйеге кез келген адам қатынай алмайды, өзгерістер енгізуге басқалардың мүмкіндігі болмайды. Бұл ақпараттық жүйенің қорғалғандығын көрсетіп отыр. 1-форманың ашылу оқиғасына мына кодты жазамыз:

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;

Бұл кодтың көмегімен мұқаба беттен кейінгі «Теңестіруден өтіңіз» формасы ашылып, ондағы қолданушы тізіміне кадрлар бөлімінде жұмыс істейтін инспекторлардың тізімі «bdrabotniki»деректер қорынан келіп түседі. Ал логинді енгізу жолағына қандай да бір логинді енгізсек осы деректер қорындағы инспекторлардың логинімен  салыстырылып, егер бірдей болса, ақпараттық жүйеге енуге болады.

Ескерту.  Формалардағы компоненттердің атауларын, қасиеттерін суреттерге қарап өздеріңіз анықтауыңыз керек.

Мысалы: 44-суретке қарай отырып, онда «Теңестіруден өтіңіз» формасында ADOQuery1, DBComboBox1 (оның Name қасиетін DBName деп өзгертеміз), TmaskEdit1 (оның Name қасиетін edPassword деп өзгертеміз) және  2 BitButton компоненттері қойылғандығы көрініп тұр, сол сияқты басқа формада да қандай компоненттер қойылғандығын анықтай аласыздар деген сенімдеміз.

 

44-сурет-Ақпараттық жүйеге рұқсат алу формасы

 

ADOQuery1 компонентін белгілеп Connection қасиетіне dm.ADOConnection1 деп жазамыз. Себебі ADOConnection1 компоненті 

 

45-сурет-DataModule формасы

 

DataModule формасында  орналасқан, оның  атауын қысқартып dm деп атаймыз (45-сурет).

 «Теңестіруден өтіңіз» формасындағы «ОК» батырмасын шерту оқиғасына мына кодты жазамыз:

  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;

Ал жүйеге енгізуден бас тарту үшін тағы бір BitButton пернесін қойып, Kind қасиетіне bkCancel мәнін көрсетеміз.

Теңестіруден өткеннен кейін «Кадрлар бөлімі» деп аталатын форма ашылады. Бұл формада көріп отырғанымыздай жоғарғы мәзірде үш бөлік тағайындалған (46-сурет).

Соның біріншісі – «Бөлім» деп аталады, мұнда қызметкерлердің қандай бөлімде жұмыс атқаратынын анықтап алуға мүмкіндік береді. ADOQuery1 компонентін белгілеп, Filter қасиетіне bolim='Администрация'  деп, Filtered қасиетіне false мәнін көрсетеміз де, «Бөлім» пунктіндегі «Администрация» командасын шерту оқиғасына мына кодты жазамыз:

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-сурет-Жеке парақ үлгісі

 

Қызметкер жұмысқа қабылданғаннан кейін оның жеке парағын да автоматты түрде жасай аламыз -  жеке парақты жасау бұл бағдарламаның жұмысына енеді (47-сурет).

Бас мәзірдің екінші пункті – «Іс-қимыл» бөлігі, мұнда қызметкерлерді жұмысқа қабылдау және жұмыстан шығару, статистика әрекеттері жүзеге асырылады. «Жұмысқа қабылдау» бөлігінің формасы frm_Prin_Rab деп аталады (48-сурет), оның көмегімен кадрлар бөліміне келіп жұмысқа қабылданған қызметкерлер туралы деректерді базаға сақтауды ұйымдастыру керек болсын. Ол үшін «Іс-қимыл» пунктінің «Жұмысқа қабылдау»  командасын шерту оқиғасына мына кодты жазамыз:

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.QRM_rab формасына жасап аламыз (49-сурет). Ол үшін осы формадағы «Келісімшарт (баспаға)» пернесін шерту оқиғасына мына кодты жазамыз:

 

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-сурет-Келісімшарт үлгісі

 

«Іс-қимыл» пунктіндегі «Жұмыстан шығару» командасын басқанда белгіленіп тұрған қызметкер жұмыстан шығарылды деп есептеліп, осы кестеден өшіріледі де басқа формадағы базаға сақталады (50-сурет). Жұмыстан шыққан қызметкерге жарлық шығару үшін «Өкімдер» - «Жұмыстан босату» командасын орындау керек.

Бұл формадағы «Бұйрық» пернесін шерту оқиғасына мына кодты жазамыз:

form6.QRLabel22.Caption:=form14.ADOQuery1['atijoni'];

form6.QRLabel25.Caption:=form14.ADOQuery1['kizmeti'];

form6.QRLabel23.caption:=form14.Edit1.Text;

form6.QRLabel29.caption:=form14.ADOQuery1['atijoni'];

Информация о работе Делфи және мәліметтер қоры