ورود

View Full Version : سوال: مشکل در سرچ بین دو تاریخ



a-azad
دوشنبه 10 تیر 1387, 09:13 صبح
سلام من برای بدست آوردن رکوردها بین دوتاریخ از commandزیراستفاده میکنم .فیلد تاریخ ازنوع char درنظر گرفتم.ولی وقتی این دو دستور می نویسم رکوردها تاریخ ابتدا وانتها می ده ولی .بینش نمی دهد
ADO.SQL.Text := 'Select * From Tbl_Test Where TDate Between '+QuotedStr(Edit_Start.Text)+' And '+QuotedStr(Edit_End.Text);
ADO.Open;

ENG_COM1979
دوشنبه 10 تیر 1387, 10:11 صبح
دوست عزیز من از کد زیر استفاده کردم و رکورد های موجود در محدوده رو بهم داده البته تاریخم رو موقع جستجو توی maskedit نوشتم و نوع فیلدم هم nvarchar هست

adoquery1.SQL.Clear;
adoquery1.SQL.Add('select * from tbl_test where(Tdate>='''+maskedit1.Text+''') and
(Tdate<='''+maskedit2.Text+''')');
ADOQuery1.ExecSQL;
ADOQuery1.Open;

delphiprog3000
دوشنبه 10 تیر 1387, 10:22 صبح
با سلام.

دوست عزیزم شما نحوه ذخیره اطلاعاتتان به چه صورت میباشد در داخل دیتابیس ؟

و نحوه وارد کردن تاریختان در ادیتها به چه ترتیب میباشد.؟

موفق باشید............

delphiprog3000
دوشنبه 10 تیر 1387, 10:27 صبح
دوست عزیز من از کد زیر استفاده کردم و رکورد های موجود در محدوده رو بهم داده البته تاریخم رو موقع جستجو توی maskedit نوشتم و نوع فیلدم هم nvarchar هست
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select * from tbl_test where(Tdate>='''+maskedit1.Text+''') and
(Tdate<='''+maskedit2.Text+''')');
ADOQuery1.ExecSQL;
ADOQuery1.Open;

دوست عزیز دستور Execsql برای شما کاره خاصی انجام نمیدهد . همان open کافی است.

a-azad
دوشنبه 10 تیر 1387, 11:01 صبح
با سلام.

دوست عزیزم شما نحوه ذخیره اطلاعاتتان به چه صورت میباشد در داخل دیتابیس ؟

و نحوه وارد کردن تاریختان در ادیتها به چه ترتیب میباشد.؟

موفق باشید............
سلام منظورتون چیه؟نحوه ذخیره کردن ونحوه وارد کردن تاریخ؟

delphiprog3000
دوشنبه 10 تیر 1387, 11:03 صبح
منظورم در داخل دیتابیس به این صورت 12/02/1387 دخیره میشود یا بر عکس

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

اصغر (پآچ)
دوشنبه 10 تیر 1387, 11:17 صبح
سلام من برای بدست آوردن رکوردها بین دوتاریخ از commandزیراستفاده میکنم .فیلد تاریخ ازنوع char درنظر گرفتم.ولی وقتی این دو دستور می نویسم رکوردها تاریخ ابتدا وانتها می ده ولی .بینش نمی دهد
ADO.SQL.Text := 'Select * From Tbl_Test Where TDate Between '+QuotedStr(Edit_Start.Text)+' And '+QuotedStr(Edit_End.Text);
ADO.Open;


سلام دوست من

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



ADO.SQL.Clear;
ADO.SQL.Add('Select * From Tbl_Test Where TDate Between ''' + QuotedStr(Edit_Start.Text) + ''' And ''' + QuotedStr(Edit_End.Text) + '');
ADO.Open;

delphiprog3000
دوشنبه 10 تیر 1387, 11:22 صبح
در کامل کردن صحبت دوست عزیزم از این کد هم میتوانید استفاده کنید

با استفاده از Maskedit



with ADOQuery1 do
begin
close;
sql.Text:='select date1 from table1 where date1 between '+QuotedStr(MaskEdit1.Text)+ ' and '+QuotedStr(maskedit2.Text);
open;
end;


موفق باشید...............

a-azad
دوشنبه 10 تیر 1387, 11:28 صبح
منظورم در داخل دیتابیس به این صورت 12/02/1387 دخیره میشود یا بر عکس

و برای جستجو بین دو تاریخ شما تواریخ را باز به چه صورت وارد میکنید؟
سلام. اینجوری ذخیره می شه12/02/1387 .وتاریخ از نوع nvarchar گرفتم.وبرای جستجو به همین صورت قبل وارد می شه؟؟؟؟؟؟؟؟؟

delphiprog3000
دوشنبه 10 تیر 1387, 11:42 صبح
مشکلی ندارید این دو روشی که در پستهای قبل هست را تست کنید . امیدوارم مشکلتان حل شود.

موفق باشید...............

اصغر (پآچ)
دوشنبه 10 تیر 1387, 11:50 صبح
سلام دوست من
با این روشهایی که ذکر شده باید به جواب برسی بازم مشکل داری؟

می تونی همون فرم و دیتابیسی که باهاش کار می کنی رو توی سایت آپ لود کنی تا بیشتر و بهتر بررسی بشه؟

موفق و موید باشی