Автор работы: Пользователь скрыл имя, 17 Декабря 2013 в 17:39, реферат
Мәліметтер қорының әр кестесі өрістердің жиынтығынан тұратын жеке құрылымға ие болады. Әр өрстің мәліметтерінің жиынтығы мәліметтің типін сипаттайтын мазмұнынан тұрады, оған анықталған орында мән сәйкес келуі тиіс.
Delphi тіліндегі мәліметтер қорынының қосымшасындағы әр жинаққа өзіне сәйкес объект тура келеді. Өрістің негізгі объектісі болып Tfield классы табылады, ол абстрактілі өріспен жұмыс жасауға да негізделген. Ол мәліметтердің типіне сәйкес келеді. Осы базалық классқа басқа класстар сәйкес келеді.
Options параметрі келісім
бойынша символдық жолды
іздеуге пайдалынады. Бұл
• loCaseInsensitive (әріптердің регистрі ескерілмейді);
• loPartialKey (мәндердің кейбір бөлігі сәйкес болуды білдіреді);
Бір өріс бойынша іздеуге мысал:
Table1.Locate(‘Number’, 123, []);
Іздеу Number өрісі бойынша орындалады, және бұл өрістің мәні 123 саны болатын бірінші жазба ізделінеді.
Мысал ретінде мәліметтер жиынынан іздеуді қамтамасыз ететін оқиғаны өңдеуді қарастырамыз. Форма түрі 11.4.2-суретте келтірілген.
Сурет 11.4.2 - Іздеу формасының мысалы
Пайдаланушы товар аты (Name) және құны (Price) өрістері бойынша іздеуді жүзеге асырады. Іздеу процесі «Іздеу» түймесін шерткен соң басталады.
Төмендегі оқиғаны өңдеу модулінің мәтіні келтірілген.
procedure TForm1.Button1Click(Sender: TObject);
Var Keyfields: String;
KeyValues: Variant;
Options: TLocateOptions;
begin
if not (CheckBox1.Checked or CheckBox2.Checked) then begin
MessageDlg('yt pflfys eckjdbt gjbcrf', mtInformation, [mbOK],0);
exit;
end;
// Бір уақытта Name, Price екі өрісі бойынша іздеу
if CheckBox1.Checked and CheckBox2.Checked then begin
KeyFields:='Name;Price';
KeyValues:=VararrayOf([edit1.
end
// Екі өрістің біреуі бойынша іздеу
else begin
// Name өрісі бойынша іздеу
if CheckBox1.checked then begin
Keyfields:='Name';
keyvalues:=edit1.Text;
end;
// Price өрісі бойынша іздеу
if CheckBox2.Checked then begin
KeyFields:='Price';
KeyValues:=edit2.Text;
end;
end;
// Іздеу әріптердің
регистріне байланысты емес
// кейбірелері сәйкес болатын мүмкіндіктерімен іздеу
Options:=[loCaseInsensitive,
// Жазба табылған жоқ
if not Table1.Locate(KeyFields,
Beep;
MessageDlg('Жазба табылмады, mtInformation, [mbOK],0);
exit;
end;
end;
Тізбектеп іздеуді, жазба
өрістері мәні мен іздеу
үшін берілген мәннің ұқсас
сәйкестерін іздеуге арналған
FindNearest, SetNearest, EditNearest және GotoNearest
әдістерінің көмегімен
Жазбаларды тізбектеп іздеу үшін, қосымша форма оқиғасын өңдеуге мысал қарастырайық.
Сурет 11.4.3 - Тізбектеп іздеу формасына мысал
Қосымшаның форма компоненті үшін оқиғаны өңдеу программасы төменде келтірілген.
procedure TForm1.Edit1Change(Sender: TObject);
Var strField: String;
begin
// егер іздеу режимі
қосырмаған болса, онда
if not CheckBox1.Checked then exit;
// іздеу үшін өрісті таңдау
case RadioGroup1.ItemIndex of
0:strField:= 'Name';
1:strField:= 'Firm';
2:strField:= 'City';
end;
// іздеуді орындау
Table1.Locate(strField,edit1.
[loCaseInsensitive,
end;
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
edit1Change(Sender);
end;
procedure TForm1.RadioGroup1Click(
begin
edit1Change(Sender);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.Close;
end;
Мәліметтерді електен өткізу
Мәліметтер жиынында таңдалынатын жазбалар үшін шек қою –фильтрация деп аталады. Delphi жүйесі жазбаларды фильтрациялау мүмкіндігін өрнек бойынша және аралығы бойынша жүзеге асырады.
Бақылау сұрақтары:
1. Индекстік өрістің қажеттілігі?
2. Мәліметтерді сұрыптау қалай жүргізіледі?
3. Мәліметтерді іздеу не үшін қажет?
4. Іздеу әдістерінің түрлері?
5. Мәліметтерді електен өткізу дегеніміз не?
Тақырыбы 11.5 Сүзгілеу тәсілдері
Мәліметтер жиынында таңдалынатын жазбалар үшін шек қою –фильтрация деп аталады. Delphi жүйесі жазбаларды фильтрациялау мүмкіндігін өрнек бойынша және аралығы бойынша жүзеге асырады.
Өрнек бойынша електен өткізу
Мәліметтер жиынын өрнек бойынша фильтрациялауды қолдану барысында, жазбаларды таңдау шартымен берілген фильтрдің өрнегін қанағаттандыратын жазбалармен шектеледі. Фильтрдің өрнегін беру үшін String типті Filter қасиеті қолданылады.
Фильтрация шартын көрсетуге мысал ретінде келесі өрнекті келтірейік.
Oklad <= 20000
Post = ‘Инженер’ OR Post = ‘лаборант’
Бірінші өрнек
оклад өрісінің мәні 20000 аспайтын
барлық жазбаларды іріктеп
Фильтрді екпінді етуге және оны алып тастауға Boolean типті Filter қасиеті қолданылады. Қалыпты жағдайда бұл қасиеттің мәні False, және фильтрация өшірілген болады. Filtered қасиетіне True мәнін қойғанда фильтрация қосылады, және Filter қасиетінде жазылған фильтрді қанағаттандыратын мәліметтер жиынында жазбалар іріктелінеді.
Фильтрация параметрі TFilterOptions типті FilterOptions қасиетінің көмегімен беріледі. Бұл қасиет жиын типіне жатады, және екі мәннің комбинациясын қабылдайды:
• foCaseInsensitive – әріптердің регистрі ескерілмейді, яғни Post =
‘преподаватель’ фильтр өрнегіндегі преподаватель, ПРЕПОДАВАТЕЛЬ немесе Преподаватель бірдей мағынада қабылдана береді.
• foNoPartialCompare – іріктеу үшін, өріс және мәндерінің толық сәйкес болуын тексеруді орындайды. әдетте символдар жолы үшін қолданылады. Мысалы, Post = ‘П*’ фильтрі үшін foNoPartialCompare мәні қосылғанда Post өрісінде Преподаватель, Преп-ль, немесе Профессор мәндерінен тұратын жазбалар іріктелініп алынады.
Өрнек бойынша мәліметтер жиынын фильтрациялау үшін, форма оқиғасын өңдеу мысалын қарастырайық. Форма 11.5.1-суретте келтірілген.
procedure TForm1.FormCreate(Sender: TObject);
begin
Table1.FilterOptions:=[
Table1.Filtered:=False;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Table1.Filtered:=True;
Table1.Filter:=edit1.Text;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Table1.Filtered:=False;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Form1.Close;
end;
end.
Жазбаларды таңдау үшін дайын өрнектердің тізімін пайдаланған да ыңғайлы болады. Мұндай режим ComboBox және Memo компоненттерінің көмегімен жасалынады. Егер фильтрация шарты белгілі және өзгермейтін болса, онда пайдаланушы жазбаларды іріктеуді CheckBox жалаушасының және RadioButton айырып-қосқышының көмегімен басқара алады.
Форма қосымшасы оқиғасын өңдеуге мысалы ретінде, пайдаланушы фильтрацияны екі өріс бойынша немесе өрнегі бойынша басқару мүмкіндігін қолданатын, әйтпесе фильтрацияны алып тастайтын қарастырайық.
Сурет 11.5.2 - Бірнеше өріс бойынша електен өткізу формасына мысал
procedure TForm1.FormCreate(Sender: TObject);
begin
Table1.Filter:='';
Table1.FilterOptions:=[
Table1.Filtered:=True;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Table1.Filtered:=True;
// оклад бойынша фильтрациялау
if Radiobutton1.Checked then table1.Filter:='Salary >'+
Edit1.Text+ 'AND Salary <'+Edit2.Text;
// туған күні бойынша
if Radiobutton2.Checked then table1.Filter:='Birthday >'+
DateToStr(DateTimePicker1.
'+DateToStr(DateTimePicker2.
// өрнек бойынша фильтрациялау
if Radiobutton3.Checked then Table1.filter:=edit3.Text;
if Radiobutton4.Checked then Table1.Filter:='';
end;
Ең кіші және ең үлкен датаның мәнін енгізу үшін екі TDateTimePicker (DateTimePicker1.Date және DateTimePicker2.Date) типті компоненттер қолданылады. Окладтың мәндеріне шек қою үшін Edit1.Text және Edit2.Text бір жолды редакторлары қолданылды.
Аралық бойынша електен өткізу
Аралық бойынша фильтрацияда мәліметтер жиынына өрістерінің мәндері көрсетілген аралықта болатын жазбалар енеді, яғни фильтрация шарты мәні >төменгі шекара AND мәні < жоғарғы шекара түріндегі өрнек болып табылады. Өрнек бойынша фильтрациядан айырмашылығы кестенің барлық жазбалары тізбектеліп қарап шыққанда, аралық бойынша фильтрациялау индекстік-тізбектелген әдіспен жүргізіледі, сондықтан фильтрацияның бұл тәсіліне тек индекстік өрістер қолданылады. Өріс аты, жазбаларды таңдау үшін критерий ретінде көрсетілген аралық, IndexName IndexFieldNames қасиеттерінің көмегімен ағымдағы сияқты қоюлуы керек. Егер ағымдағы индекс қойылмаса, онда келісім бойынша басты индекс қолданылады.
Аралық бойынша фильтрацияны қосу және ажырату ApplyRange және CancelRange әдістері қолданылады.
SetRangeStart және SetRangeEnd әдістері аралықтың төменгі және жоғарғы шекараларын қояды. Аталған процедуралардың параметрлері жоқ, сондықтан аралық шекараларын қою үшін меншіктеу инструкциясын қолданылады. Сонымен қатар SetRangeStart және SetRangeEnd әдістері мәліметтер жиынын dsSetKey режиміне ауыстырады.
Алдын ала қойылған аралық шекараларын өзгертуге SetRangeStart және SetRangeEnd әдістерінің әрекеттеріне сәйкес келетін, EditRangeStart және EditRangeEnd әдістері арналған.
Аралық бойынша фильтрацияны қамтамасыз ететін қосымша формасы оқиғасын өңдеу модулін мысал ретінде қарастырайық.
Сурет 11.5.3 - Аралық бойынша електен өткізу формасына мысал
procedure TForm1.FormCreate(Sender: TObject);
begin
Table1IndexName:='indSalary';
end;
// Salary өрісі бойынша фильтрация
/ / бұл өрістің индексі
ағымдағы индекс сияқты
procedure TForm1.Button1Click(Sender: TObject);
begin
with Table1 do begin
// аралықтың төменгі шекарасын қою
SetRangeStart;
FieldByName('Salary').
// аралықтың жоғарғы шекарасын қою
SetRangeEnd;
FieldByName('Salary').
// фильтрацияны қосу
ApplyRange;
end;
end;
//фильтрацияны алу
procedure TForm1.Button2Click(Sender: TObject);
begin
Table1.CancelRange;
End;
end;
Бақылау сұрақтары:
1. Електен өткізу дегеніміз не?
2. Өрнек бойынша електен өткізу қалай жүзеге асырылады?
3. Аралық бойынша електен өткізу қалай жүзеге асырылады?
4. Аралық бойынша електен өткізу әдістері?
Тақырыбы 11.6. Бірнеше кестелердегі мәліметтер жиынтығын құру және өңдеу
Дәріс мақсаты: Байланысқан кестелермен жұмыс жасауды қарастыру.
Кілттік сөздер: байланыс, байланысқан кесте, негізгі кесте, бағынышты кесте, алғашқы кілт, сыртқы кілт.
Объектілі бағдарланған модель
Объектілі бағдарланған мәліметтер моделінде мәліметтер қорының жеке жазуларын идентификациялауға мүмкіндік бар. МҚ-ның жазулары мен оны өңдеу функцияларының арасында объектілі бағдарланған программалау тілдерінің командаларының көмегімен өзара байланыс тағайындалады.