ورود

View Full Version : is not a valid date.



naeemeh
سه شنبه 20 فروردین 1387, 13:29 عصر
با سلام
دوستان من یک بانک dbfدارم که میخوام ازش اطلاعات بخونم.اطلاعات رو تبدیل به اکسس می کنم و بعد تو grid نمایش میدم،هیچ مشکلی هم پیش نمیاد اما وقتی که میخوام تو بانکم بگردم و یک بازه زمانی خاص(از روز تاریخ سیستم تا 2 روز بعد) رو نمایش بدم،مشکل پیدا میکنم.
مشکل هم اینه که تمام تاریخهارو تبدیل میکنه اما به 30/2/1387 که می رسه error میده که is not a valid date.
ضمنا فیلد تاریخ در dbf از نوع رشتس که من تبدیل به تاریخ می کنمش.
ممنون میشم اگه منو راهنمایی کنید.




b:=date;
a:=b+2;
c:=b+1;
datesystem:=DateToStr(miladytoshamsi(a));
datesystem1:=DateToStr(miladytoshamsi(b));
datesystem2:=DateToStr(miladytoshamsi(c));
sys1:=StrToDate(datesystem);
sys2:=strtodate(datesystem1);
while not(datamodule5.Table1.Eof) do
begin //while
datamodule5.ADOTable2.Close;
datamodule5.ADOTable2.Open;
datamodule5.ADOTable2.Append;
if (datamodule5.table1.fieldbyname('SHOMADST').asstri ng<>'') then begin
tatah:=IranSystemToUnicode(datamodule5.Table1.fiel dbyname('tatah').AsString);
t:=strtodate(tatah);
if (t>sys2)and(t<sys1) then

Amir_Safideh
سه شنبه 20 فروردین 1387, 13:46 عصر
خوب چیزی که من میبینم اینه که شما تاریخ میلادی رو میگیری و در متغییری از نوع Date قرار میدی بعد اون تارخ ها رو به تاریخ شمسی تبدیل میکنی بعد دوباره تاریخ شمسی رو که در متغییری از نوع رشته(datesystem و datesystem1 و datesystem2) ریخته بودی حالا میخوای این متغییرها رو بریزی توی یه متغییر دیگه (sys1 و sys2) که از نوع Date هستند . خوب معلومه که شما تاریخ شمسی رو نمیتونید بریزید در متغییری از نوع Date . و باز هم معلومه که وقتی به تاریخ 30/02/1387 میرسه ارور میده چون این ماه در تاریخ میلادی 29 روز بیشتر نداره به همین علت ارور میده . بهتره که متغییر های (sys1 و sys2) رو از نوع رشته بگیری .
---------------
موفق باشید .

naeemeh
چهارشنبه 21 فروردین 1387, 08:35 صبح
دوست عزیز،ضمن تشکر به خاطر راهنماییتون،یه مسئله هست.خوب من اگه از نوع رشته در نظر بگیرم بعد چه جوری دو رشته رو با هم مقایسه کنم که ببینم بین این تاریخ هست یا نه؟
چون از اکثر دوستان که می پرسم می گن باید از نوع تاریخ باشه که بتونی مقایسه انجام بدی.اگه لطف کنین بگین باید چکار کنم ممنون میشم.

Amir_Safideh
چهارشنبه 21 فروردین 1387, 10:37 صبح
.خوب من اگه از نوع رشته در نظر بگیرم بعد چه جوری دو رشته رو با هم مقایسه کنم که ببینم بین این تاریخ هست یا نه؟

به راحتی میتونید این کار رو بکنید . مثلا این کد رو ببینید این کد یه دستور Select ساده است :

Select *
From Table1
Where (Table1.[Date] Between '1387/01/01' And '1387/08/20')Or
(Table1.[Date] >= '1387/02/02')Or
(Table1.[Date] < '1387/12/29')

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

چون از اکثر دوستان که می پرسم می گن باید از نوع تاریخ باشه که بتونی مقایسه انجام بدی.اگه لطف کنین بگین باید چکار کنم ممنون میشم. بله دوستاتون درست میگن ولی اون بیشتر مربوط به تاریخ های میلادی میشه که واقعا امکانات خیلی خوبی هم توی دیتابیس ها دارن .
---------------
موفق باشید .