PDA

View Full Version : حساسیت نسبت به حروف کوچک وبزرگ



a-azad
چهارشنبه 20 آذر 1387, 10:59 صبح
سلام.
چطور می توانم با استفاده از خصوصیت filter acceptفیلتری انجام بدم که به حروف کوچک وبزرگ حساس نباشد.

Accept := (
(ComboBox1.Text='') or
(Pos(ComboBox1.Text,ADOQuery1.FieldByName('name'). AsWIDEString)>0)
) and
(
(Edit1.Text='') or
(pos(edit1.Text,ADOQuery1.FieldByName('num').AsWID EString)>0)
) and
(
(edit2.Text='') or
(Pos(edit2.Text,ADOQuery1.FieldByName('center').As widestring)>0)
) and
(
(edit8.Text='') or
(Pos(edit8.Text,ADOQuery1.FieldByName('numdoc').As WIDEString)>0) ) and
(
(edit9.Text='') or
(Pos(edit9.Text,ADOQuery1.FieldByName('datedoc').A swideString)>0))
and
(
(edit10.Text='') or
(Pos(edit10.Text,ADOQuery1.FieldByName('shhavale') .AsWIDEString)>0))
and
(
(edit11.Text='') or
(Pos(edit11.Text,ADOQuery1.FieldByName('datehavale ').AsWIDEString)>0))
and
(
(edit12.Text='') or
(Pos(edit12.Text,ADOQuery1.FieldByName('request'). AsWIDEString)>0) )
and
(
(edit13.Text='') or
(Pos(edit13.Text,ADOQuery1.FieldByName('datereques t').AsWIDEString)>0))
and
(
(ComboBox5.Text='') or
(Pos(ComboBox5.Text,ADOQuery1.FieldByName('send'). AsWIDEString)>0))and
(
(combobox2.Text='') or
(pos(combobox2.Text,ADOQuery1.FieldByName('type'). AsWIDEString)>0)
) and
(
(combobox3.Text='') or
(Pos(combobox3.Text,ADOQuery1.FieldByName('factory ').Aswidestring)>0)
) and
(
(edit3.Text='') or
(Pos(edit3.Text,ADOQuery1.FieldByName('serial').As WIDEString)>0) ) and
(
(edit4.Text='') or
(Pos(edit4.Text,ADOQuery1.FieldByName('feq').Aswid eString)>0))
and
(
(edit5.Text='') or
(Pos(edit5.Text,ADOQuery1.FieldByName('bandwith'). AsWIDEString)>0))
and
(
(edit6.Text='') or
(Pos(edit6.Text,ADOQuery1.FieldByName('pos').AsWID EString)>0))
and
(
(edit7.Text='') or
(Pos(edit7.Text,ADOQuery1.FieldByName('total').AsW IDEString)>0) )
and
(
(combobox4.Text='') or
(Pos(combobox4.Text,ADOQuery1.FieldByName('vahed') .AsWIDEString)>0))
and
(
(edit14.Text='') or
(Pos(edit14.Text,ADOQuery1.FieldByName('source').A sWIDEString)>0)) and
(
(edit15.Text='') or
(Pos(edit15.Text,ADOQuery1.FieldByName('destinatio n').AsWIDEString)>0));

a-azad
جمعه 22 آذر 1387, 11:51 صبح
سلام.لطفا یکی جواب بده

mafazel
شنبه 23 آذر 1387, 14:42 عصر
دوست عزیز دستور Pos که شما استفاده کردی Case Sensitive هست. بنابراین باید هر دو پارامتر آن را UpperCase کنی تا به حروف کوچک و برزرگ حساس نباشد.


(ComboBox1.Text='') or
(Pos(UpperCase(ComboBox1.Text),UpperCase(ADOQuery1 .FieldByName('name').AsWIDEString))>0)

دو تا مسئله دیگر هم هست:
1- این فیلتر که شما استفاده کردی وحشتناکه - در منطق برنامه ات تجدید نظر کن
2- رویداد OnFilterRecord که شما استفاده میکنی برای هر رکورد جدول فراخوانی می شود. بنابراین دستورات زیاد در این رویداد برنامه شما را کند می کند.
سعی کن از Query بیشتر استفاده کنی.