PDA

View Full Version : سوال: مشکل در کد SQL



fire.angle
سه شنبه 28 تیر 1390, 11:27 صبح
سلام
یه برنامه دارم که میخوام از فلان تاریخ تا فلان تاریخ برای کاربر از داده های موجود در جدول گزارش بگیره
اما وقتی این کد رو مینویسم هیچ رکوردی رو استخراج نمیکنه . خطا هم نداره
نوع فیلد تاریخ هم از نوع Date هستش
اینم کد

with Q_printDrf do
begin
Close;
SQL.Clear;
SQL.Add('Select * From Daryafti where date>='+FromDate_Edt.Text+' And date<='+ToDate_Edt.Text);
Open;
end;
R:=Q_printDrf.RecordCount;
frxReport1.LoadFromFile('Report.fr3');
frxReport1.ShowReport(true);
کد درسته اما هیچ رکوردی رو استخراج نمیکنه
از انطباق داده های وارد شده و داده های موجود در جدول هم مطمین هستم
شکل ورودد تاریخ هم بصورت (مثلا 1390/01/10) میباشد و با همین فرمت هم در بانک ذخیره میشه اما موقعی که برای مقایسه از علامت های >= یا <= استفاده میکنم هیچ رکوردی پیدا نمیکنه
؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟؟؟؟؟؟؟؟؟؟؟

Felony
سه شنبه 28 تیر 1390, 13:33 عصر
از Between استفاده کنید :

with Q_printDrf do
begin
Close;
SQL.Clear;
SQL.Add('SELECT * FROM Daryafti WHERE Date BETWEEN ' + FromDate_Edt.Text + ' And '+ ToDate_Edt.Text);
Open;
end;
R:=Q_printDrf.RecordCount;
frxReport1.LoadFromFile('Report.fr3');
frxReport1.ShowReport(true);

fire.angle
سه شنبه 28 تیر 1390, 13:53 عصر
از Between استفاده کنید

فرقی نکرد ؟؟؟؟؟ بازم هیچ رکوردی رو واکشی نمیکنه. این نشون میده که در شرط یه مشکلی وجود داره. چون اگر شرط رو براساس چیز دیگری بزارم و یا همه رکرورد ها رو استخراج کنم کار میکنه
اما وقتی که این شرط تاریخ رو میزارم نه دیگه کار نمیکنه
به نظر شما به نوع فیلد که از نوع Date هستش مشکل نداره ؟؟ یهنی مثلا نباید از نوع رشته یا عدد باشه ؟؟؟؟ (هر چند کار صحیحی نیست)

fire.angle
سه شنبه 28 تیر 1390, 14:29 عصر
باید به این صورت اصلاح بشه

SQL.Add('Select * From Daryafti where date between #'+FromDate_Edt.Text+'# And #'+ToDate_Edt.Text+'#');
باید از علامت # قبل و بعد از تاریخ استفاده بشه

Felony
سه شنبه 28 تیر 1390, 14:40 عصر
بله ، من دقت نکردم فیلدتون از نوع Date هست ؛ فکر کردم فیلدتون رشته ای هست .