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

Автор работы: Пользователь скрыл имя, 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 Мб (Скачать файл)

SELECT sum(mamandik.stip)

FROM student, mamandik

WHERE student.N_bilet=mamandik.N_bilet

3) Топтағы ең жоғарғы стипендия мөлшерін білу керек болсын:

SELECT max(mamandik.stip)

FROM student, mamandik

WHERE student.N_bilet=mamandik.N_bilet

5 Топтау операциясын сұраныста  қолдану. Топтау операциясы сұраныста  әртүрлі есептеу нәтижелерімен бірге студенттер туралы деректерді де көру керек болса, қолданылады.

1) стипендиясы 50%-ға төмендеген студенттердің аты-жөнін білу керек болсын:

SELECT student.fio,sum(stip)/2

FROM student, mamandik

WHERE student.Bilet=mamandik.Bilet and stip<>0

Group By fio

2) Мысалы: үш ай бойы сауда жүргізген менеджерлердің деректері сақталсын.  Тауарлар (Клиент, сентябрь, октябрь, ноябрь).

Сентябрь айына есеп жүргізу керек болсын:

SELECT Klient, sum(sent)

FROM tovar1

Group By klient

Сұраныстар және оларды пернелермен безендіру, кесте атрибуттарына рұқсат алу.

Кей жағдайда сұраныс жазбаларымен навигация қажет болса, оны орындайтын пернелерді өзіңіз жасап қоюға болады. 24-суретте көрсетілгендей қалып құрыңыз. BitButton1 және  BitButton2 компоненттерін белгілеп, Glyph ... қасиеттерін ашып, терезеде Load пернесін, c:Program files\common files\borlandChared\Images\Buttons жолын ашу, шыққан тізімнен arrow1d.bmp файлын BitButton1 үшін таңдап, arrow1u.bmp файлын BitButton2 үшін таңдап алыңыз.

Button1-дің тақырыбын «Іске қосу» деп беріңіз, бұл перне DBNavigator орнатылмаған кезде, сұраныс кестесі активтеніп, жазулар бойымен жылжуды орындау пернелерін іске қосатын болсын. Button2-нің тақырыбы «Шығу» болсын. Сонда 25-суреттегідей өзгерістер пайда болады.

 

24-сурет-Сұраныс жазбаларымен перне арқылы жылжу жобасы

 

BitButton1-ге мына кодты жазыңыз:

procedure TForm1.BitBtn1Click(Sender: TObject);

begin

Form1.Query1.Next;

CheckPosition; end;

Бұл программа орындалғанда жазулар бойымен төмен жылжу орындалады, және ең төменгі жазуға жеткенде бұл перне активті болмай қалады.

BitButton2-ге мына кодты жазыңыз:

procedure TForm1.BitBtn2Click(Sender: TObject);

begin

Form1.Query1.Prior;

CheckPosition;

end;

Бұл программа орындалғанда жазулар бойымен жоғары жылжу

25-сурет-Пернелердің қасиеттерін тағайындау

 

орындалады, және ең жоғарғы жазуға жеткенде бұл перне активті болмай қалады.

Procedure CheckPosition; процедурасын

private  { Private declarations }

бөлігінен кейін

public { Public declarations }

алдына, негізгі  программаға қосыңыз.

Ол процедураға мына кодты жазыңыз:

Procedure TForm1.CheckPosition;

begin

if Form1.Query1.Eof then Form1.BitBtn1.Enabled:=false else

Form1.BitBtn1.Enabled:=true;

if Form1.Query1.Bof then Form1.BitBtn2.Enabled:=false else

Form1.BitBtn2.Enabled:=true;

end;

Сұраныстағы жазуларды тек қана DBGRID-қа емес басқа да стандартты компоненттермен көруге болады. Мысалы: Label компонентіне жазуды шығаруды қарастырсақ, алдындағы CheckPosition; процедурасына келесі жолдарды қосу керек.

Label1.Caption:=Form1.Query1.Fields[1].AsString;

Label2.Caption:=Form1.Query1.FieldList[2].AsString;

«Іске қосу» пернесіне мына кодты жазыңыз:

procedure TForm1.Button1Click(Sender: TObject);

begin

Form1.Query1.Active:=true;

Form1.Button1.Enabled:=false;

CheckPosition;

Button3.Enabled:=True;

end;

Button2-ге мына кодты жазыңыз:

procedure TForm1.Button2Click(Sender: TObject);

begin

if Form1.Query1.Active then query1.Close;

Application.Terminate;

end;

Button3 қойып, оған мына кодты жазыңыз

procedure TForm1.Button3Click(Sender: TObject);

begin

Form2.ShowModal; end;

