نمایش نتایج 1 تا 4 از 4

نام تاپیک: is not a valid date.

  1. #1

    Tick is not a valid date.

    با سلام
    دوستان من یک بانک 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

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

  3. #3
    دوست عزیز،ضمن تشکر به خاطر راهنماییتون،یه مسئله هست.خوب من اگه از نوع رشته در نظر بگیرم بعد چه جوری دو رشته رو با هم مقایسه کنم که ببینم بین این تاریخ هست یا نه؟
    چون از اکثر دوستان که می پرسم می گن باید از نوع تاریخ باشه که بتونی مقایسه انجام بدی.اگه لطف کنین بگین باید چکار کنم ممنون میشم.

  4. #4
    .خوب من اگه از نوع رشته در نظر بگیرم بعد چه جوری دو رشته رو با هم مقایسه کنم که ببینم بین این تاریخ هست یا نه؟
    به راحتی میتونید این کار رو بکنید . مثلا این کد رو ببینید این کد یه دستور 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')

    میبینید که به راحتی میشه روی فیلد تاریخ از نوع رشته هم جستجو کرد .
    چون از اکثر دوستان که می پرسم می گن باید از نوع تاریخ باشه که بتونی مقایسه انجام بدی.اگه لطف کنین بگین باید چکار کنم ممنون میشم.
    بله دوستاتون درست میگن ولی اون بیشتر مربوط به تاریخ های میلادی میشه که واقعا امکانات خیلی خوبی هم توی دیتابیس ها دارن .
    ---------------
    موفق باشید .
    آخرین ویرایش به وسیله Amir_Safideh : چهارشنبه 21 فروردین 1387 در 10:37 صبح دلیل: اشتباه تایپی

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •