PDA

View Full Version : تشابه نسبی بین دو کلمه



Rocker
دوشنبه 29 مرداد 1386, 16:08 عصر
سلام به دوستان.
من میخواستم بدونم چه طور میشه در دلفی رکوردهایی که مقادیر یکی از فیلد ها با یک مقدار دیگر تشابه نسبی دارد را فیلتر کرد مثلا:
ما در جدولمان یک فیلد به نام "Family" داریم و مقادیری که برای این فیلد برای رکوردهای مختلف وجورد دارد عبارتند از:صدقی,رضایی,رضای,عیزاده,... .
و هنگامی که کاربر کلمه رضایی را سرچ کرد رکوردی که محتوای فیلد Name آن رضای هست را نیز ببیند.
با تشکر فراوان.

absent
دوشنبه 29 مرداد 1386, 16:21 عصر
می تونی از Query و از دستور SELECT * FROM tablename WHERE family LIKE '%reza%' استفاده کنی

رها
دوشنبه 29 مرداد 1386, 17:19 عصر
با تشکر از absent من کد ایشون رو در تگ کد قرار می دم تا خواناتر بشه.


SELECT * FROM tablename WHERE family LIKE '%reza%'

Batman
دوشنبه 29 مرداد 1386, 17:56 عصر
در ادامه صحبتهای بزرگواران

SELECT * FROM tablename WHERE family LIKE '%reza%' and name like '%reza%'

Rocker
دوشنبه 29 مرداد 1386, 20:55 عصر
با سلام مجدد:
آقا از همتون متشکرم اصلا یاد این یکی نبودم ممنونم.
فداتون

SYNDROME
دوشنبه 29 مرداد 1386, 23:19 عصر
با سلام
می توانی از دستور زیر هم استفاده کنید.
تفاوتی که با دستورات بالا دارد فیلتر نمی کند و فقط به رکوردی کرسر انتقال پیدا می کند مقدار اول آن با مقدار Valueیکی باشد.


ADO.Locate(FieldName,FieldValue,[loPartialKey])

موفق باشید

Rocker
سه شنبه 30 مرداد 1386, 10:45 صبح
با سلام
می توانی از دستور زیر هم استفاده کنید.
تفاوتی که با دستورات بالا دارد فیلتر نمی کند و فقط به رکوردی کرسر انتقال پیدا می کند مقدار اول آن با مقدار Valueیکی باشد.


ADO.Locate(FieldName,FieldValue,[loPartialKey])

موفق باشید

بازم سلام:
خدمت آقای SYNDROM عرض کنم که بنده هم این دستور را بلدم اما این دستور یک اشکال داره و اون اینکه اگه ما چندین رکورد داشته باشیم که همگی دارای مشخصات تقریبا یکسانی هستند مثلا نام همه علی باش داین دستور فقط می تواند اولین مورد را پیدا کند و بقیه را پیدا نمیکند البته این دستور هنگامی که ما بخواهیم روی فیلدی که کلید هست و تکرار شدنی نیست مثلا شماره دانشجویی و یا شماره شناسنامه بهترین جواب را میدهد.
در هر صورت از شما دوست عزیز متشکرم.

Batman
سه شنبه 30 مرداد 1386, 11:43 صبح
جناب Rocker پست آقای syndrome رو فکر کنم خوب مطالعه نکردی
ایشون هم که همین رو قبلا گفته بودند

Rocker
سه شنبه 30 مرداد 1386, 12:31 عصر
جناب Rocker پست آقای syndrome رو فکر کنم خوب مطالعه نکردی
ایشون هم که همین رو قبلا گفته بودند

متاسفم من خبر نداشتم قصد جسارت به آقای سیندروم رو نداشتم.
راستی آقای syndrome چرا syndrome؟

Saeid59_m
سه شنبه 30 مرداد 1386, 15:16 عصر
اگه مقادیر فیلدها فارسی باشه چطور ؟ باز هم جواب می ده ؟

H_T_O_A
سه شنبه 30 مرداد 1386, 16:11 عصر
بله فرقی نداره
البته برای اطمینان بیشتر اگه با پارامتر کار بشه یا مقدار یه متغیر یا editbox.text استفاده بشه بهتره
یا علی

H_T_O_A
سه شنبه 30 مرداد 1386, 16:31 عصر
منم مثه تمام اساتید فکر می کنم تنها راهش همینه
ولی اگه بخوای فیلتر کنی دستورش فرق می کنه در ضمن دستورات بالا فقط همون یه کلمه رو سرچ می کنه
با اجازه من نکات زیر در تصدیق فرمایشات اساتید اضافه می کنم

با دستور زیر هر کلمه‌ای داخل edit قابل جستجو هستش




SELECT * FROM tablename WHERE family LIKE + QuotedStr(Edit1.Text)+ '%'




برای فیلتر کردن هم به صورت زیر عمل کنید





ado.Filtered := False;
ADO.Filter := 'Family = %' + QuotedStr(Edit1.Text)+ '%' ;
ado.Filtered := True;


یا علی

H_T_O_A
سه شنبه 30 مرداد 1386, 16:37 عصر
من نمی دونم چرا این جوری شد شاید اشتباه از منه
امیدوارم جای علامت هایی مثه % و () رو خودتون تشخیص بدید