Рнек бойынша електен ткізу.

Мліметтер жиынын рнек бойынша фильтрациялауды олдану барысында, жазбаларды тадау шартымен берілген фильтрді рнегін анааттандыратын жазбалармен шектеледі. Фильтрді рнегін беру шін String типті Filter асиеті олданылады.

Фильтрация шартын крсетуге мысал ретінде келесі рнекті келтірейік.

Oklad <= 20000

Post = ‘Инженер’ OR Post = ‘лаборант’

Бірінші рнек оклад рісіні мні 20000 аспайтын барлы жазбаларды іріктеп алады. Екінші рнек маманды рісі инженер немесе лаборант мнінен тратын жазбаларды іріктеуді амтамасыз етеді.

Фильтрді екпінді етуге жне оны алып тастауа Boolean типті Filter асиеті олданылады. алыпты жадайда бл асиетті мні False, жне фильтрация шірілген болады. Filtered асиетіне True мнін ойанда фильтрация осылады, жне Filter асиетінде жазылан фильтрді анааттандыратын мліметтер жиынында жазбалар іріктелінеді.

Фильтрация параметрі TFilterOptions типті FilterOptions асиетіні кмегімен беріледі. Бл асиет жиын типіне жатады, жне екі мнні комбинациясын абылдайды:

• foCaseInsensitive – ріптерді регистрі ескерілмейді, яни Post =

‘преподаватель’ фильтр рнегіндегі преподаватель, ПРЕПОДАВАТЕЛЬ немесе Преподаватель бірдей маынада абылдана береді.

• foNoPartialCompare – іріктеу шін, ріс жне мндеріні толы сйкес болуын тексеруді орындайды. детте символдар жолы шін олданылады.

Мысалы, Post = ‘П*’ фильтрі шін foNoPartialCompare мні осыланда Post рісінде Преподаватель, Преп-ль, немесе Профессор мндерінен тратын

жазбалар іріктелініп алынады.

рнек бойынша мліметтер жиынын фильтрациялау шін, форма оиасын деу мысалын арастырайы. Форма 24-суретте келтірілген.

24-сурет. рнек бойынша електен ткізу формасыны мысалы

 

Мліметтер жиынын фильтрациялау екі тймені жне редакциялау рісіні кмегімен орындалады. Фильтровать (btnFilter) тймесін басу барысында мліметтер жиыныны Filtered асиетіне True мні меншіктелу жолымен фильтр орындалады. edtFilter редакторы фильтр рнегін оюа арналан. Фильтрді орындалуында рнектегі шартты анааттандыратын жазбаларды іріктеу орындалады. Все записи (btnAllrecord) тймесін басанда фильтр ажыратылады, барлы жазбалар крсетіледі.

Тменде Form1 форма осымшасыны ш оианы деу модулі келтірілген.

procedure TForm1.FormCreate(Sender: TObject);

begin

Table1.FilterOptions:=[foCaseInsensitive];

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 айырып-осышыны кмегімен басара алады.

Форма осымшасы оиасын деуге мысалы ретінде, пайдаланушы фильтрацияны екі ріс бойынша немесе рнегі бойынша басару ммкіндігін олданатын, йтпесе фильтрацияны алып тастайтын арастырайы.

25-сурет. Бірнеше ріс бойынша електен ткізу формасына мысал

 

procedure TForm1.FormCreate(Sender: TObject);

begin

Table1.Filter:='';

Table1.FilterOptions:=[foCaseInsensitive];

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.Date)+'AND Brithday <

'+DateToStr(DateTimePicker2.Date);

// рнек бойынша фильтрациялау

if Radiobutton3.Checked then Table1.filter:=edit3.Text;

if Radiobutton4.Checked then Table1.Filter:='';

end;

Е кіші жне е лкен датаны мнін енгізу шін екі TdateTimePicker (DateTimePicker1.Date жне DateTimePicker2.Date) типті компоненттер олданылады. Окладты мндеріне шек ою шін Edit1.Text жне Edit2.Text бір жолды редакторлары олданылды.