PDA

View Full Version : حرفه ای: جستجو در دیتا بیس



mtfa65
جمعه 20 دی 1392, 18:29 عصر
سلام
من با دلفی برنامه ای نوشتم که دیتابیس آن اکسس است. من می تونم با استفاده از دستورات sql و یا با فیلتر کردن یک ado جستجو رو انجام بدم اما خواسته من چیز دیگری است.
در جستجو به روش بالا که گفتم حتما باید حرف اول اون چیزی که ثبت شده رو بدونی تا نتایج جستجو رو برات نشون بده ولی من می خوام در یک عبارت : مثلا "کفش ملی سایز32" در این عبارت می خواهم هرکدام از حروف یا کلمه ای که در این عبارت تایپ شد نتایج جستجو رو بده. مثلا برای جستجو اگر حرف "ی" را بزنیم عبارت بالا رو نشون بده و یا هر عبارتی که داخل جمله آن حرف "ی" باشد رو نشون بده. حال فرقی نداره که اول جمله باشه یا وسط و یا آخر.
لطفا راهنمایی کنید و کدش رو بذارید.خیلی عجله ای است. بسیار ممنون

black_binary
جمعه 20 دی 1392, 18:35 عصر
از % و like استفاده کن

where myField Like N'%ی%'

mtfa65
جمعه 20 دی 1392, 18:38 عصر
سلام دوست عزیز
می شه یک نمونه کد کامل رو بذاری؟
بسیار ممنون

black_binary
جمعه 20 دی 1392, 18:41 عصر
سلام

می خوام در یک عبارت : مثلا "کفش ملی سایز32" در این عبارت می خواهم هرکدام از حروف یا کلمه ای که در این عبارت تایپ شد نتایج جستجو رو بده. مثلا برای جستجو اگر حرف "ی" را بزنیم عبارت بالا رو نشون بده و یا هر عبارتی که داخل جمله آن حرف "ی" باشد رو نشون بده. حال فرقی نداره که اول جمله باشه یا وسط و یا آخر.
% همین کاری که میخوای رو انجام میده

Select name
from my_table
where name Like N'%ی%'

mtfa65
جمعه 20 دی 1392, 18:46 عصر
سلام
من به این صورت نوشتم.
'WHERE paye Like '+QuotedStr('%'+ComboBox2.Text+'%')+'';
اما باز هم باید حرف اول نوشته رو بزنی تا موارد رو نشون بده مثلا حرف آخر رو بزنی خالی نشون میده.
مرسی

black_binary
جمعه 20 دی 1392, 18:55 عصر
به خاطره اون تک کوتیشن ت هست ---> '

"WHERE paye Like N('%" + comboBox1.Text + "%')";

mtfa65
جمعه 20 دی 1392, 19:04 عصر
سلام
شرمنده من عینا کد شما رو کپی کردم ولی کامپایل نمی شه.
کدی که نوشتم رو می ذارم لطفا شما خودتون اصلاح شدش رو برای من بذارید
یک دنیا ممنون
ADOQuery1.Close;
DataSource1.DataSet:=ADOQuery1;
ADOQuery1.SQL.Text:='SELECT dorosvapaye.paye, dorosvapaye.reshte FROM dorosvapaye '+
'WHERE paye Like '+QuotedStr('%'+ComboBox2.Text+'%')+'';
ADOQuery1.ExecSQL;
ADOQuery1.Open;

black_binary
جمعه 20 دی 1392, 19:15 عصر
والا من دلفی بلد نیستم ولی کوئری اسکیوال همینی که گفتم میشه.
و کوئری شما چون select هست نباید execute بشه و فقط open بشه
این خط رو حذف کن
ADOQuery1.ExecSQL;

mtfa65
جمعه 20 دی 1392, 19:20 عصر
خط رو هم حظف کردم اما مشکل حل نشد و فقط با حرف اول جستجو رو انجام می ده.
ممنون

firststep
جمعه 20 دی 1392, 22:42 عصر
کدتون رو نمی شه خون خکدتون رو توی تگ کد قرار بدین

mohamad a
یک شنبه 13 بهمن 1392, 09:28 صبح
با سلام
برنامه ات را درسايت بذار اگه تونستم كمكت مي كنم.

hp1361
یک شنبه 13 بهمن 1392, 12:01 عصر
سلام

یادش بخیر! قدیما چقدر با این کوتیشن موتیشن ور می رفتیم! در حالی که میشه کار رو خیلی راحت تر انجام داد

در رویداد OnChange کومبوباکست این کد رو بنویس

with ADQuery_Temp do
begin
Close;
SQL.Clear;
SQL.Add('SELECT paye,reshte FROM dorosvapaye WHERE paye LIKE :Parampaye');
ParamByName('Parampaye').Value := '%'+ComboBox.Text+'%';
Open();
end;

توی این کد ما اومدیم از پارامتر استفاده کردیم. یعنی اون مقداری که قراره دنبالش بگردیم رو بصورت پارامتر به SQL ارجاع می دیم. هم راحت تره و هم یخوده امن تره(یخوده)
حالا هرتعداد هم که دوست داشتی میتونی پارامتر بهش اضافه کنی! دستور تعریف پارامتر توی کد SQL هم : هستش. یعنی این دونقطه رو وقتی قبل از یک کلمه توی دستورات SQL قرار میدیم بعنوان پارامتر شناخته میشه.

موفق باشیم