PDA

View Full Version : مشکل در فیلتر کردن فیلدهای عددی



محسن شمس
سه شنبه 10 آبان 1384, 10:07 صبح
آقا ما برای فیلتر کردن فیلد های غیر عددی از کد زیر استفاده می کنیم
adoTable2.Filter :='Name like '+chr(39)+Edit1.Text+'%'+chr(39)
حالا می خواهم به جای فیلد Name فیلد Sen را بگذارم
من که گذاشتم خطا داد

خواهشمند است این بنده را یاری نمائید

ممنون


یا علی

Touska
سه شنبه 10 آبان 1384, 11:41 صبح
روش فبلتر کردن شما اشتباه هست :


AdoTable1.Filter := 'Name='+quotedstr(Edit1.text); //For string filter

AdoTable1.Filter := 'Sen='+IntToStr(SpinEdit1.Value); //For integer filter


AdoTable1.Filter := 'Name='+quotedstr(Edit1.text)+' And '+'Sen='+IntToStr(SpinEdit1.Value); //Use with and

Touska
سه شنبه 10 آبان 1384, 11:43 صبح
یا به جای مساوی از Like استفاده کنید فقط به خاطر داشته باشید که علامت % باید در تابع quotedstr قرار بگیرید.

موفق باشید.

محسن شمس
سه شنبه 10 آبان 1384, 13:26 عصر
ممنون از شما دوست عزیز

ولی اون کدی که من نوشتم کار میکنه

اون کد جوری می باشد که اگر بزنی ح هرچی حسن حامد حمید را برات میاره

ولی کد شما جوری می باشد که اگر بزنی ح فقط اسم ح را میاره و حمید و حامد و حسن را نمی یاره

ممنون از شما

یا علی

محسن شمس
سه شنبه 10 آبان 1384, 13:28 عصر
ای کاش می گفتی این کدها را چه جوری مینویسی در سایت برنامه نویس که قشنگ در میاد یعنی از چب می نویسه

مال من خیلی بد مینویسه

میگن یه دکمه کد است ولی من هر چی می گردم پیدا نمی کنم

Touska
سه شنبه 10 آبان 1384, 14:49 عصر
گفتم که به جای مساوی like بزار :


AdoTable1.Filter := 'Name Like '+quotedstr('%'+Edit1.text+'%'); //For string filter

AdoTable1.Filter := 'Sen Like '+'%'+IntToStr(SpinEdit1.Value)+'%'; //For integer filter


AdoTable1.Filter := 'Name='+quotedstr(Edit1.text)+' And '+'Sen='+IntToStr(SpinEdit1.Value); //Use with and

و برای این جوری نوشتن کد ها به لینک زیر مراجعه کنید :

http://www.barnamenevis.org/forum/misc.php?do=bbcode#code

محسن شمس
سه شنبه 10 آبان 1384, 22:16 عصر
آقا کار نکرد

از اونا که بگذریم چرا این کد دیگه کار نمی کنه


AdoTable1.Filter := 'Sen=18' ;

محسن شمس
سه شنبه 10 آبان 1384, 22:49 عصر
آقای مصطفی والا بلا کار نمی کنه

اصلا این کد خودت یک بار دیگه نگاه کن



AdoTable1.Filter := 'Sen Like '+'%'+IntToStr(SpinEdit1.Value)+'%';


اصلا این کد صحیح نمی باشد به دلیل این متود


SpinEdit1.Value

Touska
چهارشنبه 11 آبان 1384, 07:30 صبح
IQ من که تبدیل کردمش به string پس مشگل چیه.

محسن شمس
چهارشنبه 11 آبان 1384, 12:28 عصر
دوست گرامی بهتره خودت یک بار این کد رو تو سیستمت اجرا کنی

oghab
چهارشنبه 11 آبان 1384, 16:29 عصر
سلام
نا جایی که من میدونم (البته اصلا مطمئن نیستم) عملگر like و کاراکتر % یا _ فقط برای فیلدهایی که از نوع کاراکتر است قابل استفاده است و برای فیلدهای از نوع int مثل سن قابل استفاده نیست. مسلما در اینجور موارد عددی هم نمی خواهیم با وارد شدن مثلا 11 فیلدهایی که سنشون 11 و 110 و 111و 112 و11111و 1100 و غیره را برگردونیم. شاید بخواهیم سن های بالاتر از مثلا 11 را باره و لی نه به این روش.
به نظر من اینطور بنویس. تست کردم مشکلی نداشت. فقط باید چک کنی داخل edit حتما چیزی ثبت شده باشه و امکان درج کاراکتر را در edit نگذاری


adoTable2.Filtered :=true ;
adoTable2.Filter :='sen='+edit2.Text ;


موفق باشی
-------------------------------
التماس دعا

MiRHaDi
جمعه 13 آبان 1384, 01:13 صبح
سلام
filter := sen >= 10 and sen <= 19
وقتی ادیت تغیر میکنه فیلتر هم تغیر میکنه ! متوجه شدید ؟ در مثال بالا در ادیت 1 هست و فرض شده طول متغیر شما 2 تایی است !
بای