ورود

View Full Version : سوال: ویرگول مزاحم در تاریخ



heivin
شنبه 21 شهریور 1388, 00:47 صبح
numbervar iMiladiMonth:=month(CurrentDate);
numbervar iMiladiDay:=day(CurrentDate);
numbervar iMiladiYear:=year(CurrentDate);
numbervar shamsiDay;
numbervar shamsiMonth;
numbervar shamsiYear;
numbervar dayCount;
numbervar farvardinDayDiff;
numbervar deyDayDiff;
numberVar array sumDayMiladiMonth :=[0,31,59,90,120,151,181,212,243,273,304,334];
numberVar array sumDayMiladiMonthLeap := [0,31,60,91,121,152,182,213,244,274,305,335];
numberVar farvardinDayDiff:=79;
numbervar miladiYear1:=int(imiladiYear mod 100);
numbervar miladiYear2:=int(imiladiYear mod 4);
numbervar miladiYear3:=int(imiladiYear mod 100);
numbervar miladiYear4:=int(imiladiYear mod 400);
if (((miladiYear1 <> 0 )and (miladiYear2 =0))or((miladiYear3=0)and (miladiYear4=0))) then
dayCount := sumDayMiladiMonthLeap[iMiladiMonth] + iMiladiDay
else
dayCount := sumDayMiladiMonth[iMiladiMonth] + iMiladiDay;

miladiYear1:=int((imiladiYear-1) mod 100);
miladiYear2:=int((imiladiYear-1) mod 4);
miladiYear3:=int((imiladiYear-1) mod 100);
miladiYear4:=int((imiladiYear-1) mod 400);
if (((miladiYear1 <> 0 )and (miladiYear2 =0))or((miladiYear3=0)and (miladiYear4=0))) then
deyDayDiff := 11
else
deyDayDiff := 10;
if (dayCount > farvardinDayDiff) then
(
dayCount := dayCount - farvardinDayDiff;
if (dayCount <= 186) then
(
select int(dayCount mod 31)
case 0:(
shamsiMonth :=int( dayCount / 31);
shamsiDay := 31;
)
default:(
shamsiMonth := int(dayCount / 31) + 1;
shamsiDay :=int(dayCount mod 31);
);
shamsiYear := iMiladiYear - 621;
)
else
(
dayCount := dayCount - 186;
select dayCount mod 30
case 0:(
shamsiMonth := int(dayCount / 30) + 6;
shamsiDay := 30;
)
default:(
shamsiMonth := int(dayCount / 30) + 7;
shamsiDay := int(dayCount mod 30);
);
shamsiYear := iMiladiYear - 621;
)
)
else
(
dayCount := dayCount + deyDayDiff;
select int(dayCount mod 30)
case 0 :(
shamsiMonth := int(dayCount / 30) + 9;
shamsiDay := 30;
)
default:(
shamsiMonth := int(dayCount / 30) + 10;
shamsiDay := int(dayCount mod 30);
);
shamsiYear := iMiladiYear - 622;
);
stringvar exitmy:=totext(shamsiYear,0)+' / '+totext(shamsiMonth,0)+' / '+totext(shamsiDay,0);
exitmy;
کد بالا تاریخ جاری شمسی رو برمیگردونه فقط سال رو 13،88 مینویسه. چیکار کنم که اون ویرگول نشون داده نشه؟

heivin
دوشنبه 23 شهریور 1388, 13:37 عصر
دوستان لطفا کمک کنید

viper2009
دوشنبه 23 شهریور 1388, 21:15 عصر
دوستان لطفا کمک کنید

متاسفانه من سی شارپ زیاد نمی دونم

ولی چرا از کامپوننت دیگر استفاده نمی کنی؟ کریستال ریپورت قبول می کنه.
مثله

این ضمیمه.

heivin
سه شنبه 24 شهریور 1388, 03:42 صبح
کدی که گذاشتم سی نیست ، تو کریستال رپورت اجرا میشه

viper2009
سه شنبه 24 شهریور 1388, 19:05 عصر
کدی که گذاشتم سی نیست ، تو کریستال رپورت اجرا میشه

پروژه اش هم اضافه کن.

heivin
پنج شنبه 26 شهریور 1388, 11:36 صبح
اینم نمونش

viper2009
جمعه 27 شهریور 1388, 21:56 عصر
اینم نمونش

دوست عزیز واسه من هم این جوری نشون می ده 1,388/6/27 فکر کنم مشکل از کریستال هست نه از کد چون وقتی گزینه های کریستال هم False و True می کنم اصلاً تغییری صورت نمی گیره.

hadiit
دوشنبه 06 مهر 1388, 10:07 صبح
مشكل از نوع تابع shamsiYear است كه كاراكتر ها رو سه رقم سه رقم جدا ميكنه
كه اينجوري ميشه حلش كرد
قسمت آخر كد رو تغيير بده درست ميشه.

;(stringvar exitmy:=Replace (totext(shamsiYear,0),',' ,'' )+' / '+totext(shamsiMonth,0)+' / '+totext(shamsiDay,0