PDA

View Full Version : جستجوي پيشرفته(بسيار فوري)



hessam abjam
پنج شنبه 15 بهمن 1388, 09:54 صبح
من يك فرم دارم با انواع جعبه متن ها مثل نام - نام خانوادگي - .... مي خواهم جستجو فقط روي فيلدهايي كه پر مي كنم انجام بشه و بقيه رو ناديده بگيره از Like و % استفاده كردم نشد. چگونه مي توان اين كار را انجام دهم ؟ چه كدي در Stored Procdure بنويسم كه همين كار انجام دهد؟ كدام بهتر است؟ كاملا گيجم:افسرده::عصبانی++::عصبان ++::عصبانی++::عصبانی++::عصبانی+ +::عصبانی++:

hyl_piano
پنج شنبه 15 بهمن 1388, 10:07 صبح
Select * from Table1 where (field1 like '%'+Edit1.text+'%') and (field2 like'%'+Edit2.text+'%') and ...

محسن م
پنج شنبه 15 بهمن 1388, 13:15 عصر
می تونی از adoquery استفاده کنی و دستورات sql را برای قسمت where با کد وارد کنید

adoquery1.close;
adoquery1.sql.add('select * from table');
if edit1.text<>'' then
adoquery1.sql.add('where name='+edit1.text')
else if edit2.text<>'' then
...

nilidelphi
سه شنبه 20 بهمن 1388, 15:45 عصر
سلام دوست عزیز
می تونی از کد زیر هم استفاده کنی جستجو خیلی بهتر میشه.
البته سرعتش پایین میاید ولی برای جبران کمبود سرعت می تونی کد رو در یک storeproceduree بنویسی
و پارامتر هاشو بفرستی :



procedure TForm1.E1Change(Sender: TObject);
begin
if e1.Text<>'' then
begin
adq.SQL.Clear;
adq.SQL.Add('select * from dbname where name like '+#39+e1.Text+'%'+#39+';');
adq.Open;
end
else
begin
adq.SQL.Clear;
adq.SQL.Add('select * from dbname ;');
adq.Open;
end;
end;