PDA

View Full Version : فیلترکردن بر اساس سه تا فیلد



matinebi
جمعه 06 دی 1387, 13:54 عصر
در جدولم میخوام بر اساس سه تا فیلدم فیلتر بشه یعنی یه چیزی مثل or کردن که هر کدوم از محتویات فیلد موجود بود نمایش بده

DataModule5.ADOQuery3.Filtered:=false;
DataModule5.ADOQuery3.Filter:='date_b='''+main.Lab el1.Caption+'''';
DataModule5.ADOQuery3.Filter:='date_nasb='''+main. Label1.Caption+'''';
DataModule5.ADOQuery3.Filter:='date_t='''+main.Lab el1.Caption+'''';
DataModule5.ADOQuery3.Filtered:=true;

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

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

DataModule5.ADOQuery3.Filtered:=false;
DataModule5.ADOQuery3.Filter:='date_b='''+main.Lab el1.Caption+'''';
DataModule5.ADOQuery3.Filtered:=true;

اما من میخوام عمل فیلتر روی هر سه تا فیلدم به صورت or عمل کنه

mjdeveloper
جمعه 06 دی 1387, 15:40 عصر
Filter := 'Field1= Value or field2=Value or Field3 = Value'

matinebi
جمعه 06 دی 1387, 16:01 عصر
این ارور رو میده
Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.

با این کد

with DataModule5.ADOQuery3 do
begin
Filtered:=false;
Filter := 'date_b= main.Label1.Caption or date_nasb=main.Label1.Caption or date_t = main.Label1.Caption';
Filtered:=true;
end;

ghabil
جمعه 06 دی 1387, 16:58 عصر
هر Valueی رو بزار داخل کوتیشن! ضمنا من شک دارم کدی که تو پست اول نوشتی کار کنه چون تو هر خط داری مقدار فیلتر رو جایگزین میکنی بجای اینکه بهش اضافه کنی!

matinebi
جمعه 06 دی 1387, 21:10 عصر
زمانی که کتیشن میگزارم اصلا کامپایل نمیشود
در ضمن کد پست اول کار نمی کنه دوست عزیز توضیح دادم

matinebi
جمعه 06 دی 1387, 22:08 عصر
با کد زیر نیز این ارور را میدهد

Invalid column name '1387/10/06'


with DataModule5.ADOQuery3 do
begin
SQL.Clear;
SQL.Add('select * from sabt_kala where date_b='+'"'+Trim(main.Label1.Caption)+'"'+' or date_nasb='+'"'+Trim(main.Label1.Caption)+'"'+' or date_t='+'"'+Trim(main.Label1.Caption)+'"');
Open;
end;

البته main.Label1.Caption مقدار تاریخ روز را میگیرد

کد زیر رو هم چک کنین دوستان ببینین کجای کد مشکل داره

Filtered:=false;
Filter := ('date_b='+main.Label1.Caption or 'date_nasb='+main.Label1.Caption or 'date_t='+main.Label1.Caption);
Filtered:=true;

matinebi
جمعه 06 دی 1387, 22:31 عصر
با این کد مشکل حل گردید

with DataModule5.ADOQuery3 do
begin
Filtered:=false;
Filter:='date_b='+quotedstr(main.Label1.Caption)+' or date_nasb='+quotedstr(main.Label1.Caption)+'or date_t='+quotedstr(main.Label1.Caption );
Filtered:=true;
end;

ولی اگه دوستان زحمت بکشن کد where اون رو هم بنویسن ممنون میشم