Практическая работа N2 9 фильтрация
данных
Фильтрация — это задание ограничений для записей, отбираемых
в набор данных.
Компонент позволяет не только
отображать. редактировать и упорядочивать данные. но и отфильтровывать записи
по определенным критериям.
Фильтрация задается свойствами Filter.
Filtered и FilterOptions компонента Table. Для задания выражения фильтра
используется свойство Fi1ter типа String. Фильтр представляет собой
конструкцию, в состав которой могуг входить следующие элементы:
имена полей таблиц:
литерыы (Литерал представляет собой значение. заданное явно,
например, число. строка или символ. Имена переменных в выражении фильтра
использовать нельзя.); операции сравнения Ф, о); арифметические операции (+4 —,
/ ломческие
операции (and. ог и not); круглые и квадратные скобки (Круглые скобки
применяются для изменения порядка выполнения арифметических и логических
операций. Если имя поля содержит пробелы, то его заключают в квадратные скобки,
в противном случае квадратные скобки необязательны.)
Например, если записать фильтр:
тогда отобразятся только ге записи, в которых поле
Name_tovara имеет значение Ручка,
( and 5) and тогда отобразятся записи о руках, стоимость
которых лежит в заданных пределах.
В условиях сравнения строк можно
использовать символ звездочки ”*“, который 03начает “любое количество любых
символов“ . Например, фильтр:
приведет к отображению всех записей. в которых значение
поля Name_tovara начинается с Ручка. В нашем примере будут отображены записи, у
которых в поле Name_Tovara содержатся значения Ручка, Ручка гелевая.
Для активизации и деактинизации фильтра
применяется свойство Filtered типа ВооКап. По умолчанию это свойство имеет
значение False (фильтрация выключена). При установке свойству Fi[tered значения
Тгие филырация включается, и в набор данных отбираются записи. которые
удовлетворяют фильтру, записанному н свойство FiIter.
Параметры фильтрации задаются с
[10М0[цью свойства Fi1terOptioas, это свойство принадлежит к множественному
типу и может принимать комбинации двух значений:
•
foNoPartiaICompare — запрещает частичное совпадение при
сравнении. если находится в положении Тгие, по умолчанию эта опция выключена;
•
f0CaseInsensitive — делает сравнение строк нечувствительными к
регистру, в котором записано условие фильтра. Если включить эту опцию.
перевести в положение Тгие, то слово Ручка, РУЧКА или ручка будут считаться
идентичными.
Использовать
в
|
|
|
|
|
униедде,мых подей нельзя! ! !
|
nonof1HMTb C03naHHoe
npnnoxeHV-te ynpaaneH91fi 6a301i naHHb1X "KaHuT0Bapbl", qT06b1 MOXHO
6b1no np0CMaTPhBaTb 3anvtcs,1 no TOMy v-1nH HHOMY Hav-1MeHOBaHHiO Togapa, a
TaKxe npocMaTp"BaTb 3ar1"Cvt o T0Bape, "MelOL.UeM CTOHMOCTb B onpeaeneHHOM
A/ana30He:
•nestema Edit, •rpn 'neMeHTa Label.
Ko,MnoneHT Editl BHOaa HansteHOBaHH*
Tonapa, Hee conepxustoe CBOiiCTBa Text yna.1HTe. K0MnoneHT Labell conep>Ki1T
•rexc•r, r103T0My B cBoiicrB0 Caption
BBeAHTe 3HaqeHHe T0Bapa.
K0M110HeHT Edit2 H Edit3 c,qyxaT BBona JlHanagoHa
H3MeHeHHR CTOHMOCTH Tonapa, ace conepKHM0e cB0iicTBa Text yJuvne. KounoHeHT
Labe12 H Labe13 conepxa•r
•rexeT,
no•yrosty B CBOiicrB0 Caption BBeJ1rre gnaqeHHe ueHa 0T H AO cooTBCTCTBeHHO.
Cognan•re
upouenypy 06pa60•rKi1 c06brrH* OnClick Kounoueu•ra RadioGroup1 nnntmrre cnenyyouutii Kon
uporpa,MMbt:
procedure
TForm1.RadioGroup1Click(Sender: TObject); begin if (Radiogroupl.ltemindex = O)
then Tablel.Filtered : = false else begin if (Radiogroupl.ltemlndex = l) then
end; end;
Ilpoue;typa npHJ10%eHHg OnCIick KOM110HeHTa RadoiGroup1 —
oeyrnecTBnger onepa•rop rTpouenypb1 ancii13Hpyer HH.ueKC rpy1T11b1 paA%0KHonoK,
I.e.
ganaHHb1ii
no.'1b30BaTeJ1eM cnocoö (l'H-1bTpauHH. Ec.TH paBeH
ny.•no (0T-cYTCTBHe 4)HJ1bTpa-
CBOhCTBO ycTa11aBJIRBaeTcg B
nonoav•ellvte True. 2
paBCH
I (bopwpyercg paBHb1M B Editl.
Ecnn nnnexc paBeH 2 paBH1,rM and Hbre
nonb30Ba•re-neM B
ECJIH
BHneKC paBeH 3
Ba
Filter (bopMHpyeTcR paBHb1M
BMecT0 roqeK
(bury•pnpyer
Aono,'1HHM
cognanuoe
no
HaHMeHOB.aHU10 T0Bapa), TO 3HaqeHne CBOiicTBa Filter rue BMecT0 ToqeK
(bnrypnpye•r TeKCT, OT06paxae-
no Ilene), TO
3Haqern1e CBOiiCTBa Filter (bopMHpyeTcg rx B.MecT0 TogeK aaHHb1e,
BBeneHEdit2 u Edit3.
no
HaHMeHOBaHH10 T0Bapa H ueHe). To 3HaqeHHe CBOüCTand
0T06paxaeMMii
B Editl, Edit2 H Edit3.
•rr06b1
MOXHO 61.1110 41HJ1bTpaUmo no Toq-
nouy
connaneHH10 no,'lg H anaqeHHA, BBene11Horo noncKa nepBb1M
6yxBay. 110"CK no nonoömo y;106en. Korna HCKOM0e Ha3Banne HeH3BeCTH0, a
KO 6yXBb1.
KOM110HeHT CheckBox1 npe:tHa3Haqe11
nepex;noqenug pen-inta noncKa — Toquoe coOTBeTCTBHe qac•rMHHoe. 3anafrre
CBOiiCTB0 Caption 3HaqeHHe T0HHoe cooTBeTCTBHe.
C03nafi•re npouenypy 06pa60TKH coöbrrng OnClick ms
Kosrnoneyn•a CheckBox1 BilHunne c,r1eÅy10111Hii KOA nporpæ.1Mbr.
procedure
TForm 1 .CheekBoxI Click(Sender: begin
if checkBox I Checked then
Table I. FilterOptions:— Table I
.FilterOptions+lf0NopartialComparel else Table I Tablel.
FilterOptions-[foNoPartialCompare]; end;
Vlpolte:typa
rrpwnoxeHv1" OnClick KOM110HeHTa CheckBox1 awrHBH3Hpye•r BblK.'110qaTe.tn,
aaHH0t•o KOMr10HeH-ra, ecJIH BblKmoqa•re.'1b CheckBoxl BEJn-oqeH, TO
Bbln011H*eTCS1 npoBepKa Ha no.'luoe coo•rwrCTBHe coaepm1Moro nong n gaaaHHovo
110HCKa. BBIK.UoqaTeJ1b CheckBoxl TO Bb1110JIH%eTCX nponepKa Ha
TOBapb1, KOTOPb1X cg Ha yKzryaHHoe 3HaqeHHe.
Irpouenypy 06pa6cyrKH c06brrng OnClick KOM110HeHTa
RadioGroupl: procedure TObject); begin if (Radiogroupl.ltemindex = O) then
Tablel.Filtered false else begin if (Radiogroupl.ltemindex = 1) then if
foNoPartialCompare in Tablel .FilterOptions then tablel.Filter:
else tablel Filter:
if (Radiogroupl.ltemindex
Table
1. Filter: = • ;
if (Radiogroupl.ltemindex = 3) then if foNoPartialCompare
in Tablel.FilterOptions then
Tablel.Filtered end;
end;
3
Оставьте свой комментарий
Авторизуйтесь, чтобы задавать вопросы.