Ол 2-ші қалыпқа көшуді орындайды. 2-ші қалыпты құрыңыз (26-сурет):  File – New – Form.

Келесі қасиеттерді қойыңыз:

Caption = Деректер көзінің өрістер  тізімі

Position= poScreenCenter

BorderStyle= bsDialog

Онда Button1 қойып, келесі қасиеттерін көрсетіңіз:

Caption=Выход

ModalResult=mrOK

 

26-сурет-2-ші қалып терезесі

 

ListBox1, ListBox2. компоненттерін қойыңыз

ListBox1 –ге мына кодты жазыңыз:

 

procedure TForm2.ListBox1Click(Sender: TObject);

var FKind:string;

CField:TField;

begin

If ListBox1.ItemIndex=-1 then exit;

ListBox2.Items.Clear;

CField:=Form1.query1.FieldByName(ListBox1.Items[ListBox1.ItemIndex]);

 

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:='белгісіз типті атрибут';

    end;

    ListBox2.Items.Add('Түрі - '+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('жөнделмейтін атрибут');

End;

форм2 қалыбында тұрып, Events қатпарын ашып, (Object Inspector терезесінің), тізімнен FormShow  сөзін тауып, екі рет шерту керек, ашылған терезеде мына кодты жазыңыз::

procedure TForm2.FormShow(Sender: TObject);

var i:integer;

begin

Form2.ListBox1.Items.Clear;

Form2.ListBox2.Items.Clear;

for i:=0 to Form1.Query1.Fieldcount-1 do

Form2.ListBox1.Items.Add(Form1.query1.fields[i].fieldName);

end;

Программаны орындауға жіберіп, нәтижесін саралаңыз.

 

 

Өзін өзі бақылау сұрақтары

  1. Сұраныс деген не? Олардың неше түрі бар?
  2. Сұранысты құрудың қандай амалдары бар?
  3. ExecSQL әдісі  сұранысты қалай құрады?
  4. SQL операторлары көмегімен сұранысты қалай құруға болады?
  5. Таңдау сұранысы деген не?
  6. Өзара байланысқан кестелер арасында таңдау сұранысы қалай

        құрылады?

  1. Есептелетін өрістер арқылы таңдау сұраныстары қалай құрылады?
  2. Сұраныста стандартты функцияларды қолдануға бола ма? Қалай қолданады?
  3. Топтау операциясын сұраныста қолдану қалай орындалады?
  4. Сұраныстағы өрістердің типтері мен қасиеттерін қалай білуге болады?

 

3.6 Есеп құру

 

Есеп – мәліметтер қорындағы жазулардан құжат түрінде аяқталған нәтиже береді. Ол нәтижені бірден принтерге жіберуге болады. Есеп құру үшін Qreport (Есеп) панелін орнатып алу керек. Оқытушыдан есеп тақтасын орнататын файлды сұрап аласыз: dclqrt70.bpl. Сосын Дельфидің жоғарғы мәзірінен Component – InstallPackages командасын орындаймыз.  Шыққан терезеде add пернесін басамыз да оқытушы берген файлды ұсынамыз. Сосын ОК пернесін басып, Дельфидің негізгі терезесіндегі қатпарлардың ең соңғысы болып орнатылған Qreport (Есеп) қатпарын ашамыз да TquickRep компонентін қалыпқа қоямыз. Qreport панелінің басқа да компоненттері есептің қажетті элементтерін көрсетуге көмектеседі. Әр компоненттің Band деп аталатын жолағы болады. Есепте келесі негізгі компоненттер қолданылады:

Есеп жолағы компоненті TQRBand: Есепте белгілі бір элементтерді орналастыру, топтау бейнелеуін көрсетеді. TquickRep бейнелеуді көрнекі түрде орындайды.

Есеп тақырыбы компоненті TQRLabel: Tlabel компонентіне ұқсас. Есепте қажетінше мәтін жазуға көмектеседі.

Шығару өрісі компоненті  TQRDBText: Деректер жиынынан өріс мәндерін шығару үшін қолданылады. Деректер жиыны DataSet қасиетінде көрсетіледі. Ал қажетті белгілі бір өріс  DataField қасиетімен көрсетіледі. Компонент орналасқан жолақ мәні  BandType -  rbDetail болуы керек. BandType  қасиетінің одан басқа да мәндері бар:

RbTitle – есеп тақырыбы

RbPageHeader – жоғарғы колонтитул

RbDetail – жазу тақырыбы

RbPageFooter – төменгі колонтитул

RbSummary – есеп қортындысы

RbColumnHeader – баған тақырыбы

RbGroupFooter – бөлім тақырыбы

RbGroupHeader –бөлім қортындысы

Алдын ала қарау компоненті TQRPreview: Құрылған есепті баспаға шығармай тұрып алдын ала қарауға көмектеседі. Ол .шін  OnPreview оқиғасына  Preview әдісін шақырады. Есеп құруға мысал келтірейік: “Тауарлар”, “Клиенттер”,  “Тапсырыстар” кестелерін қолданамыз. Ол үшін жаңа қалып құрамыз. Себебі әр есеп әр терезеде құрылады.

File – New Form командасын орындаймыз. Unit1 және Unit2 модульдерін байланыстырамыз.

Qreport панелінен Form2 қалыбына  QuickRep –  жылдам есеп компонентін орналастырамыз. QuickRep1 қасиетін көрсетеміз.

DataSet - Table1 деп қолданылатын кестені көрсетеміз.

Bands қасиетінде  “+” батырмасын  басамыз:

HasTitle - есеп тақырыбына берілетін  облыс. Тақырыпты Qreport панеліндегі QRLabel1 компонентінің көмегімен жазамыз.

HasColumnHeader – есепте көрінетін  өрістер атауларына берілетін  облыс.

HasDetail – кестелерден алынатын деректерге бөлінетін облыс (детализация облысы деп аталады). Оны көрнекілеу үшін  QRShape1 компонентін қолданады.

Кестеден мәліметтердішақыру QRDBText компонентінің көмегімен орындалады. Оның екі қасиетін көрсетеміз:

DataSet -  Table1 деп.

DataField - FIO, Adres, т.б. деп өріс атауларын көрсетеміз.

Құрылған есепті көру үшін контекстік мәзірден Preview командасын орындаймыз. Пайда болған терезеде  PrintPreview батырмасын басамыз

 Есеп облыстарының келесі  қасиеттері бар:

HasPageFooter – төменгі колонтитул

HasPageHeader – жоғарғы колонтитул, қосымша QRLabel1, QRLabel2 компоненттерін қолданып, “Фирма1” дейміз

Есептің жалпы қасиеттері:

Options  - “+” 

FirstPageHeader – бірінші бетте жоғарғы  колонтитул бар ма, көрсету (True немесе False).

LastPageFooter -  соңғы бетте төменгі  колонтитул бар ма, көрсету (True немесе False)

HasSummary – қортынды жасау облысы True дейміз. QRLabel1, QrLabel2 компоненттерін  орналастырып «Сатып алушы клиенттер  саны» т.б. деп жазамыз

Form1 қалыбында “Қарау” батырмасын орналастырып, оны басқанда есеп құратын программалық кодта  Preview әдісін жазамыз:

Begin

If Radiogroup1.ItemIndex=0 then Begin

Form2.QRLabel14.Caption:=DatetoStr(Date);

Form2.QRLabel16.Caption:=TimetoStr(Time);

Form2.QRLabel20.Caption:=IntToStr(Table1.RecordCount);

Form2.QuickRep1.Preview;

End;

Form1 қалыбында “принтерге шығару”  деген атаумен Button2 батырмасын орналастырып, оны басқанда есепті принтерге  шығаратын программалық кодты  өз беттеріңізбен жазыңыздар. Print әдісі қолданылады.

Жалпы есеп құру.

Мысал қарастырайық. Бұл тапсырманы орындау үшін кесте құру керек. Кестеде студенттердің жұмысқа орналасқаны жайында, жанұялық жағдайы жайында қосымша деректер сақталсын. Онда студенттің аты-жөні (FIO), мекен жайы (Adres), үйдегі телефон нөмірі (telephon), ұялы телефон нөмірі (sotka), туған күні (Data), орналасқан қызметі (kizmeti), білімі (bilimi), азаматтығы (azamattik), ұлты (naz), жанұялық жағдайы (sempol), стаж өтілі (Staj), жынысы (pol), балалары бар ма жоқпа екендігін анықтайтын белгі (balalari типі логикалық болуы керек), орналасқан бөлімі (bolim) деген атаулармен аталған өрістер бар болуы керек. Кестені «student1» деген атаумен сақтаңыз. Бұл кестені жазулармен толтырудың қажеті жоқ, себебі мұнда іс-тәжірибеге барып, жұмысқа орналасқан студенттер туралы деректер ғана сақталынатын болады.

Form1 қалыбын құрып оған Query1, DBGrid1, DBNavigator1, DataSource1, Buttin1 компоненттерін  орналастырып, өзіңіз білетін қасиеттерді  тағайындау арқылы «student1» кестесін шақырып қойыңыз. 

Келесі формаға көшу үшін Buttоn1 компонентін белгілеп, Caption қасиетіне «Келесі формаға өту» деп жазып, оны шерту оқиғасына мына кодты жазыңыз:

procedure Tform2.Button1Click(Sender: TObject);

begin

Form1.Hide;

Form2.Enabled:=true;

end;

Бұл формаға қосымша 27-суреттегідей Form2 қалыбын құрыңыз. Бұл қалыптағы компоненттерді өзіңіз қойып, қасиеттерін анықтаңыз. «ОК» пернесін шерту оқиғасына қызметке қабылданған студенттің деректерін базаға сақтауды ұйымдастырамыз:

procedure Tform2.Button1Click(Sender: TObject);

begin

Form1.Query1.First;

Form1.Query1.Append;

Form1.Query1['FIO']:=Ed_fio.Text;

Form1.Query1['Adres']:=Ed_adres.Text;

Form1.Query1['telephon']:=Ed_tel.Text;

Form1.Query1['sotka']:=Ed_sot.Text;

Form1.Query1['Data']:=Ed_god_rozh.Text;

Form1.Query1['kizmeti']:=Ed_dolzh.Text;

Form1.Query1['bilimi']:=CB_obraz.Text;

Form1.Query1['azamattik']:=Ed_grazh.Text;

Form1.Query1['naz']:=Ed_nacia.Text;

Form1.Query1['Sempol']:=CB_Sem_pol.Text;

Form1.Query1['Staj']:=Ed_stazh.Text;

Form1.Query1['Pol']:=CB_pol.Text;

if CB_child.Checked then Form1.Query1['balalari']:=true else Form1.Query1['balalari']:=false;

Form1.Query1['bolim']:=CB_Otdel.Text;

Form1.Query1.Post;

Form2.Hide;

form1.Enabled:=true;

end;

 

Енді келісім шарт жасаудан, базаға сақтаудан бас тарту керек болса, «Cancel» пернесін шерту оқиғасына мына кодты жазыңыз:

 

27-сурет-Жұмысқа қабылдау формасы

 

procedure Tform2.Button2Click(Sender: TObject);

begin

form2.Hide;

form1.Enabled:=true;

end;

Ендігі кезекте жұмысқа қабылдау келісім шартын жасау үшін оның үлгісін жаңа формаға жасап қоямыз. Form3 қалыбын құрыңыз да Qreport қатпарынан келесі компоненттерді қалыпқа орналастырыңыз:

QRBand1 компонентін қойып BandType қасиетіне rbTitle деп көрсетіңіз. Осы жолақтың  үстіне QRMemo1 компонентін қойып, оның lines қасиетіне «Жұмысқа қабылдау  келісім шарты» деп жазыңыз. Сонда осы жолақ есептің тақырыбы болып бекітіледі. Есептің тақырыбынан кейін оның детальдары-элементтері көрсетілуі керек. Ол үшін QRBand2 компонентін қойып BandType қасиетіне rbDetail деп көрсетеміз. Енді осы жолақтың үстіне қажетінше бірнеше QRLabel, QRMemo компоненттерін қоямыз. QRLabel1 компонентін қойып, Lines қасиетіне «Өскемен каласы» деп жазамыз. QRLabel2 компонентін қойып Caption қасиетіне QRLдата деп жазамыз.  QRLabel3 компонентін қойып Caption қасиетіне QRLFio деп жазамыз.  Тура осы компоненттің астына QRLabel4 компонентін қойып Caption қасиетіне «Аты-жөні» деп жазамыз. QRLabel5 компонентін қойып бос қалдырамыз. QRLabel7 компонентін қойып Caption қасиетіне «болып қабылданды» деп жазамыз. QRMemo2 компонентін қойып, Lines қасиетіне «бұдан былай келісімде "жұмысшы" деп аталады және де» деп жазамыз. QRMemo3 компонентін қойып, Lines қасиетіне «Жұмысшыға жылына бір рет Қазақстан Республикасының еңбек туралы  Заңы кодексіне сәйкес, узақтығы 18 жұмыс күні мөлшерінде ақылы демалыс беріледі. Демалыстың берілу мерзімін әкімшілік анықтайды. Жұмысшының қалауына қарай екі бөлікке де бөлініп беріледі. Мұнда демалыстың бір бөлігінің ұзақтығы кемінде бес жұмыс күнінен тұрады. Ақы төленбейтін қосымша демалыс 10 жұмыс күні мөлшерінде жұмысшының жеке  басының жағдайына байланысты әкімшілік шешімімен беріледі.» деп жазамыз. QRMemo4 компонентін қойып, Lines қасиетіне «Өскемен калалық №2 автобаза болімінін атынан бөлім меңгерушісі Е.Н.Нусіпов, будан былай келісімде "жумыс беруші" деп аталады, екінші жактан» деп жазамыз.  QRMemo5 компонентін қойып, Lines қасиетіне «Келісім мынадай жағдайларда тоқтатылады:

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