Автор работы: Пользователь скрыл имя, 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 Генераторлар мен триггерлер
Қортынды
Әдебиеттер тізімі
SELECT sum(mamandik.stip)
FROM student, mamandik
WHERE student.N_bilet=mamandik.N_
3) Топтағы ең жоғарғы стипендия мөлшерін білу керек болсын:
SELECT max(mamandik.stip)
FROM student, mamandik
WHERE student.N_bilet=mamandik.N_
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\
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.
Label2.Caption:=Form1.Query1.
«Іске қосу» пернесіне мына кодты жазыңыз:
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.
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.
ListBox2.Items.Add('Өлшемі (байт) -'+IntToStr(CField.DataSize));
ListBox2.Items.Add('Нөмірі -'+ IntToStr(CField.FieldNo));
if CField.CanModify then
ListBox2.Items.Add('
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(
end;
Программаны орындауға жіберіп, нәтижесін саралаңыз.
Өзін өзі бақылау сұрақтары
құрылады?
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 –
жылдам есеп компонентін
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 әдісін жазамыз:
If Radiogroup1.ItemIndex=0 then Begin
Form2.QRLabel14.Caption:=
Form2.QRLabel16.Caption:=
Form2.QRLabel20.Caption:=
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.
Form1.Query1['Adres']:=Ed_
Form1.Query1['telephon']:=Ed_
Form1.Query1['sotka']:=Ed_sot.
Form1.Query1['Data']:=Ed_god_
Form1.Query1['kizmeti']:=Ed_
Form1.Query1['bilimi']:=CB_
Form1.Query1['azamattik']:=Ed_
Form1.Query1['naz']:=Ed_nacia.
Form1.Query1['Sempol']:=CB_
Form1.Query1['Staj']:=Ed_
Form1.Query1['Pol']:=CB_pol.
if CB_child.Checked then Form1.Query1['balalari']:=true else Form1.Query1['balalari']:=
Form1.Query1['bolim']:=CB_
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 қасиетіне «Келісім мынадай жағдайларда тоқтатылады: