PDA

View Full Version : جستجو کردن مثل دیکشنری در دیتابیس؟



hex161
سه شنبه 14 شهریور 1385, 23:42 عصر
با سلام .
من یه دفتر تلفن نوشتم که تنها چیزی که کم داره قابلیت جوستجوی خوب هست.
می خواستم امکان جستجوش طوری باشه که اگه کاربر چند حرف اول اسم یا وسط اسم رو نوشت اسمهای مشابه در بالای لیست دیتا گرید نمایش داده بشن.
اگه یه قطعه کد یا یک برنامه نمونه هم معرفی کنید ممنون میشم.
با تشکر.

mandana2010
چهارشنبه 15 شهریور 1385, 08:10 صبح
از دستور زیر روی دکمه جستجو استفاده کن علامت % بجای چند حرف می باشد
;adotable1.Filtered:=false
;'''%'+ adotable1.Filter:='name like ''%'+edit1.Text
; adotable1.Filtered:=true

shima_r
یک شنبه 19 شهریور 1385, 11:57 صبح
با سلام .
من یه دفتر تلفن نوشتم که تنها چیزی که کم داره قابلیت جوستجوی خوب هست.
می خواستم امکان جستجوش طوری باشه که اگه کاربر چند حرف اول اسم یا وسط اسم رو نوشت اسمهای مشابه در بالای لیست دیتا گرید نمایش داده بشن.
اگه یه قطعه کد یا یک برنامه نمونه هم معرفی کنید ممنون میشم.
با تشکر.
اینو امتحان کن:
می تونی دستور جستجویی (با استفاده از query) که می نویسم را داخل رویداد change ادیت مورد نظر که توش کلمات رو وارد می کنی بنویسی دیتا سورس دیتاگرید مورد نظر رو هم به این query ربط بدی.

adoquery1.close
adoquery1.SQL.Clear
adoquery1.SQL.Add('select * from namejadval where namefield like'+QuotedStr('%'+Edit1.Text+'%')+'order by namefield )
adoquery1.Open

babak869
یک شنبه 19 شهریور 1385, 12:05 عصر
شما در رویداد Onchange یه EditBox این کد رو بزار :


Query1.Active:=FALSE;
Query1.SQL.Clear;
Query1.SQL.Add('SELECT * ');
Query1.SQL.Add('FROM Table1');
Query1.SQL.Add('WHERE (family LIKE ''%'+ EDIT1.TEXT+'%'') ');
Query1.ExecSQL;
Query1.Active:=TRUE;

mzjahromi
یک شنبه 19 شهریور 1385, 12:10 عصر
این کد برای حجمهای بالای اطلاعات اعصاب خورد کن میشه.(از نظر سرعت)

babak869
یک شنبه 19 شهریور 1385, 16:17 عصر
این کد برای حجمهای بالای اطلاعات اعصاب خورد کن میشه.(از نظر سرعت)
راه حل مناسب تری بهنظر شما میرسه؟ با توجه به اینکه سوال ایشون در باره نوشتن یه کوئری بصورت دیکشنری است که در هر لحظه با تغییر نوشته کاربر اطلاعات خروجی هم متناسب با اون تغییر کنه!!!!!

mzjahromi
یک شنبه 19 شهریور 1385, 17:49 عصر
تو این مورد من از فیلتر جواب مناسبتری گرفتم

Mahyaa
یک شنبه 19 شهریور 1385, 18:01 عصر
اگه یه قطعه کد یا یک برنامه نمونه هم معرفی کنید ممنون میشم.


اگه از BDE استفاده کرده اید ، این یک نمونه :

http://delphi.about.com/od/usedbvcl/l/aa050499.htm

mzjahromi
یک شنبه 19 شهریور 1385, 18:33 عصر
این فقط جستجو میکنه (محدود نمیکنه)
اگر این روش مد نظر باشه میشه از Locate استفاده کرد که کاری به BDE هم نداشته باشه

ehsanK
شنبه 14 مهر 1386, 06:05 صبح
سلام
میتونی یه editbox روی فرمت قرار بدی و بعد با استفاده از دستور Locate این کار را انجام بدی البته یادت باشه باید قبل از آن بر روی فیلد مورد نظرت sort کرده باشی تامثلا اگه "ا" را تایپ کردی اولین الف را نشان دهد و بعد بقیه را در سطرهای بعدی دیگر DBGride بیاره Sort مهمه. راهنمائی بیشتری خواستی در خدمتیم.