# Native Code > برنامه نویسی در Delphi > بانک های اطلاعاتی در Delphi >  جستجو در بانک اطلاعاتی SQL

## GeneralLeang

سلام
چرا وقتی کد زیر می نویسم درست کار می کنه.

 کد: 


SELECT PIDParvande, PNameFamily, PFatherName
FROM  TParvande
WHERE (PNameFamily LIKE N'%عباس%ابرا%')  




بعد وقتی همین کد به صورت زیر می نویسم هیچ رکوردی نمایش نمیدهد؟؟؟؟؟؟؟؟

 کد: 


        ADOTableParvande.Filtered:=False;
         ADOTableParvande.fliter:=('PNameFamily LIKE '+QuotedStr('%عباس%ابرا%'));
         ADOTableParvande.Filtered:=True;

----------


## khoshblagh

ADOTableParvande.Filtered:=False;
 ADOTableParvande.fliter:=('PNameFamily LIKE '+QuotedStr('%'+'عباس ابرا'+'%'));

 ADOTableParvande.Filtered:=True;

----------


## GeneralLeang

> ADOTableParvande.Filtered:=False;
>  ADOTableParvande.fliter:=('PNameFamily LIKE '+QuotedStr('%'+'عباس ابرا'+'%'));
> 
>  ADOTableParvande.Filtered:=True;



ممنون از پاسخی که دادید ولی من می خواهم جستجو یا % در وسط هم انجام شود دقیقا مثل جستجوی فایل در ویندوز فقط من می خواهم این کار را با فیلتر انجام بدم همین.
شما فقط بگید من چطوری میتونم در فیلتر 3 یا بیشتر % بزارم و البته درست هم کار کند برای مثال کد بالا در کوئری بنویسم کار می کند ولی در جدول خاصیت فیلتر بنویسم کار نمی کند ؟؟؟؟؟
لطفا راهنمایی کنید با تشکر فراوان.

----------


## golbafan

سلام
وقتی از فیلتر استفاده میکنید فرمان sql به دیتابیس نمیفرستید و نمیتوانید از قابلیتهای دیتابیس استفاده کنید
کامپوننت های ado در دلفی برای فیلتر کردن از sql92 پشتیبانی میکنند که این حالت باعث میشه امکان سرچ در وسط عبارات انجام نشه!


اگر اصرار دارید از فیلتر استفاده کنید باید از رویداد onFilterRecord استفاده کنید:

procedure TForm1.button1click(Sender: TObject);
begin
ADOTableParvande.Filtered:=False;
ADOTableParvande.fliter:='';
ADOTableParvande.Filtered:=True;
end;

procedure TForm1.ADOTableParvandeFilterRecord(DataSet: TDataSet;
  var Accept: Boolean);
begin
accept := (pos('عباس',ADOTableParvande.fieldbyname('PNam  eFamily').asstring)>0)
           and
          (pos('ابرا',ADOTableParvande.fieldbyname('PNam  eFamily').asstring)>0);
end;

----------


## GeneralLeang

> سلام
> وقتی از فیلتر استفاده میکنید فرمان sql به دیتابیس نمیفرستید و نمیتوانید از قابلیتهای دیتابیس استفاده کنید
> کامپوننت های ado در دلفی برای فیلتر کردن از sql92 پشتیبانی میکنند که این حالت باعث میشه امکان سرچ در وسط عبارات انجام نشه!
> 
> 
> اگر اصرار دارید از فیلتر استفاده کنید باید از رویداد onFilterRecord استفاده کنید:
> 
> procedure TForm1.button1click(Sender: TObject);
> begin
> ...



ممنون دوست عزیز فقط اگه به مروز زمان داده ها حجمش بالا بره هنگ نمیکنه و یا سرعتش کم نمیشه؟؟؟؟؟؟؟

با تشکر فراوان از راهنمایی های شما دوست گرامی.

----------


## یوسف زالی

در این صورت باید کوئری تون رو مجدد ران کنید.

----------


## golbafan

> ممنون دوست عزیز فقط اگه به مروز زمان داده ها حجمش بالا بره هنگ نمیکنه و یا سرعتش کم نمیشه؟؟؟؟؟؟؟
> .


سرعت در روش فیلتر خیلی خیلی کمتر از کوئری هست
چون اول باید کل دیتا رو لود کنید و سپس روی تک تک رکوردها تست فیلتر انجام میشه

----------

