جستجوي پيشرفته(بسيار فوري)
من يك فرم دارم با انواع جعبه متن ها مثل نام - نام خانوادگي - .... مي خواهم جستجو فقط روي فيلدهايي كه پر مي كنم انجام بشه و بقيه رو ناديده بگيره از Like و % استفاده كردم نشد. چگونه مي توان اين كار را انجام دهم ؟ چه كدي در Stored Procdure بنويسم كه همين كار انجام دهد؟ كدام بهتر است؟ كاملا گيجم:افسرده::عصبانی++::عصبان ++::عصبانی++::عصبانی++::عصبانی+ +::عصبانی++:
نقل قول: جستجوی پیشرفته(بسیار فوری)
Select * from Table1 where (field1 like '%'+Edit1.text+'%') and (field2 like'%'+Edit2.text+'%') and ...
نقل قول: جستجوي پيشرفته(بسيار فوري)
می تونی از 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
...
نقل قول: جستجوي پيشرفته(بسيار فوري)
سلام دوست عزیز
می تونی از کد زیر هم استفاده کنی جستجو خیلی بهتر میشه.
البته سرعتش پایین میاید ولی برای جبران کمبود سرعت می تونی کد رو در یک 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;