PDA

View Full Version : مبتدی: جستجوی تاریخ از طریق خصوصیت filter در adotable



sempaisaleh
چهارشنبه 30 مرداد 1392, 11:58 صبح
با سلام خدمت دوستان
من از شی adotable استفاده میکنم. یک فیلد دارم به نام tarikh از نوع datetime حالا می خوام یک جستجو بزم که تاریخ های کمتر از یک عدد یا بزرگتر از یک عدد را بدست بیارم. کد زیر رو نوشتم ولی جواب نداد.



ADOTable1.Filtered:=false;
ADOTable1.Filter:='tarikh<'+datetostr(date());
ADOTable1.Filtered:=true;


حتی کد زیرم جواب نداد



ADOTable1.Filtered:=false;
ADOTable1.Filter:='tarikh between 1000/01/01 and '+datetostr(date());
ADOTable1.Filtered:=true;

sempaisaleh
دوشنبه 04 شهریور 1392, 13:47 عصر
دوستان کسی نیست یه راهنمایی کنه. شاید منتظرین من خودم برم پیداش کنم بعد ...

hp1361
دوشنبه 04 شهریور 1392, 14:56 عصر
سلام

پیشنهاد میکنم به جای استفاده از فیلتر، از کوئری استفاده کنی و نتیجه آن رو به گرید یا هرچیز دیگه ای که مدنظر داری متصل کنی


with AdoQry_1 do//با این دستور کداعلام میکنیم کدهای زیر بر روی کوئری با نام مشخص شده اعمال گردد
begin
Close;//کوئری رو می بندیم
SQL.Clear;//دستورات اس کیو ال کوئری رو اگه از قبل چیزی باشه پاک میکنیم
SQL.Add('SELECT * FROM TableName WHERE (StartDatetimeField>=:ParamInDate) AND (EndDatetimeField<=:ParamOutDate)');//دستور جدید اس کیو ال رو اضافه می کنیم
ParamByName('ParamInDate').AsDateTime := ExShDatePicker_InDate.DateTime;//مقدار تاریخ به پارامتر ارسال میگردد
ParamByName('ParamOutDate').AsDateTime := ExShDatePicker_OutDate.DateTime;
// ExecSQL;//اگر کد اس کیو ال مقداری را برنگرداند مانند اضافه کردن رکورد، از این دستور استفاده میکنیم
Open;//اگر دستور اس کیو ال مقادیری رو برگرداند مانند کدبالا از این دستور استفاده می کنیم
end;


موفق باشی

sempaisaleh
سه شنبه 05 شهریور 1392, 11:28 صبح
سلام

پیشنهاد میکنم به جای استفاده از فیلتر، از کوئری استفاده کنی و نتیجه آن رو به گرید یا هرچیز دیگه ای که مدنظر داری متصل کنی


with AdoQry_1 do//با این دستور کداعلام میکنیم کدهای زیر بر روی کوئری با نام مشخص شده اعمال گردد
begin
Close;//کوئری رو می بندیم
SQL.Clear;//دستورات اس کیو ال کوئری رو اگه از قبل چیزی باشه پاک میکنیم
SQL.Add('SELECT * FROM TableName WHERE (StartDatetimeField>=:ParamInDate) AND (EndDatetimeField<=:ParamOutDate)');//دستور جدید اس کیو ال رو اضافه می کنیم
ParamByName('ParamInDate').AsDateTime := ExShDatePicker_InDate.DateTime;//مقدار تاریخ به پارامتر ارسال میگردد
ParamByName('ParamOutDate').AsDateTime := ExShDatePicker_OutDate.DateTime;
// ExecSQL;//اگر کد اس کیو ال مقداری را برنگرداند مانند اضافه کردن رکورد، از این دستور استفاده میکنیم
Open;//اگر دستور اس کیو ال مقادیری رو برگرداند مانند کدبالا از این دستور استفاده می کنیم
end;


موفق باشی
سلام
با تشکر از جوابتون. حالا می خوام از دستور like استفاده کنم که تو همین فروم هست ارور میده. اینم کدش



ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from darkhast_DTL where (kala LIKE '+trim(edit1.Text)+') and (mande>0) ORDER BY tari_tahvil');
ADOQuery1.ExecSQL;
ADOQuery1.Open;

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


ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from darkhast_DTL where (kala LIKE "%'+trim(edit1.Text)+'%") and (mande>0) ORDER BY tari_tahvil');
ADOQuery1.ExecSQL;
ADOQuery1.Open;

hp1361
سه شنبه 05 شهریور 1392, 23:54 عصر
سلام

مقادیر ادیت رو با پارامتر ارسال کن و در ابتدا و انتهای اون پارامتر(در زمان ارسال) علامت % رو قرار بده(یعنی در دستور اس کیو ال چیزی جز نام پارامتر قرار نده)

موفق باشیم